]> git.mxchange.org Git - friendica.git/blobdiff - include/photos.php
Continued with coding convention:
[friendica.git] / include / photos.php
index 93a565b5116ecd2b8c0a55060e675858843548b4..2beb23ffaf52001396db1ca34d48979bc9c09bdb 100644 (file)
@@ -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;
+}