public function getLastPhotoIdList($listType, $checkPrivacy, $photoId) { $privacy = $this->getPrivacyCondition($checkPrivacy); $privaceQuery = $privacy['query']; $condition = PHOTO_BOL_PhotoService::getInstance()->getQueryCondition($listType, array('photo' => 'p', 'album' => 'a', 'featured' => 'f')); $params = array_merge($condition['params'], array('status' => 'approved', 'limit' => PHOTO_BOL_PhotoService::ID_LIST_LIMIT), $privacy['params']); switch ($listType) { case 'latest': $sql = 'SELECT `p`.`id` FROM `' . $this->getTableName() . '` AS `p` INNER JOIN `' . PHOTO_BOL_PhotoAlbumDao::getInstance()->getTableName() . '` AS `a` ON(`a`.`id` = `p`.`albumId`) ' . $condition['join'] . ' WHERE `p`.`status` = :status' . $privaceQuery . ' AND ' . $condition['where'] . ' ORDER BY `p`.`id` DESC LIMIT :limit'; break; case 'userPhotos': $ownerId = PHOTO_BOL_PhotoService::getInstance()->findPhotoOwner($photoId); $sql = 'SELECT `p`.`id` FROM `' . $this->getTableName() . '` AS `p` INNER JOIN `' . PHOTO_BOL_PhotoAlbumDao::getInstance()->getTableName() . '` AS `a` ON(`a`.`id` = `p`.`albumId`) WHERE `p`.`status` = :status AND `a`.`userId` = :userId' . $privaceQuery . ' ORDER BY `p`.`id` DESC LIMIT :limit'; $params['userId'] = $ownerId; break; case 'entityPhotos': $photo = PHOTO_BOL_PhotoService::getInstance()->findPhotoById($photoId); $album = PHOTO_BOL_PhotoAlbumService::getInstance()->findAlbumById($photo->albumId); $sql = 'SELECT `p`.`id` FROM `' . $this->getTableName() . '` AS `p` INNER JOIN `' . PHOTO_BOL_PhotoAlbumDao::getInstance()->getTableName() . '` AS `a` ON(`a`.`id` = `p`.`albumId`) WHERE `p`.`status` = :status AND `a`.`entityId` = :entityId AND `a`.`entityType` = :entityType ' . $privaceQuery . ' ORDER BY `p`.`id` DESC LIMIT :limit'; $params['id'] = $photoId; $params['entityType'] = $album->entityType; $params['entityId'] = $album->entityId; break; case 'albumPhotos': $photo = PHOTO_BOL_PhotoService::getInstance()->findPhotoById($photoId); $sql = 'SELECT `p`.`id` FROM `' . $this->getTableName() . '` AS `p` INNER JOIN `' . PHOTO_BOL_PhotoAlbumDao::getInstance()->getTableName() . '` AS `a` ON(`a`.`id` = `p`.`albumId`) WHERE `p`.`status` = :status AND `p`.`albumId` = :albumId' . $privaceQuery . ' ORDER BY `p`.`id` DESC LIMIT :limit'; $params['albumId'] = $photo->albumId; break; case 'featured': $sql = 'SELECT `p`.`id` FROM `' . $this->getTableName() . '` AS `p` INNER JOIN `' . PHOTO_BOL_PhotoAlbumDao::getInstance()->getTableName() . '` AS `a` ON(`p`.`albumId` = `a`.`id`) INNER JOIN `' . PHOTO_BOL_PhotoFeaturedDao::getInstance()->getTableName() . '` AS `f` ON(`p`.`id` = `f`.`photoId`) ' . $condition['join'] . ' WHERE `f`.`photoId` < :id AND `p`.`status` = :status' . $privaceQuery . ' AND ' . $condition['where'] . ' ORDER BY `f`.`photoId` DESC LIMIT :limit'; $params['id'] = $photoId; break; } return $this->dbo->queryForColumnList($sql, $params); }
/** * Count photos * * @param string $listtype * @param boolean $checkPrivacy * @return int */ public function countPhotosFeature($listtype, $checkPrivacy = true) { $privacyCond = $checkPrivacy ? " AND `p`.`privacy` = 'everybody' " : ""; switch ($listtype) { case 'featured': $featuredDao = PHOTO_BOL_PhotoFeaturedDao::getInstance(); $query = "\n SELECT COUNT(`p`.`id`) \n FROM `" . $this->getTableName() . "` AS `p`\n LEFT JOIN `" . $featuredDao->getTableName() . "` AS `f` ON ( `p`.`id` = `f`.`photoId` )\n WHERE `p`.`status` = 'approved' " . $privacyCond . " AND `f`.`id` IS NOT NULL\n "; return $this->dbo->queryForColumn($query); break; case 'latest': $example = new OW_Example(); $example->andFieldEqual('status', 'approved'); if ($checkPrivacy) { $example->andFieldEqual('privacy', 'everybody'); } return $this->countByExample($example); break; } }
/** * Class constructor * */ private function __construct() { $this->photoFeaturedDao = PHOTO_BOL_PhotoFeaturedDao::getInstance(); }
/** * Count photos * * @param string $listtype * @param boolean $checkPrivacy * @param null $exclude * @return int */ public function countPhotos($listtype, $checkPrivacy = true, $exclude = null) { $privacyCond = $checkPrivacy ? " AND `p`.`privacy` = 'everybody' " : ""; $excludeCond = $exclude ? ' AND `p`.`id` NOT IN (' . $this->dbo->mergeInClause($exclude) . ')' : ''; $albumDao = PHOTO_BOL_PhotoAlbumDao::getInstance(); switch ($listtype) { case 'featured': $featuredDao = PHOTO_BOL_PhotoFeaturedDao::getInstance(); $query = "\n SELECT COUNT(`p`.`id`)\n FROM `" . $this->getTableName() . "` AS `p`\n INNER JOIN `" . $albumDao->getTableName() . "` AS `a` ON ( `p`.`albumId` = `a`.`id` )\n LEFT JOIN `" . $featuredDao->getTableName() . "` AS `f` ON ( `p`.`id` = `f`.`photoId` )\n WHERE `p`.`status` = 'approved' " . $privacyCond . $excludeCond . " AND `f`.`id` IS NOT NULL\n AND `a`.`entityType` = 'user'\n "; return $this->dbo->queryForColumn($query); case 'latest': default: $query = "\n SELECT COUNT(`p`.`id`)\n FROM `" . $this->getTableName() . "` AS `p`\n INNER JOIN `" . $albumDao->getTableName() . "` AS `a` ON ( `p`.`albumId` = `a`.`id` )\n WHERE `p`.`status` = 'approved' " . $privacyCond . $excludeCond . "\n AND `a`.`entityType` = 'user'\n "; return $this->dbo->queryForColumn($query); } }