/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * * @return int */ public function VoteComment($oUser, $oComment, $iValue) { if (!C::Get('plugin.simplerating.comment.vote')) { return 0; } if (!C::Get('plugin.simplerating.comment.dislike') && $iValue < 0) { return 0; } /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Начисляем рейтинг автору комментария */ if (C::Get('plugin.simplerating.comment.user_add')) { $oUserComment = $this->User_GetUserById($oComment->getUserId()); $oUserComment->setRating((double) $oUserComment->getRating() + $iValue * (double) C::Get('plugin.simplerating.comment.user_add')); $this->User_Update($oUserComment); } /** * Убавляем рейтинг голосующего, если нужно */ if (C::Get('plugin.simplerating.comment.user_remove')) { $oUser->setRating((double) $oUser->getRating() + (double) C::Get('plugin.simplerating.comment.user_remove')); $this->User_Update($oUser); } return $iValue; }
public function AddComment(ModuleComment_EntityComment $oComment) { $sql = "INSERT INTO " . Config::Get('db.table.comment') . " \n\t\t\t(comment_pid,\n\t\t\ttarget_id,\n\t\t\ttarget_type,\n\t\t\ttarget_parent_id,\n\t\t\tuser_id,\n\t\t\tcomment_text,\n\t\t\tcomment_date,\n\t\t\tcomment_user_ip,\n\t\t\tcomment_text_hash,\n guest_name,\n guest_email\t\t\n\t\t\t)\n\t\t\tVALUES(?, ?d, ?, ?d, ?d, ?, ?, ?, ?, ?, ?)\n\t\t"; if ($iId = $this->oDb->query($sql, $oComment->getPid(), $oComment->getTargetId(), $oComment->getTargetType(), $oComment->getTargetParentId(), $oComment->getUserId(), $oComment->getText(), $oComment->getDate(), $oComment->getUserIp(), $oComment->getTextHash(), $oComment->getGuestName(), $oComment->getGuestEmail())) { return $iId; } return false; }
/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * * @return int */ public function VoteComment($oUser, $oComment, $iValue) { if (!C::Get('plugin.rating.comment.vote')) { return 0; } if (!C::Get('plugin.rating.comment.dislike') && $iValue < 0) { return 0; } /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Начисляем силу автору коммента, используя логарифмическое распределение */ $skill = $oUser->getSkill(); $iMinSize = C::Get('plugin.rating.comment.min_change'); //0.004; $iMaxSize = C::Get('plugin.rating.comment.max_change'); //0.5; $iSizeRange = $iMaxSize - $iMinSize; $iMinCount = log(0 + 1); $iMaxCount = log(C::Get('plugin.rating.comment.max_rating') + 1); //500 $iCountRange = $iMaxCount - $iMinCount; if ($iCountRange == 0) { $iCountRange = 1; } if ($skill > C::Get('plugin.rating.comment.left_border') and $skill < C::Get('plugin.rating.comment.right_border')) { //50-200 $skill_new = $skill / C::Get('plugin.rating.comment.mid_divider'); //70 } elseif ($skill >= C::Get('plugin.rating.comment.right_border')) { //200 $skill_new = $skill / C::Get('plugin.rating.comment.right_divider'); //10 } else { $skill_new = $skill / C::Get('plugin.rating.comment.left_divider'); //130 } $iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange); /** * Сохраняем силу */ $oUserComment = $this->User_GetUserById($oComment->getUserId()); $iSkillNew = $oUserComment->getSkill() + $iValue * $iDelta; $iSkillNew = $iSkillNew < 0 ? 0 : $iSkillNew; $oUserComment->setSkill($iSkillNew); $this->User_Update($oUserComment); return $iValue; }
/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * @return int */ public function VoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment, $iValue) { /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Меняем рейтинг автора коммента */ $fDeltaUser = ($iValue < 0 ? -1 : 1) * Config::Get('module.rating.comment_multiplier'); $oUserComment = $this->User_GetUserById($oComment->getUserId()); $oUserComment->setRating($oUserComment->getRating() + $fDeltaUser); $this->User_Update($oUserComment); return $iValue; }
/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * @return int */ public function VoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment, $iValue) { /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Начисляем силу автору коммента, используя логарифмическое распределение */ $skill = $oUser->getSkill(); /** * Сохраняем силу */ $oUserComment = $this->User_GetUserById($oComment->getUserId()); $iSkillNew = $oUserComment->getSkill() + $iValue / 10; $oUserComment->setSkill($iSkillNew); $this->User_Update($oUserComment); return $iValue; }
/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * @return int */ public function VoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment, $iValue) { /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Начисляем силу автору коммента, используя логарифмическое распределение */ $skill = $oUser->getSkill(); $iMinSize = 0.004; $iMaxSize = 0.5; $iSizeRange = $iMaxSize - $iMinSize; $iMinCount = log(0 + 1); $iMaxCount = log(500 + 1); $iCountRange = $iMaxCount - $iMinCount; if ($iCountRange == 0) { $iCountRange = 1; } if ($skill > 50 and $skill < 200) { $skill_new = $skill / 70; } elseif ($skill >= 200) { $skill_new = $skill / 10; } else { $skill_new = $skill / 130; } $iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange); /** * Сохраняем силу */ $oUserComment = $this->User_GetUserById($oComment->getUserId()); $iSkillNew = $oUserComment->getSkill() + $iValue * $iDelta; $iSkillNew = $iSkillNew < 0 ? 0 : $iSkillNew; $oUserComment->setSkill($iSkillNew); $this->User_Update($oUserComment); return $iValue; }
/** * Отправляет юзеру уведомление о новом комментарии в его топике * * @param ModuleUser_EntityUser $oUserTo Объект пользователя кому отправляем * @param ModuleTopic_EntityTopic $oTopic Объект топика * @param ModuleComment_EntityComment $oComment Объект комментария * @param ModuleUser_EntityUser $oUserComment Объект пользователя, написавшего комментарий * * @return bool */ public function SendCommentNewToAuthorTopic(ModuleUser_EntityUser $oUserTo, ModuleTopic_EntityTopic $oTopic, ModuleComment_EntityComment $oComment, ModuleUser_EntityUser $oUserComment) { /** * Автор топика не должен получать уведомлений о своём комментарии * к своему же топику */ if ($oUserTo->getId() == $oComment->getUserId()) { return false; } /** * Проверяем можно ли юзеру рассылать уведомление */ if (!$oUserTo->getSettingsNoticeNewComment()) { return false; } return $this->Send($oUserTo, 'comment_new.tpl', E::ModuleLang()->Get('notify_subject_comment_new'), array('oUserTo' => $oUserTo, 'oTopic' => $oTopic, 'oComment' => $oComment, 'oUserComment' => $oUserComment)); }
/** * Проверка на редактирование комментария * * @param ModuleComment_EntityComment $oComment * @param ModuleUser_EntityUser $oUser * * @return bool */ public function IsAllowEditComment($oComment, $oUser) { if (!$oUser) { return false; } if (!in_array($oComment->getTargetType(), (array) Config::Get('module.comment.edit_target_allow'))) { return false; } if ($oUser->isAdministrator()) { return true; } if ($oComment->getUserId() == $oUser->getId() and $oUser->getRating() >= Config::Get('acl.update.comment.rating')) { /** * Проверяем на лимит времени */ if (!Config::Get('acl.update.comment.limit_time') or time() - strtotime($oComment->getDate()) <= Config::Get('acl.update.comment.limit_time')) { return true; } } return false; }
/** * Добавляет коммент * * @param ModuleComment_EntityComment $oComment Объект комментария * * @return bool|int */ public function AddComment(ModuleComment_EntityComment $oComment) { $sql = "INSERT INTO ?_comment\n (\n comment_pid,\n target_id,\n target_type,\n target_parent_id,\n user_id,\n comment_text,\n comment_date,\n comment_user_ip,\n comment_publish,\n comment_text_hash\n )\n VALUES (\n ?, ?d, ?, ?d, ?d, ?, ?, ?, ?d, ?\n )\n "; $iId = $this->oDb->query($sql, $oComment->getPid(), $oComment->getTargetId(), $oComment->getTargetType(), $oComment->getTargetParentId(), $oComment->getUserId(), $oComment->getText(), $oComment->getDate(), $oComment->getUserIp(), $oComment->getPublish(), $oComment->getTextHash()); return $iId ? $iId : false; }
/** * Добавляет коммент * * @param ModuleComment_EntityComment $oComment Объект комментария * @return bool|int */ public function AddComment(ModuleComment_EntityComment $oComment) { $sql = "INSERT INTO " . Config::Get('db.table.comment') . "\n (comment_pid,\n target_id,\n target_type,\n target_parent_id,\n user_id,\n comment_text,\n comment_date,\n comment_user_ip,\n comment_publish,\n comment_text_hash\n )\n VALUES(?, ?d, ?, ?d, ?d, ?, ?, ?, ?d, ?)\n "; if ($iId = $this->oDb->query($sql, $oComment->getPid(), $oComment->getTargetId(), $oComment->getTargetType(), $oComment->getTargetParentId(), $oComment->getUserId(), $oComment->getText(), $oComment->getDate(), $oComment->getUserIp(), $oComment->getPublish(), $oComment->getTextHash())) { return $iId; } return false; }