]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #4162 from MrPetovan/develop
authorMichael Vogel <icarus@dabo.de>
Thu, 4 Jan 2018 08:53:09 +0000 (09:53 +0100)
committerGitHub <noreply@github.com>
Thu, 4 Jan 2018 08:53:09 +0000 (09:53 +0100)
Update Composer

include/photos.php [deleted file]
mod/photos.php
src/Model/Photo.php
src/Object/Image.php
src/Worker/CronJobs.php

diff --git a/include/photos.php b/include/photos.php
deleted file mode 100644 (file)
index 592a138..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * @file include/photos.php
- * @brief Functions related to photo handling.
- */
-use Friendica\Core\Cache;
-use Friendica\Core\Config;
-use Friendica\Core\PConfig;
-
-function getGps($exifCoord, $hemi) {
-       $degrees = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;
-       $minutes = count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0;
-       $seconds = count($exifCoord) > 2 ? gps2Num($exifCoord[2]) : 0;
-
-       $flip = ($hemi == 'W' || $hemi == 'S') ? -1 : 1;
-
-       return floatval($flip * ($degrees + ($minutes / 60) + ($seconds / 3600)));
-}
-
-function gps2Num($coordPart) {
-       $parts = explode('/', $coordPart);
-
-       if (count($parts) <= 0)
-               return 0;
-
-       if (count($parts) == 1)
-               return $parts[0];
-
-       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) || $update) {
-               if (!Config::get('system', 'no_count', false)) {
-                       /// @todo This query needs to be renewed. It is really slow
-                       // At this time we just store the data in the cache
-                       $albums = q("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, ANY_VALUE(`created`) AS `created`
-                               FROM `photo`
-                               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'))
-                       );
-               } else {
-                       // This query doesn't do the count and is much faster
-                       $albums = q("SELECT DISTINCT(`album`), '' AS `total`
-                               FROM `photo` USE INDEX (`uid_album_scale_created`)
-                               WHERE `uid` = %d  AND `album` != '%s' AND `album` != '%s' $sql_extra",
-                               intval($uid),
-                               dbesc('Contact Photos'),
-                               dbesc(t('Contact Photos'))
-                       );
-               }
-               Cache::set($key, $albums, CACHE_DAY);
-       }
-       return $albums;
-}
index fde505a6f75fc864875189489fabf3a4df712fba..c7021aa44772b63b10151dfdcf40a9f392711ba0 100644 (file)
@@ -13,7 +13,6 @@ use Friendica\Model\Photo;
 use Friendica\Network\Probe;
 use Friendica\Object\Image;
 
-require_once 'include/photos.php';
 require_once 'include/items.php';
 require_once 'include/acl_selectors.php';
 require_once 'include/bbcode.php';
@@ -62,7 +61,7 @@ function photos_init(App $a) {
                        '$pdesc' => defaults($profile, 'pdesc', ''),
                ));
 
-               $albums = photo_albums($a->data['user']['uid']);
+               $albums = Photo::getAlbums($a->data['user']['uid']);
 
                $albums_visible = ((intval($a->data['user']['hidewall']) && !local_user() && !remote_user()) ? false : true);
 
@@ -213,7 +212,7 @@ function photos_post(App $a)
                                intval($page_owner_uid)
                        );
                        // Update the photo albums cache
-                       photo_albums($page_owner_uid, true);
+                       Photo::clearAlbumCache($page_owner_uid);
 
                        $newurl = str_replace(bin2hex($album), bin2hex($newalbum), $_SESSION['photo_return']);
                        goaway($newurl);
@@ -300,7 +299,7 @@ function photos_post(App $a)
                        }
 
                        // Update the photo albums cache
-                       photo_albums($page_owner_uid, true);
+                       Photo::clearAlbumCache($page_owner_uid);
                }
 
                goaway('photos/' . $a->data['user']['nickname']);
@@ -368,7 +367,7 @@ function photos_post(App $a)
                                $drop_id = intval($i[0]['id']);
 
                                // Update the photo albums cache
-                               photo_albums($page_owner_uid, true);
+                               Photo::clearAlbumCache($page_owner_uid);
 
                                if ($i[0]['visible']) {
                                        Worker::add(PRIORITY_HIGH, "Notifier", "drop", $drop_id);
@@ -472,7 +471,7 @@ function photos_post(App $a)
 
                        // Update the photo albums cache if album name was changed
                        if ($albname !== $origaname) {
-                               photo_albums($page_owner_uid, true);
+                               Photo::clearAlbumCache($page_owner_uid);
                        }
                }
 
@@ -894,8 +893,8 @@ function photos_post(App $a)
        // Create item container
        $lat = $lon = null;
        if ($exif && $exif['GPS'] && Feature::isEnabled($channel_id, 'photo_location')) {
-               $lat = getGps($exif['GPS']['GPSLatitude'], $exif['GPS']['GPSLatitudeRef']);
-               $lon = getGps($exif['GPS']['GPSLongitude'], $exif['GPS']['GPSLongitudeRef']);
+               $lat = Photo::getGps($exif['GPS']['GPSLatitude'], $exif['GPS']['GPSLatitudeRef']);
+               $lon = Photo::getGps($exif['GPS']['GPSLongitude'], $exif['GPS']['GPSLongitudeRef']);
        }
 
        $arr = array();
@@ -932,13 +931,13 @@ function photos_post(App $a)
 
        $item_id = item_store($arr);
        // Update the photo albums cache
