Example #1
0
 /**
  * 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);
 }
Example #3
0
 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);
 }
Example #4
0
 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);
 }
Example #5
0
 public function findTemporaryTopics($limit)
 {
     return $this->topicDao->findTemporaryTopicList($limit);
 }