Здравствуйте, уважаемый клуб
Может быть кто то сможет подсказать.
Стоит следующая задача: если авторизованный пользователь (login) отправил сообщение при помощи обратной связи (formIt) и прикрепил к сообщению файл (это обязательное условие), то он единоразово получает на свой емайл письмо.
Как это сделать, я, честно говоря, теряюсь…
Есть ли событие в modx на отправку файла? Если да, то как заставить ее срабатывать единоразово?
Идея: либо, отправлять письмо сразу после указанного события, либо, в паре с sendex, отправлять подписанному пользователю заготовленное письмо из рассылки.
Но в любом из случаев, без этапа идентификации события, похоже, не обойтись
Почитайте внимательно про хуки. В формите они на сколько помню имеются. Один хук должен отрабатывать на валидацию формы, другой на после обработки формы.
Только там с хуками важный момент (просто перепроверьте, может память подвести): хуки для него — это сниппеты, и эти сниппеты должны возвращать строковое 'true'. Если нет, то хук будет считаться проваленным и форма не будет отрабатываться.
Спасибо, Николай, сейчас почитаю об этом, попробую. Отпишусь по факту
Хм, тогда получается, что если письмо будут отправлять без прикрепленного файла, хук будет falshe, и письмо вообще не уйдет, однако, уходить оно должно, т.к. пользователь может отправить сообщение и без вложения…
Это уже на ваше усмотрение. Возвращайте true всегда и будет вам счастье. А отправлять или не отправлять письмо — это уже вы по своей логике смотрите.
Кто нибудь может написать хук для FormIt, за деньги, который будет отправлять единожды письмо пользователю, который отправил из формы письмо и прикрепил к нему файл? Там наверняка две-три строчки, просто нет времени разбираться, срочно нужно решить вопрос.
Или задача непомерно сложная, или у всех деньги некуда уже складывать :)
Алексей, напишите на sales@modxclub.ru, завтра сделаем. Цена вопроса 1000 рублей. Там не совсем две строчки, надо же еще отслеживать была ранее отправка или нет.
Немного отвлекся от задачи, но было время подумать. Знал что задачу можно решить проще, а главное, изящнее. В паре с sendex. В хуке должно быть следующее:
— проверка, прикреплен ли файл к письму.
— если да, то отправляем подписанному пользователю письмо и уже заготовленной рассылки.
Такой хук работает, и отправляет письма из очереди в рассылке, только все. которые заготовлены для всех подписчиков
<?php $modx->addPackage('sendex', MODX_CORE_PATH . 'components/sendex/model/'); $q = $modx->newQuery('sxQueue'); $queue = $modx->getCollection('sxQueue'); /** @var sxQueue $email */ foreach ($queue as $email) { $email->send(); } return true;
но нужно отправлять именно тому пользователю, который отправил письмо. + нет проверки на вложенный файл.
может хоть кто нибудь с этим помочь?