public function findUsers($kw, $userId, $limit = null) { if (!OW::getPluginManager()->isPluginActive('friends')) { return array(); } $friendsTable = FRIENDS_BOL_FriendshipDao::getInstance()->getTableName(); $questionName = OW::getConfig()->getValue('base', 'display_name_question'); $questionDataTable = BOL_QuestionDataDao::getInstance()->getTableName(); $limitStr = $limit === null ? '' : 'LIMIT 0, ' . intval($limit); $query = "SELECT `fr`.`userId` FROM `" . $friendsTable . "` AS `fr`\n INNER JOIN " . $questionDataTable . " qd ON fr.userId = qd.userId\n LEFT JOIN `" . BOL_UserSuspendDao::getInstance()->getTableName() . "` AS `us` ON ( `fr`.`friendId` = `us`.`userId` )\n WHERE `fr`.`status` = :status AND `us`.`userId` IS NULL AND `fr`.`friendId` = :userId\n AND qd.questionName=:name AND qd.textValue LIKE :kw\n UNION\n SELECT `fr`.`friendId` AS `userId` FROM `" . $friendsTable . "` AS `fr`\n INNER JOIN " . $questionDataTable . " qd ON fr.friendId = qd.userId\n LEFT JOIN `" . BOL_UserSuspendDao::getInstance()->getTableName() . "` AS `us` ON ( `fr`.`friendId` = `us`.`userId` )\n WHERE `fr`.`status` = :status AND `us`.`userId` IS NULL AND `fr`.`userId` = :userId\n AND qd.questionName=:name AND qd.textValue LIKE :kw\n {$limitStr}\n "; return OW::getDbo()->queryForColumnList($query, array('userId' => $userId, 'status' => FRIENDS_BOL_FriendshipDao::VAL_STATUS_ACTIVE, 'kw' => '%' . $kw . '%', 'name' => $questionName)); }
public function findFriendsActivity($startStamp, $questionIds, $userId) { if (empty($questionIds)) { return array(); } $friendsDao = FRIENDS_BOL_FriendshipDao::getInstance(); $questionsIN = implode(',', $questionIds); $query = "SELECT a.* FROM " . $this->getTableName() . " a\n INNER JOIN " . $friendsDao->getTableName() . " f ON ( a.userId=f.userId OR a.userId=f.friendId ) AND f.status=:fs\n WHERE a.privacy!=:pn AND a.timeStamp <= :ss AND a.questionId IN ({$questionsIN}) AND ( f.userId =:u OR f.friendId=:u )\n ORDER BY a.timeStamp DESC"; return $this->dbo->queryForObjectList($query, $this->getDtoClassName(), array('ss' => $startStamp, 'fs' => FRIENDS_BOL_FriendshipDao::VAL_STATUS_ACTIVE, 'u' => $userId, 'pn' => EQUESTIONS_BOL_FeedService::PRIVACY_NOBODY)); }
public function findFriendsFeedCount($startStamp, $userId) { $activityDao = EQUESTIONS_BOL_ActivityDao::getInstance(); $friendsDao = FRIENDS_BOL_FriendshipDao::getInstance(); $query = "SELECT COUNT(DISTINCT q.id)\n FROM " . $this->getTableName() . " q\n INNER JOIN " . $activityDao->getTableName() . " a ON q.id=a.questionId\n INNER JOIN " . $friendsDao->getTableName() . " f ON ( a.userId=f.userId OR a.userId=f.friendId ) AND f.status=:fs\n WHERE a.timeStamp <= :ss\n AND ( f.userId =:u OR f.friendId=:u )\n AND a.userId!=:u\n AND a.userId!=:pn"; return $this->dbo->queryForColumn($query, array('fs' => FRIENDS_BOL_FriendshipDao::VAL_STATUS_ACTIVE, 'ss' => $startStamp, 'u' => $userId, 'pn' => EQUESTIONS_BOL_FeedService::PRIVACY_NOBODY)); }
/** * Class constructor * */ protected function __construct() { $this->friendshipDao = FRIENDS_BOL_FriendshipDao::getInstance(); }