Отмена публикации сообщений в EasyComm

Здравствуйте, господа! Вопрос про замечательный компонент EasyComm.
Встала задача вставить в шаблон письма для администратора ссылку, которая бы отменяла публикацию последнего сообщения на сайте. То есть, сейчас везде на сайте стоит autoPublish =`All` для этого спиппета, и нужно снимать публикацию по нажатию на ссылку в письме.
Думал генерировать ссылку, где в атрибутах будет какой то код + id сообщения, запихнуть в плагин и отлавливать на странице, но меня интересует вторая часть: код, который бы снимал публикацию в easycomm. За любые идеи буду премного благодарен!
Артем
28 июля 2016, 11:22
modx.pro
1 322
0

Комментарии: 7

Наумов Алексей
28 июля 2016, 15:52
+1
Попробуй запустить процессор (см. начиная с заголовка «Собственные процессоры») mrg/message/unpublish с параметром ids=X (X — id сообщения).

    Артем
    28 июля 2016, 16:36
    0
    Спасибо, Алексей! Буду изучать
      Артем
      29 июля 2016, 05:13
      0
      Написал по примеру
      <?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 передаю?
        Наумов Алексей
        02 августа 2016, 09:06
        +1
        Ага… то ли в виде массива нужно, то ли как JSON объект… я не помню точно :)

        Попробуй для начала
        $processorProps = array(
                    'ids' => array(228, 229, 230 ... ),
                );
          Артем
          02 августа 2016, 15:17
          0
          Так, ну видимо всё таки 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.
            Наумов Алексей
            02 августа 2016, 15:49
            +1
            Забыли это, вероятно:

            $easyComm = $modx->getService('easyComm','easyComm',$modx->getOption('ec_core_path',null,$modx->getOption('core_path').'components/easycomm/').'model/easycomm/', $properties);
              Артем
              02 августа 2016, 16:04
              0
              Всё, вот так заработало
              $easyComm = $modx->getService('easyComm', 'easyComm', MODX_CORE_PATH.'components/easycomm/model/easycomm/');
              Большое спасибо за помощь!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    7