Дополнение mixedImage из modStore ломает работу сайта — что делать?

Приветствую.

В modStore есть расширение под названием mixedImage и оно ломает нормальную работу сайта. Я долго возился с поиском этой ошибки, но нашел ее — ура, но как ее корректно исправить — я не знаю. Поэтому прошу вашей помощи.

Плагин типа этого работает нормально без установленного mixedImage:
switch ($modx->event->name) {
    case 'OnDocFormSave':       
        $modx->log(modX::LOG_LEVEL_ERROR, ':::::::::::::::: >>>  '.$tv);      
        break;
}
Если же установить, просто установить, mixedImage, то плагин такого типа работать не будет. Я в плагине одной строкой вывел вывод в лог уточнение события, вот так:
$modx->log(modX::LOG_LEVEL_ERROR, ':::::::::::::::: >>>  '.$modx->event->name);

И значением этого вывода в логе будет:
OnTVOutputRenderList

Что работает нештатно? — При активированном событии OnTVOutputRenderList в настройках mixedImage невозможно поймать любое другое состояние, к примеру, OnDocFormSave и другие, что делает невозможным изменять значения полей и пр. В настройках mixedImage отключил отслеживаемое событие OnTVOutputRenderList — все заработало штатно. Проверил работу и работу поля mixedImage — работет, вроде, нормально. Но я не знаю того, правильно ли я сделал и не повлечет ли отключение этого события в расширении mixedImage к каким-то другим ошибкам.

Проверял даже на чистой установке с одним лишь дополнением mixedImage на Modhost.

Если знаете что-то по теме вопроса, буду признателен за информацию.
weranda
04 ноября 2023, 08:09
modx.pro
836
0

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

Евгений Webinmd
05 ноября 2023, 18:03
0
НЕ могу повторить на рабочем сайте.
Какая у Вас версия MODX?
Какая версия php?
На MODX 3.0 + дополнение не тестировалось, про баги никто issue не писал.
    weranda
    06 ноября 2023, 08:54
    0
    Вот вам тестовые данные:
    Чистая установка MODX 2.8.5.
    Установка расширения mixedImage.
    Создание доп. поле: simple_tv
    Создаем плагин:
    $tv = $resource->getTVValue('simple_tv');
    
    $modx->log(modX::LOG_LEVEL_ERROR, ':::::::::::::::: >>> СНАРУЖИ.ТВ '.$tv);
    $modx->log(modX::LOG_LEVEL_ERROR, ':::::::::::::::: >>> СНАРУЖИ.ТИП '.$modx->event->name);
    
    switch ($modx->event->name) {
        case 'OnDocFormSave':       
            $modx->log(modX::LOG_LEVEL_ERROR, ':::::::::::::::: >>> ВНУТРИ.ТИП '.$tv);       
            break;
    }
    Отмечаем событие плагина: OnDocFormSave
    Идем в ресурс.
    Сохраняем ресурс.
    Открываем журнал ошибок и видим все в нем.

    Вот вам для наглядной демонстрации доступ в админку на тестовом хосте (будет работать день):
    Админка: s33359.h2.modhost.pro/manager/
    Логин: s33359
    Пароль: boF7frvOPGeB
      Евгений Webinmd
      08 ноября 2023, 11:29
      0
      Строка с получением ТВ поля снаружи события, без дополнительных проверок, ломает вам получение полей, а не mixedimage

      $tv = $resource->getTVValue('simple_tv');
        weranda
        08 ноября 2023, 12:50
        0
        1. Каким образом по вашему нужно корректно получать/устанавливать значение поля?
        2. Удаляем/Меняем/Не устанавливаем mixedimage — все работает. Вроде, логично же.
          Евгений Webinmd
          08 ноября 2023, 12:55
          0
          1) Все манипуляции внутри события

          switch ($modx->event->name) {
              case 'OnDocFormSave':       
                  $tv = $resource->getTVValue('simple_tv');
                  // ....       
                  
                  break;
          }

          2) Если удалить строчку $resource->getTVValue('simple_tv'); то тоже все работает.

          Ну и вы всегда можете отказаться от использования любого пакета и заменить его на рабочий, например FastUploadTV
            weranda
            08 ноября 2023, 13:22
            0
            1. Мне кажется это странным поведением. Я получаю поле и какая разница где я его получаю… ну, да ладно.
            Спасибо, но все равно странное поведение.
              Евгений Webinmd
              08 ноября 2023, 13:27
              +1
              $resource не всегда существует, для некоторых событий там null и в модх возникает ошибка, поэтому все остальное дальше не работает, в том числе и mixedimage.
              Возможно, если заменить mixedimage на другое дополнение с теми же событиями, то получится та же самая картина, но проверять это все нет времени
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    7