Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 /**
  * 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;
     }
 }
Exemplo n.º 3
0
 /**
  * Class constructor
  *
  */
 private function __construct()
 {
     $this->photoFeaturedDao = PHOTO_BOL_PhotoFeaturedDao::getInstance();
 }
Exemplo n.º 4
0
 /**
  * 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);
     }
 }