X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fphotos.php;h=2beb23ffaf52001396db1ca34d48979bc9c09bdb;hb=b4bc07fdcce4e326d5ade05aab0f7305e874398e;hp=93a565b5116ecd2b8c0a55060e675858843548b4;hpb=c00772204100a44267c38f7a2533268b5dff1248;p=friendica.git diff --git a/include/photos.php b/include/photos.php index 93a565b511..2beb23ffaf 100644 --- a/include/photos.php +++ b/include/photos.php @@ -25,3 +25,34 @@ function gps2Num($coordPart) { return floatval($parts[0]) / floatval($parts[1]); } + +/** + * @brief Fetch the photo albums that are available for a viewer + * + * The query in this function is cost intensive, so it is cached. + * + * @param int $uid User id of the photos + * @param bool $update Update the cache + * + * @return array Returns array of the photo albums + */ +function photo_albums($uid, $update = false) { + $sql_extra = permissions_sql($uid); + + $key = "photo_albums:".$uid.":".local_user().":".remote_user(); + $albums = Cache::get($key); + if (is_null($albums) OR $update) { + /// @todo This query needs to be renewed. It is really slow + // At this time we just store the data in the cache + $albums = qu("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album` + FROM `photo` USE INDEX (`uid_album_created`) + WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra + GROUP BY `album` ORDER BY `created` DESC", + intval($uid), + dbesc('Contact Photos'), + dbesc(t('Contact Photos')) + ); + Cache::set($key, $albums, CACHE_DAY); + } + return $albums; +}