Николай Ланец
8 апр. 2015 г., 4:39

Запрет на загрузку файлов в корневой раздел медиасурса

Продолжаю делать новостной портал и вот с какой проблемой столкнулся — загрузка файлов в корневой раздел источника файлов. На новостном портале это действительно проблема, а не мелкая неприятность. К примеру гляньте что было в корневой папке картинок в прошлой версии разрабатываемого сайта (который пытались разрабатывать до меня). Обратите внимание на скролл — там много экранов вниз. Всего в корне лежит почти 500 картинок. А ведь это пока еще просто разрабатываемый сайт, то есть он даже не начал работать нормально. Когда он заработает, с учетом того что там уже 75 000 статей и в день добавляется еще несколько десятков, вы можете представить что там будет твориться в корневом разделе. Так вот, не смотря на то, что я сделал особый менеджер картинок специально для этого проекта, чтобы легко можно было работать с многими тысячами файлов, я заметил, что некоторые люди с достаточными правами нет-нет, да загрузят картинки в корневой раздел (то есть не через этот менеджер картинок). Считаю, что это не порядок и решил запретить загрузку файлов в корневой раздел, но как оказалось, это та еще проблема :)
Во-первых, в MODX-е нет политики безопасности, решающей можно загружать в корень или нельзя. Хотя вот для документов такая политика есть — new_document_in_root. Если у пользователя нет этого права, он не сможет создать документ в корне контекста.
Во-вторых, процесс загрузки в объекте медиасурса прописан таким образом, что в нем просто нет точек прерывания процесса. Есть целых два вызова плагинов (раз и два), но для них не прописан обработчик, как это, к примеру, сделано в create-процессорах. В upload-процессоре вообще ни одно событие не вызывается.
Вот такие вот не приятные моменты с довольно тривиальной задачей. В общем, я решил не останавливаться и написал вот такой вот небольшой плагин. Он не может запретить загрузку файлов по вышеуказанным причинам, но в случае если файлы загружаются в корень папки и ошибок при этом не возникло, он просто удаляет сразу эти файлы :) При этом еще и сообщение выводит, что нельзя в корень файлы грузить. ?
На первое время этого будет достаточно. А вообще, кому не лень, допишите и отправьте пулл-реквест в MODX, чтобы была нормальная обработка событий в медиасурсе. Дело нужное.
Спасибо, Николай. Как раз то что нужно! Будем надеятся на новый компонент от тебя с особым менеджером картинок. )
Не знаю даже… Посмотрим.

Добавить комментарий