-       photo_albums($page_owner_uid, true);
+       Photo::clearAlbumCache($page_owner_uid);
 
        if ($visible) {
                Worker::add(PRIORITY_HIGH, "Notifier", 'wall-new', $item_id);
        }
 
-       call_hooks('photo_post_end',intval($item_id));
+       call_hooks('photo_post_end', intval($item_id));
 
        // addon uploaders should call "killme()" [e.g. exit] within the photo_post_end hook
        // if they do not wish to be redirected
index 0fbeb66cbb06c74739eeed1c976adb4d1acab358..a25b2fa9d669e9fbddd451cd559c0e687d87c755 100644 (file)
@@ -1,19 +1,19 @@
 <?php
-
 /**
  * @file src/Model/Photo.php
  * @brief This file contains the Photo class for database interface
  */
-
 namespace Friendica\Model;
 
+use Friendica\Core\Cache;
+use Friendica\Core\Config;
+use Friendica\Core\PConfig;
 use Friendica\Core\System;
 use Friendica\Database\DBM;
 use Friendica\Object\Image;
 use dba;
 
 require_once 'include/dba.php';
-require_once "include/photos.php";
 
 /**
  * Class to handle photo dabatase table
@@ -21,6 +21,7 @@ require_once "include/photos.php";
 class Photo
 {
        /**
+        * @param Image   $Image     image
         * @param integer $uid       uid
         * @param integer $cid       cid
         * @param integer $rid       rid
@@ -173,4 +174,92 @@ class Photo
 
                return array($photo, $thumb, $micro);
        }
+
+       /**
+        * @param string $exifCoord coordinate
+        * @param string $hemi      hemi
+        * @return float
+        */
+       public static function getGps($exifCoord, $hemi)
+       {
+               $degrees = count($exifCoord) > 0 ? self::gps2Num($exifCoord[0]) : 0;
+               $minutes = count($exifCoord) > 1 ? self::gps2Num($exifCoord[1]) : 0;
+               $seconds = count($exifCoord) > 2 ? self::gps2Num($exifCoord[2]) : 0;
+       
+               $flip = ($hemi == 'W' || $hemi == 'S') ? -1 : 1;
+       
+               return floatval($flip * ($degrees + ($minutes / 60) + ($seconds / 3600)));
+       }
+
+       /**
+        * @param string $coordPart coordPart
+        * @return float
+        */
+       private static function gps2Num($coordPart)
+       {
+               $parts = explode('/', $coordPart);
+       
+               if (count($parts) <= 0) {
+                       return 0;
+               }
+       
+               if (count($parts) == 1) {
+                       return $parts[0];
+               }
+       
+               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
+        */
+       public static function getAlbums($uid, $update = false)
+       {
+               $sql_extra = permissions_sql($uid);
+
+               $key = "photo_albums:".$uid.":".local_user().":".remote_user();
+               $albums = Cache::get($key);
+               if (is_null($albums) || $update) {
+                       if (!Config::get('system', 'no_count', false)) {
+                               /// @todo This query needs to be renewed. It is really slow
+                               // At this time we just store the data in the cache
+                               $albums = q("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, ANY_VALUE(`created`) AS `created`
+                                       FROM `photo`
+                                       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'))
+                               );
+                       } else {
+                               // This query doesn't do the count and is much faster
+                               $albums = q("SELECT DISTINCT(`album`), '' AS `total`
+                                       FROM `photo` USE INDEX (`uid_album_scale_created`)
+                                       WHERE `uid` = %d  AND `album` != '%s' AND `album` != '%s' $sql_extra",
+                                       intval($uid),
+                                       dbesc('Contact Photos'),
+                                       dbesc(t('Contact Photos'))
+                               );
+                       }
+                       Cache::set($key, $albums, CACHE_DAY);
+               }
+               return $albums;
+       }
+
+       /**
+        * @param int $uid User id of the photos
+        * @return void
+        */
+       public static function clearAlbumCache($uid)
+       {
+               $key = "photo_albums:".$uid.":".local_user().":".remote_user();
+               Cache::set($key, null, CACHE_DAY);
+       }
 }
index 7cbc2432d995ecf2f4352b4eb80bcdc3c6d7349d..a0b8af05a9c3f638a00953601c86e63c7194d3af 100644 (file)
@@ -15,8 +15,6 @@ use Exception;
 use Imagick;
 use ImagickPixel;
 
-require_once "include/photos.php";
-
 /**
  * Class to handle images
  */
index 93f1e3a03a33bbab4d566b72f1b4ec80d3c5211e..e83347055b78f260fe39e9ef5ec940d8f5e87204 100644 (file)
@@ -12,6 +12,7 @@ use Friendica\Core\Config;
 use Friendica\Database\DBM;
 use Friendica\Model\Contact;
 use Friendica\Model\GContact;
+use Friendica\Model\Photo;
 use Friendica\Network\Probe;
 use Friendica\Protocol\PortableContact;
 use dba;
@@ -29,7 +30,6 @@ class CronJobs
                require_once 'include/datetime.php';
                require_once 'include/post_update.php';
                require_once 'mod/nodeinfo.php';
-               require_once 'include/photos.php';
 
                // No parameter set? So return
                if ($command == '') {
@@ -100,8 +100,8 @@ class CronJobs
                        return;
                }
 
-               foreach ($r AS $user) {
-                       photo_albums($user['uid'], true);
+               foreach ($r as $user) {
+                       Photo::clearAlbumCache($user['uid']);
                }
        }