Решение проблемы кириллических имён загружаемых файлов для GetSimple CMS

 

 GetSimple CMSразработка

Автоматическая обработка имён загружаемых файлов в GetSimple CMS позволяет выполнить очистку имён файлов от недопустимых символов. Но вместе с этим она является значительной проблемой для части русскоязычных пользователей системы управления контентом, не желающих самостоятельно заниматься переименованием файлов перед загрузкой их на веб-сайт.

Суть проблемы заключается в следующем: при загрузке файла происходит его автоматическое переименование с целью соответствия допустимым правилам именования файлов, принятым в GetSimple CMS, направленным на обеспечение безопасности и совместимости, поэтому из имени файла удаляются все кириллические символы. В случае, если имя загружаемого файла состоит полностью из кириллических символов, например, Фотография.jpg, то после загрузки такой файл будет переименован в .jpg. Кроме неожиданного для пользователя результата автоматического переименования, такие имена файлов следует считать недопустимыми для использования на веб-сайте.

Не смотря на существующий запрос и обсуждение, в текущей версии GetSimple CMS 3.3.13, данная проблема до сих пор не устранена. Поэтому перед загрузкой файлов пользователю необходимо самостоятельно произвести их переименование, убирая из имён все недопустимые символы.

С моей точки зрения, выполнение данной операции, то есть задание файлам осознанных допустимых имён, является необходимым условием обеспечения грамотного управления содержанием веб-сайта, но вместе с этим я настаиваю на том, что одним из критериев выбора системы управления контентом должна быть её терпимость к ошибкам пользователей.

Поэтому до тех пор, пока рассмотренная проблема не устранена в официальных релизах, я предлагаю использовать свой метод для её решения – выполнять автоматическую транслитерацию имён загружаемых файлов на основе таблицы транслитерации, определённой в текущем языковом файле системы управления контентом.

Важно отметить, что предлагаемый мною способ, будет работать только в версии GetSimple CMS 3.3.11 и выше, а для получения корректного результата работы, в языковом файле должна быть определена таблица транслитерации.

Так для включения автоматической транслитерации имён загружаемых файлов необходимо внести изменения в файлы системы управления контентом: GSADMIN/upload.php и GSADMIN/upload-uploadify.php. В случае, если вы не используете загрузчик файлов Uploadify (задана опция define('GSNOUPLOADIFY', 1); в файле gsconfig.php), то достаточно внесения изменений в GSADMIN/upload.php.

В перечисленных файлах необходимо найти строки:

$name = clean_img_name(to7bit($name));

И выполнить их замену на:

$name = clean_img_name(to7bit(doTransliteration($name)));

Теперь кириллические символы в именах загружаемых файлов будут автоматически транслитерироваться в соответствии с правилами, определёнными таблицей транслитерации в языковом файле. При этом остальные правила, используемые для имён файлов в GetSimple CMS, остаются без изменений.

Минусом рассмотренного решения является необходимость внесения изменений непосредственно в файлы системы управления контентом, что в дальнейшем накладывает ограничения на её обновление. Поэтому использование данного решения может быть рекомендовано прежде всего опытным пользователям или разработчикам веб-сайтов, понимающим и контролирующим процесс выполнения обновления.