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

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

Предлагаю всем, кто хотел бы, чтобы в следующей версии ошибка была поправлена — отписаться в комментариях. Надеюсь на этот раз Виталий нас услышит.
Павел Гвоздь
24 сентября 2015, 11:13
modx.pro
2 422
+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, 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