/** * Returns class instance * * @return FORUM_BOL_TopicDao */ public static function getInstance() { if (self::$classInstance === null) { self::$classInstance = new self(); } return self::$classInstance; }
public function findTopicListByIds($topicIdList) { return $this->topicDao->findByIdList($topicIdList); }
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); }
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 findTemporaryTopics($limit) { return $this->topicDao->findTemporaryTopicList($limit); }