Просьба к Виталию Кирееву исправить баг с процессором

Вот уже вышел MODX Revo версии 2.4.1, а ошибку с неверно написанным процессором так и не исправили. Николай Ланец в комментариях дал совет, всем кому не безразлична судьба модэкса обратиться непосредственно к Виталию Кирееву исправить недочёт. Однако, так как у Виталия в профиле закрыта отправка ЛС пишу тут, чтобы это было более заметнее.

Предлагаю всем, кто хотел бы, чтобы в следующей версии ошибка была поправлена — отписаться в комментариях. Надеюсь на этот раз Виталий нас услышит.
Павел Гвоздь
24 сентября 2015, 11:13
modx.pro
2 702
+19
Поблагодарить автора Отправить деньги

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

Василий Наумкин
24 сентября 2015, 14:16
+6
+1, что ли.
    Виталий
    24 сентября 2015, 14:54
    0
    Виталию отписал, думаю, что скоро ответит.

    Рекомендую о всех найденных ошибках отписывать в этот тред: modx.pro/components/6324-release-minishop-2-2-pl-3-and-2-beta1/

    Виталик разбирает все ошибки оттуда и исправляет. Там же есть ссылка на багтрекер.
      Василий Наумкин
      24 сентября 2015, 14:55
      0
      Это же не в miniShop2 ошибка, а в ядре MODX.
        Виталий
        24 сентября 2015, 14:57
        0
        Оп, неправильно понял. Удали коммент, пожалуйста.
      Владимир
      24 сентября 2015, 15:42
      +5
      +1
        Виталий Киреев
        24 сентября 2015, 17:13
        +1
        Так пулл-реквест от Николая уже давно есть github.com/modxcms/revolution/pull/12614

        Хотя мне кажется, что он много лишнего понаписал, т.к. баг только в строках
        $primaryKey = $this->getProperty($this->primaryKeyField, false);
        if ($primaryKey == 'Default') {
            $primaryKey = 0;
            $this->setProperty($this->primaryKeyField, 0);
        }
        Которые следует заменить на
        $primaryKey = (int)$this->getProperty($this->primaryKeyField, 0);
        $this->setProperty($this->primaryKeyField, $primaryKey);
        В остальном все должно работать, как задумано.
          Виталий Киреев
          24 сентября 2015, 17:34
          -3
          Ну и описал проблему и варианты решения John Peca aka TheBoxer, который занимается последними версиями MODX. Так что остальное зависит от него. Если кто-то может проверить мой вариант исправления, то кину с ним PR.
            Fi1osof
            24 сентября 2015, 18:05
            +4
            Я много лишнего написал? 97 строк против 121 исходных? При том, что еще кой-что закомментировал на будущее.

            И важно на это обратить внимание, там перегружается класс объекта, так как там не только наборы свойств обновляются, но и сниппеты, чанки и т.п. (в зависимости от вызова).
              Виталий Киреев
              24 сентября 2015, 18:13
              -3
              В методе process есть
              if (!$this->object) {
                          $this->element->setProperties($this->getData());
                          $this->element->save();
                      }
                      else ...
              Где и сохраняется элемент, если не установлен id для проперти сета. Просто то же самое, но другими командами. Сюда не попадало, т.к. «По умолчанию» не приводилось к 0.
              Лишнее это про «как не надо расширять процессоры», т.к. расширение процессора update в данном баге вообще не причем.
                Fi1osof
                24 сентября 2015, 18:20
                +4
                То есть когда у нас идет обновление Сниппета, мы на самом деле получаем объект Набора параметров (а местами и не получаем), а затем еще получаем дочерним объектом Сниппет, а потом еще ему обновляем дочерние Наборы параметров (если были переданы), и это лучше чем просто обновить Набор параметров, если запрос идет на обновление параметров, или обновить Сниппет с его параметрами, если идет запрос на обновление Сниппета с Параметрами??? Серьезно?
              Fi1osof
              24 сентября 2015, 18:24
              +6
              Кстати, я не проверял сейчас, но 98% гарантию даю, что такой фокус не пройдет:
              $primaryKey = (int)$this->getProperty($this->primaryKeyField, 0);
              $this->setProperty($this->primaryKeyField, $primaryKey);
              В данном случае метод initialize() вернет ошибку получения первичного объекта (в вашем случае это Набор параметров).

              То есть у вас потому раньше и работало (хоть и не корректно) как раз за счет того, что хоть случайный, но был получен объект. Так вы фиксите получение случайного объекта, но и прервете процесс обновления.
                Fi1osof
                25 сентября 2015, 08:41
                +6
                И еще момент по вот этому:
                if ($primaryKey == 'Default') {
                Там используются лексиконы, поэтому на разных языках Default может быть совсем не Default.

                Сергей Шлоков
                24 сентября 2015, 17:58
                +3
                Вообще, странно, что не включили это исправление.
                  Sergey Leleko
                  25 сентября 2015, 07:53
                  0
                  а зачем?:) Будет повод выпустить следующее обновление :)
                  Николай
                  25 сентября 2015, 11:37
                  +2
                  +1
                    Артём Добряков
                    28 сентября 2015, 10:03
                    +1
                    +1
                      r5uY40
                      07 октября 2015, 14:54
                      0
                      Вышел 2.4.2
                      Обсуждаемый баг пофиксили? Я не понял из новости на оф. сайте.
                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                      21