Отмена публикации сообщений в EasyComm
Здравствуйте, господа! Вопрос про замечательный компонент EasyComm.
Встала задача вставить в шаблон письма для администратора ссылку, которая бы отменяла публикацию последнего сообщения на сайте. То есть, сейчас везде на сайте стоит autoPublish =`All` для этого спиппета, и нужно снимать публикацию по нажатию на ссылку в письме.
Думал генерировать ссылку, где в атрибутах будет какой то код + id сообщения, запихнуть в плагин и отлавливать на странице, но меня интересует вторая часть: код, который бы снимал публикацию в easycomm. За любые идеи буду премного благодарен!
Встала задача вставить в шаблон письма для администратора ссылку, которая бы отменяла публикацию последнего сообщения на сайте. То есть, сейчас везде на сайте стоит autoPublish =`All` для этого спиппета, и нужно снимать публикацию по нажатию на ссылку в письме.
Думал генерировать ссылку, где в атрибутах будет какой то код + id сообщения, запихнуть в плагин и отлавливать на странице, но меня интересует вторая часть: код, который бы снимал публикацию в easycomm. За любые идеи буду премного благодарен!
Комментарии: 7
Попробуй запустить процессор (см. начиная с заголовка «Собственные процессоры») mrg/message/unpublish с параметром ids=X (X — id сообщения).
Спасибо, Алексей! Буду изучать
Написал по примеру
<?php
if($modx->event->name === 'OnWebPageInit'){
if($link = intval($_GET['unpublic'])){
$processorProps = array(
'ids' => 228,
);
$otherProps = array(
'processors_path' => $modx->getOption('core_path') . 'components/easycomm/processors/'
);
$response = $modx->runProcessor('mgr/message/unpublish', $processorProps, $otherProps);
return $response->response;
}
}
Получил в итоге такие ошибки[2016-07-29 05:11:01] (ERROR @ /home/s5441/www/core/components/easycomm/processors/mgr/message/unpublish.class.php : 29) PHP warning: Invalid argument supplied for foreach()
[2016-07-29 05:11:01] (ERROR @ /home/s5441/www/core/xpdo/xpdo.class.php : 643) Could not load class: ecThread from mysql.ecthread.
[2016-07-29 05:11:01] (ERROR @ /home/s5441/www/core/xpdo/xpdo.class.php : 761) ecThread::loadCollection() is not a valid static method.
[2016-07-29 05:11:01] (ERROR @ /home/s5441/www/core/components/easycomm/processors/mgr/message/unpublish.class.php : 48) PHP warning: Invalid argument supplied for foreach()
Я как то неверно ID передаю?
Ага… то ли в виде массива нужно, то ли как JSON объект… я не помню точно :)
Попробуй для начала
Попробуй для начала
$processorProps = array(
'ids' => array(228, 229, 230 ... ),
);
Так, ну видимо всё таки json, тк в процессоре unpublish такая строчка
$ids = $this->modx->fromJSON($this->getProperty('ids'));
Сделал так$processorProps = array(
'ids' => '{"ids":"256"}'
);
В итоге получил вот такой лог [2016-08-02 15:15:29] (ERROR @ /home/s5441/www/core/xpdo/xpdo.class.php : 643) Could not load class: ecMessage from mysql.ecmessage.
[2016-08-02 15:15:29] (ERROR @ /home/s5441/www/core/xpdo/xpdo.class.php : 761) ecMessage::load() is not a valid static method.
Забыли это, вероятно:
$easyComm = $modx->getService('easyComm','easyComm',$modx->getOption('ec_core_path',null,$modx->getOption('core_path').'components/easycomm/').'model/easycomm/', $properties);
Всё, вот так заработало
$easyComm = $modx->getService('easyComm', 'easyComm', MODX_CORE_PATH.'components/easycomm/model/easycomm/');
Большое спасибо за помощь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.