UpdateTopic срабатывает через раз
Здравствуйте вот такая незадача у меня случилась.
Пишу хук который реагирует на topic_edit_after
он должен поменять один параметр (записать данные через переопределенный Entity setExtraValue ) и вызвать UpdateTopic чтоб обновить эти данные. Так вот. Я сделал такую конструкцию:
и она срабатывает (т.е. ок появляется 1 раз из 5-ти) причем нет определенной логики.
В sql логе ничегоконкретного не вижу.
Подскажите куда копать?
Пишу хук который реагирует на topic_edit_after
он должен поменять один параметр (записать данные через переопределенный Entity setExtraValue ) и вызвать UpdateTopic чтоб обновить эти данные. Так вот. Я сделал такую конструкцию:
if( $this->Topic_UpdateTopic($oTopic) ) {
print "ok";
} else {
print "erorr";
}
и она срабатывает (т.е. ок появляется 1 раз из 5-ти) причем нет определенной логики.
В sql логе ничегоконкретного не вижу.
Подскажите куда копать?
9 комментариев
Что-то я сегодня никак с мыслями не соберусь…
т.е. принудительно устанавливается в топике дата изминения и соответственно топик ДОЛЖЕН обновится ибо обновилось как минимум одно поле.
Вызывается хук «topic_edit_after» значит на момент вызова хука oTopic уже обновился.
Теперь мы меняем его TopicContent и снова вызываем UpdateTopic первой строчкой стоит Теперь если изменение происходит в ту самую секунду то получается что таблица prefix_topic не изменилась и получается что функция маппера UpdateTopic не доходит до UpdateTopicContent потому что с её точки зрения топик не обновился.
Рекомендую в classes/modules/topic/Topic.class.php добавить метод UpdateTopicContent с приблизительно следующим содержанием:
Таким образом можно будет обновить содержимое контента без обновления содержимого таблицы prefix_topic
Вот как-то так
Настаиваю на том, что маппер при апдейте должен возвращать FALSE только в случае ошибки. Если обновления не произошло только потому, что сама сущность не изменилась — это НЕ ошибка, и маппер должен вернуть TRUE.
Причем, такое некорректное поведение движка тянется с незапамятных времен и периодически вызывает гемор разного рода при разработке плагинов