]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Photo.php
File and category aren't using "term" anymore
[friendica.git] / src / Model / Photo.php
index ccb0f2add4e972ecee1a89c1df2ae71b43c99c8d..9d8b5611f7f8b5f2543b0cc74e92521be7a6a0ba 100644 (file)
@@ -141,7 +141,7 @@ class Photo
         * @return boolean|array
         * @throws \Exception
         */
-       public static function getPhoto($resourceid, $scale = 0)
+       public static function getPhoto(string $resourceid, int $scale = 0)
        {
                $r = self::selectFirst(["uid"], ["resource-id" => $resourceid]);
                if (!DBA::isResult($r)) {
@@ -150,7 +150,9 @@ class Photo
 
                $uid = $r["uid"];
 
-               $sql_acl = Security::getPermissionsSQLByUserId($uid);
+               $accessible = $uid ? (bool)DI::pConfig()->get($uid, 'system', 'accessible-photos', false) : false;
+
+               $sql_acl = Security::getPermissionsSQLByUserId($uid, $accessible);
 
                $conditions = ["`resource-id` = ? AND `scale` <= ? " . $sql_acl, $resourceid, $scale];
                $params = ["order" => ["scale" => true]];
@@ -296,7 +298,6 @@ class Photo
                        $backend_ref = $storage->put($Image->asString(), $backend_ref);
                }
 
-
                $fields = [
                        "uid" => $uid,
                        "contact-id" => $cid,
@@ -431,9 +432,7 @@ class Photo
                        return false;
                }
 
-               if (empty($type)) {
-                       $type = Images::guessType($image_url, true);
-               }
+               $type = Images::getMimeTypeByData($img_str, $image_url, $type);
 
                $Image = new Image($img_str, $type);
                if ($Image->isValid()) {
@@ -661,13 +660,26 @@ class Photo
                                'resource-id' => $image_rid, 'uid' => $uid
                        ];
                        if (!Photo::exists($condition)) {
+                               $photo = self::selectFirst(['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid', 'uid'], ['resource-id' => $image_rid]);
+                               if (!DBA::isResult($photo)) {
+                                       Logger::info('Image not found', ['resource-id' => $image_rid]);
+                               } else {
+                                       Logger::info('Mismatching permissions', ['condition' => $condition, 'photo' => $photo]);
+                               }
                                continue;
                        }
 
-                       /// @todo Check if $str_contact_allow does contain a public forum. Then set the permissions to public.
+                       /**
+                        * @todo Existing permissions need to be mixed with the new ones.
+                        * Otherwise this creates problems with sharing the same picture multiple times
+                        * Also check if $str_contact_allow does contain a public forum.
+                        * Then set the permissions to public.
+                        */
 
                        $fields = ['allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow,
-                                       'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny];
+                                       'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny,
+                                       'accessible' => DI::pConfig()->get($uid, 'system', 'accessible-photos', false)];
+
                        $condition = ['resource-id' => $image_rid, 'uid' => $uid];
                        Logger::info('Set permissions', ['condition' => $condition, 'permissions' => $fields]);
                        Photo::update($fields, $condition);