Можно ли в момент приема файла, выполнить дополнительно какие-то действия над ним?

Допустим у нас есть в топике поле типа файл, мы выбираем файл, и жмем кнопку опубликовать топик, и мы хотим что-то сделать в этот момент, например дернуть restful кудато, передав путь к файлу.
Как это сделать?

4 комментария

0
Правильно ли будет дописать необходимый код в функцию AddTopicValue в файле common/classes/modules/topic/mapper/Topic.mapper.class.php?
+1
Дописывать что-либо в существующий код движка — это однозначно неправильно. Плагины — наше все. Для расширения функциональности нужно писать свой плагин, который будет либо наследовать и расширять существующие классы и методы (чистый ООП), либо перехватывать хуки.

Я обычно делаю так: если расширения/дополнения для конкретного сайта делаются, то я создаю плагин для этого сайта и все, что нужно для данного сайта, пишу в этот плагин.
0
Да, это понятно.
Возник несколько другой вопрос:
когда создается топик с дополнительным полем типа файл, в базу делается insert, содержащий target_id этого поля(?) и сразу после него — update этой строки.
Если мы удаляем файл — то в базу делается delete для строки содержащей этот target_id.

Но вот если мы после создания топика хотим отредактировать топик, то происходит нечто странное:
строка содержащая этот target_id сперва удаляется, а потом создается с новым id…
То есть есть некоторый момент времени (а при нагруженной базе этот момент может стать заметным) когда файл есть, топик есть, а вот ссылка на этот файл в базе отсутствует.
Мне не удалось установить (я не нашел этого в коде) делается ли это удаление и последующая вставка в виде транзакции.

Что произойдет если база в этот момент упадет?
Что произойдет если к файлу в этот момент придет запрос?
Почему делается удаление и вставка вместо update?
0
Транзакции в движке, к сожалению, не используются. Печально, но факт. Со всеми вытекающими. Да и вообще работа с доп.полями спроектирована неудачно и совершенно однозначно требует переделки.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.