Просьба к Виталию Кирееву исправить баг с процессором
Вот уже вышел MODX Revo версии 2.4.1, а ошибку с неверно написанным процессором так и не исправили. Николай Ланец в комментариях дал совет, всем кому не безразлична судьба модэкса обратиться непосредственно к Виталию Кирееву исправить недочёт. Однако, так как у Виталия в профиле закрыта отправка ЛС пишу тут, чтобы это было более заметнее.
Предлагаю всем, кто хотел бы, чтобы в следующей версии ошибка была поправлена — отписаться в комментариях. Надеюсь на этот раз Виталий нас услышит.
Предлагаю всем, кто хотел бы, чтобы в следующей версии ошибка была поправлена — отписаться в комментариях. Надеюсь на этот раз Виталий нас услышит.
Поблагодарить автора
Отправить деньги
Комментарии: 18
+1, что ли.
Виталию отписал, думаю, что скоро ответит.
Рекомендую о всех найденных ошибках отписывать в этот тред: modx.pro/components/6324-release-minishop-2-2-pl-3-and-2-beta1/
Виталик разбирает все ошибки оттуда и исправляет. Там же есть ссылка на багтрекер.
Рекомендую о всех найденных ошибках отписывать в этот тред: modx.pro/components/6324-release-minishop-2-2-pl-3-and-2-beta1/
Виталик разбирает все ошибки оттуда и исправляет. Там же есть ссылка на багтрекер.
Это же не в miniShop2 ошибка, а в ядре MODX.
Оп, неправильно понял. Удали коммент, пожалуйста.
+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);
В остальном все должно работать, как задумано.
Ну и описал проблему и варианты решения John Peca aka TheBoxer, который занимается последними версиями MODX. Так что остальное зависит от него. Если кто-то может проверить мой вариант исправления, то кину с ним PR.
Я много лишнего написал? 97 строк против 121 исходных? При том, что еще кой-что закомментировал на будущее.
И важно на это обратить внимание, там перегружается класс объекта, так как там не только наборы свойств обновляются, но и сниппеты, чанки и т.п. (в зависимости от вызова).
И важно на это обратить внимание, там перегружается класс объекта, так как там не только наборы свойств обновляются, но и сниппеты, чанки и т.п. (в зависимости от вызова).
В методе process есть
Лишнее это про «как не надо расширять процессоры», т.к. расширение процессора update в данном баге вообще не причем.
if (!$this->object) {
$this->element->setProperties($this->getData());
$this->element->save();
}
else ...
Где и сохраняется элемент, если не установлен id для проперти сета. Просто то же самое, но другими командами. Сюда не попадало, т.к. «По умолчанию» не приводилось к 0.Лишнее это про «как не надо расширять процессоры», т.к. расширение процессора update в данном баге вообще не причем.
То есть когда у нас идет обновление Сниппета, мы на самом деле получаем объект Набора параметров (а местами и не получаем), а затем еще получаем дочерним объектом Сниппет, а потом еще ему обновляем дочерние Наборы параметров (если были переданы), и это лучше чем просто обновить Набор параметров, если запрос идет на обновление параметров, или обновить Сниппет с его параметрами, если идет запрос на обновление Сниппета с Параметрами??? Серьезно?
Кстати, я не проверял сейчас, но 98% гарантию даю, что такой фокус не пройдет:
То есть у вас потому раньше и работало (хоть и не корректно) как раз за счет того, что хоть случайный, но был получен объект. Так вы фиксите получение случайного объекта, но и прервете процесс обновления.
$primaryKey = (int)$this->getProperty($this->primaryKeyField, 0);
$this->setProperty($this->primaryKeyField, $primaryKey);
В данном случае метод initialize() вернет ошибку получения первичного объекта (в вашем случае это Набор параметров).То есть у вас потому раньше и работало (хоть и не корректно) как раз за счет того, что хоть случайный, но был получен объект. Так вы фиксите получение случайного объекта, но и прервете процесс обновления.
И еще момент по вот этому:
if ($primaryKey == 'Default') {
Там используются лексиконы, поэтому на разных языках Default может быть совсем не Default.
Вообще, странно, что не включили это исправление.
а зачем?:) Будет повод выпустить следующее обновление :)
+1
+1
Вышел 2.4.2
Обсуждаемый баг пофиксили? Я не понял из новости на оф. сайте.
Обсуждаемый баг пофиксили? Я не понял из новости на оф. сайте.
raw.githubusercontent.com/modxcms/revolution/v2.4.2-pl/core/docs/changelog.txt
— Fix emptying property sets on element save [#12580]
Судя по всему да.
Это хорошо. Спасибо
Не за что
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.