Хочу реализовать прибавление рейтинга за публикацию топика:
В Action.Topic.class.php добавляю 3 строчки:
if ($this->Topic_AddTopic($oTopic)) {
$this->Hook_Run('topic_add_after', array('oTopic'=>$oTopic,'oBlog'=>$oBlog));
/**
* Получаем топик, чтоб подцепить связанные данные
*/
$oTopic=$this->Topic_GetTopicById($oTopic->getId());
/**
* Прибавляем 0.4 рейтинга за публикацию топика
*/
$oUserTopic = $this->oUserCurrent;
$oUserTopic->setRating($oUserTopic->getRating()+0.4); // можно в конфиге val вместо 0.4
$this->User_Update($oUserTopic);
Всё ок, работает на ура!
В этом же файле, только ниже, в функции удаления (вконце) добавляю 3 строчки отнимания рейтинга при удалении топика:
protected function EventDelete() {
$this->Security_ValidateSendForm();
/**
* Получаем номер топика из УРЛ и проверяем существует ли он
*/
$sTopicId=$this->GetParam(0);
if (!($oTopic=$this->Topic_GetTopicById($sTopicId))) {
return parent::EventNotFound();
}
/**
* проверяем есть ли право на удаление топика
*/
if (!$this->ACL_IsAllowDeleteTopic($oTopic,$this->oUserCurrent)) {
return parent::EventNotFound();
}
/**
* Удаляем топик
*/
$this->Hook_Run('topic_delete_before', array('oTopic'=>$oTopic));
$this->Topic_DeleteTopic($oTopic);
$this->Hook_Run('topic_delete_after', array('oTopic'=>$oTopic));
/**
* Отнимаем 0.4 рейтинга
*/
$oUserTopic = $this->oUserCurrent;
$oUserTopic->setRating($oUserTopic->getRating()-0.4);
$this->User_Update($oUserTopic);
Теже 3 строчки, но только знак минус. НЕ РАБОТАЕТ. РЕЙТИНГ НЕ ОТНИМАЕТСЯ!
Понял, потом, что функция отнимания неверна, т.к. если удалит админ или редактор, то у него отнимется рейтинг.
Пределал:
$oUserTopic=$this->User_GetUserById($oTopic->getUserId());
$oUserTopic->setRating($oUserTopic->getRating()-0.4);
$this->User_Update($oUserTopic);
Заменил, и всё равно рейтинг не отнимается. Что не так?