/** * Class constructor */ private function __construct() { $this->sectionDao = FORUM_BOL_SectionDao::getInstance(); $this->groupDao = FORUM_BOL_GroupDao::getInstance(); $this->topicDao = FORUM_BOL_TopicDao::getInstance(); $this->postDao = FORUM_BOL_PostDao::getInstance(); $this->userDao = BOL_UserDao::getInstance(); }
public function searchInTopic($token, $userToken, $topicId, $sortBy = null) { $sortCond = $sortBy == 'date' ? ' `createStamp` DESC, ' : ''; if (!mb_strlen($token)) { $query = "SELECT `p`.*\n FROM `" . $this->getTableName() . "` AS `p`\n INNER JOIN `" . FORUM_BOL_TopicDao::getInstance()->getTableName() . "` AS `t` ON(`p`.`topicId` = `t`.`id)\n " . $this->getUserTokenJoinString($userToken) . "\n WHERE `p`.`topicId` = :topicId AND `t`.`status` = :status\n ORDER BY `createStamp` DESC"; $params = array('topicId' => $topicId, 'status' => FORUM_BOL_ForumService::STATUS_APPROVED); } else { $multiple = $this->countTokenWords($token) > 1; $booleanMode = $multiple ? ' IN BOOLEAN MODE' : ''; $token = $booleanMode ? '"' . $token . '"' : $token; $query = "SELECT `p`.*, MATCH (`p`.`text`) AGAINST(:token" . $booleanMode . ")\n FROM `" . $this->getTableName() . "` AS `p`\n INNER JOIN `" . FORUM_BOL_TopicDao::getInstance()->getTableName() . "` AS `t` ON(`p`.`topicId` = `t`.`id`)\n " . $this->getUserTokenJoinString($userToken) . "\n WHERE MATCH (`p`.`text`) AGAINST(:token" . $booleanMode . ") AND `p`.`topicId` = :topicId AND `t`.`status` = :status\n ORDER BY " . $sortCond . " MATCH (`p`.`text`) AGAINST(:token" . $booleanMode . ") DESC"; $params = array('token' => $token, 'topicId' => $topicId, 'status' => FORUM_BOL_ForumService::STATUS_APPROVED); } return $this->dbo->queryForObjectList($query, 'FORUM_BOL_Post', $params); }
public function countFoundTopicsInGroup($token, $userToken, $groupId, $isHidden = 0) { $hiddenCond = $isHidden ? ' AND `s`.`isHidden` = 1' : ' AND `s`.`isHidden` = 0'; if (!mb_strlen($token)) { $query = "SELECT count(DISTINCT(`t`.`id`)) \n FROM `" . $this->getTableName() . "` AS `p`\n INNER JOIN `" . FORUM_BOL_TopicDao::getInstance()->getTableName() . "` AS `t` ON (`t`.`id`=`p`.`topicId`)\n INNER JOIN `" . FORUM_BOL_GroupDao::getInstance()->getTableName() . "` AS `g` ON (`g`.`id`=`t`.`groupId`)\n INNER JOIN `" . FORUM_BOL_SectionDao::getInstance()->getTableName() . "` AS `s` ON (`s`.`id`=`g`.`sectionId`)\n " . $this->getUserTokenJoinString($userToken) . "\n WHERE `g`.`id` = :groupId " . $hiddenCond; $params = array('groupId' => $groupId); } else { $multiple = $this->countTokenWords($token) > 1; $booleanMode = $multiple ? ' IN BOOLEAN MODE' : ''; $token = $booleanMode ? '"' . $token . '"' : $token; $query = "SELECT count(DISTINCT(`t`.`id`))\n FROM `" . $this->getTableName() . "` AS `p`\n INNER JOIN `" . FORUM_BOL_TopicDao::getInstance()->getTableName() . "` AS `t` ON (`t`.`id`=`p`.`topicId`)\n INNER JOIN `" . FORUM_BOL_GroupDao::getInstance()->getTableName() . "` AS `g` ON (`g`.`id`=`t`.`groupId`)\n INNER JOIN `" . FORUM_BOL_SectionDao::getInstance()->getTableName() . "` AS `s` ON (`s`.`id`=`g`.`sectionId`)\n " . $this->getUserTokenJoinString($userToken) . "\n WHERE (MATCH (`t`.`title`) AGAINST(:token" . $booleanMode . ") OR MATCH (`p`.`text`) AGAINST(:token" . $booleanMode . "))\n AND `g`.`id` = :groupId " . $hiddenCond; $params = array('token' => $token, 'groupId' => $groupId); } return (int) $this->dbo->queryForColumn($query, $params); }