Водяные знаки.
Метод предложенный
http://joomlaforum.ru/index.php?topic=35335.0 имеет свои минусы и плюсы:
"-"
- увеличивается нагрузка на сервер, так как идет дополнительный редирект;
- если nginx используется в качестве фронтэнда, то его нужно дополнительно конфигурить;
- дополнительная конфигурация apache путем создания .htaccess.
"+"
- универсальность для разных CMS;
- исходная картинка не изменяется.
Написал код, который является компиляцией некоторых примеров и
http://joomlaforum.ru/index.php?topic=35335.0.
Тестирую на jea 2.3
Вставил его в /components/com_jea/models/property.php
- так как обращение идет к картинке с уже наложенным знаком, дополнительной нагрузки не будет;
- не нужно шаманить с конфигурацией nginx и .htaccess.
Не великий спец. по php. Будет интересно ознакомится с мнением по поводу совершенствования данного кода и вставки для интеграции c jea.
Кроме того, в libraries/joomla/filesystem/file.php (файл пересохранить в UTF8) имеется функция public static function makeSafe($file). На форуме есть рекомендация как добавить поддержку кириллицы:
public static function makeSafe($file)
{
$regex = array('#(\.){2,}#', '#[^A-Za-z0-9а-яА-ЯёЁ\.\_\- ]#u', '#^\.#');
return preg_replace($regex, '', $file);
}
Меня замена, которую делает preg_replace не совсем устраивает. Переделал: $regex = array('#(\.){2,}#', '#[^A-Za-z0-9а-яА-ЯёЁ.]#u', '#^\.#');
В \administrator\components\com_jea\helpers\upload.php (check())добавил:
//Valid file name check
$regexp = '/^([a-zA-Zа-яА-ЯёЁ0-9]+)(\.)([a-zA-Z]{3,4})$/u';
if(!preg_match($regex, $this->name)) {
$this->_errors[]='COM_JEA_UPLOAD_FILE_NAME_NOT_PERMITTED'; // прописать в /components/com_jea/language/ru-RU/ru-RU.com_jea.ini
}
Пользователь может загрузить фото, в имени которого могут повторяться и чередоваться спецсимволы, пробелы и т.д.
Все эту хозяйство preg_replace благополучно затрет, оставив только буквы, цифры и точки, которые не повторяются друг за другом. Если таковые имеются, то в таком случае имя файла просто не пройдет жесткую проверку '/^([a-zA-Zа-яА-ЯёЁ0-9]+)(\.)([a-zA-Z]{3,4})$/u.