]> git.mxchange.org Git - friendica.git/blobdiff - src/Factory/Api/Friendica/Photo.php
API: Fix interoperability between Friendica and Mastodon part
[friendica.git] / src / Factory / Api / Friendica / Photo.php
index 85470c880615731bc42e407b5dea3ae7fd81b693..44a671e16bc2708a9837725440aaf19c779fb493 100644 (file)
@@ -25,6 +25,7 @@ use Friendica\App\BaseURL;
 use Friendica\BaseFactory;
 use Friendica\Database\DBA;
 use Friendica\Factory\Api\Twitter\Status;
+use Friendica\Model\Item;
 use Friendica\Model\Photo as ModelPhoto;
 use Friendica\Model\Post;
 use Friendica\Network\HTTPException;
@@ -73,12 +74,13 @@ class Photo extends BaseFactory
                if (empty($photos)) {
                        throw new HTTPException\NotFoundException();
                }
-               $data       = $photos[0];
-               $data['id'] = $data['resource-id'];
+               $data = $photos[0];
+
+               $data['media-id'] = $data['id'];
+               $data['id']       = $data['resource-id'];
+
                if (is_int($scale)) {
                        $data['data'] = base64_encode(ModelPhoto::getImageDataForPhoto($data));
-               } else {
-                       unset($data['datasize']); //needed only with scale param
                }
 
                if ($type == 'xml') {
@@ -91,23 +93,33 @@ class Photo extends BaseFactory
                        $link = $this->baseUrl->get() . '/photo/' . $data['resource-id'] . '-' . $photo['scale'] . Images::getExtensionByMimeType($data['type']);
                        if ($type == 'xml') {
                                $data['links'][$photo['scale'] . ':link']['@attributes'] = [
-                                       'type' => $data['type'],
+                                       'type'  => $data['type'],
                                        'scale' => $photo['scale'],
-                                       'href' => $link
+                                       'href'  => $link
                                ];
                        } else {
                                $data['link'][$id] = $link;
                        }
+                       if (is_null($scale)) {
+                               $data['scales'][] = [
+                                       'id'     => $photo['id'],
+                                       'scale'  => $photo['scale'],
+                                       'link'   => $link,
+                                       'width'  => $photo['width'],
+                                       'height' => $photo['height'],
+                                       'size'   => $photo['datasize'],
+                               ];
+                       }
                }
 
                unset($data['backend-class']);
                unset($data['backend-ref']);
                unset($data['resource-id']);
-               unset($data['scale']);
 
                if ($with_posts) {
                        // retrieve item element for getting activities (like, dislike etc.) related to photo
                        $condition = ['uid' => $uid, 'resource-id' => $photo_id];
+
                        $item = Post::selectFirst(['id', 'uid', 'uri', 'uri-id', 'parent', 'allow_cid', 'deny_cid', 'allow_gid', 'deny_gid'], $condition);
                }
                if (!empty($item)) {
@@ -115,7 +127,7 @@ class Photo extends BaseFactory
 
                        // retrieve comments on photo
                        $condition = ["`parent` = ? AND `uid` = ? AND `gravity` IN (?, ?)",
-                               $item['parent'], $uid, GRAVITY_PARENT, GRAVITY_COMMENT];
+                               $item['parent'], $uid, Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT];
 
                        $statuses = Post::selectForUser($uid, [], $condition);
 
@@ -147,9 +159,9 @@ class Photo extends BaseFactory
                } elseif ($with_posts) {
                        $data['friendica_activities'] = [];
                        $data['friendica_comments']   = [];
-                       $data['rights_mismatch'] = false;
+                       $data['rights_mismatch']      = false;
                }
 
                return $data;
        }
-}
\ No newline at end of file
+}