Установка статуса "прочтен" для топика
В общем-то это не совсем баг, скорее нечто ускользнувшее от разработчиков.
Если топик маленький или у него нет ката, то человек читает его целиком в ленте. Соответсвенно, по-хорошему, надо бы отмечать в базе, что топик прочитан. Но это, конечно, ведет к увеличению базы, т.к. вообще не факт, что человек его реально прочитал и он его заинтересовал. Единственный случай, когда статус такого топика надо менять на «прочитанный» возникает тогда, когда пользователь добавляет его в избранное прямо из ленты. Это нужно для того, чтобы установить статус прочтения (точнее НЕ прочтения) для комментариев внутри топика. Для этого нужно сделать вот такой хак:
В файле /classes/modules/topic/Topic.class.php найти функцию
И заменить ее на
Если топик маленький или у него нет ката, то человек читает его целиком в ленте. Соответсвенно, по-хорошему, надо бы отмечать в базе, что топик прочитан. Но это, конечно, ведет к увеличению базы, т.к. вообще не факт, что человек его реально прочитал и он его заинтересовал. Единственный случай, когда статус такого топика надо менять на «прочитанный» возникает тогда, когда пользователь добавляет его в избранное прямо из ленты. Это нужно для того, чтобы установить статус прочтения (точнее НЕ прочтения) для комментариев внутри топика. Для этого нужно сделать вот такой хак:
В файле /classes/modules/topic/Topic.class.php найти функцию
public function AddFavouriteTopic(ModuleFavourite_EntityFavourite $oFavouriteTopic) {
return $this->Favourite_AddFavourite($oFavouriteTopic);
}
И заменить ее на
public function AddFavouriteTopic(ModuleFavourite_EntityFavourite $oFavouriteTopic) {
$res=$this->Favourite_AddFavourite($oFavouriteTopic);
if ($res)
{
$oTopicRead=$this->Topic_GetTopicRead($oFavouriteTopic->getTargetId(),$oFavouriteTopic->getUserId());
if (!$oTopicRead)
{
$oTopicRead=Engine::GetEntity('Topic_TopicRead');
$oTopicRead->setTopicId($oFavouriteTopic->getTargetId());
$oTopicRead->setUserId($oFavouriteTopic->getUserId());
$oTopicRead->setCommentCountLast(0);
$oTopicRead->setCommentIdLast(0);
}
$oTopicRead->setDateRead(date("Y-m-d H:i:s"));
$this->Topic_SetTopicRead($oTopicRead);
}
return $res;
}
1 комментарий