diff --git a/src/Factory/Api/Friendica/Photo.php b/src/Factory/Api/Friendica/Photo.php index 2a2f2be22..85470c880 100644 --- a/src/Factory/Api/Friendica/Photo.php +++ b/src/Factory/Api/Friendica/Photo.php @@ -59,12 +59,13 @@ class Photo extends BaseFactory public function createFromId(string $photo_id, int $scale = null, int $uid, string $type = 'json', bool $with_posts = true): array { $fields = ['resource-id', 'created', 'edited', 'title', 'desc', 'album', 'filename','type', - 'height', 'width', 'datasize', 'profile', 'allow_cid', 'deny_cid', 'allow_gid', 'deny_gid', - 'backend-class', 'backend-ref', 'id', 'scale']; + 'height', 'width', 'datasize', 'profile', 'allow_cid', 'deny_cid', 'allow_gid', 'deny_gid', + 'backend-class', 'backend-ref', 'id', 'scale']; $condition = ['uid' => $uid, 'resource-id' => $photo_id]; if (is_int($scale)) { $fields = array_merge(['data'], $fields); + $condition['scale'] = $scale; } @@ -72,7 +73,7 @@ class Photo extends BaseFactory if (empty($photos)) { throw new HTTPException\NotFoundException(); } - $data = $photos[0]; + $data = $photos[0]; $data['id'] = $data['resource-id']; if (is_int($scale)) { $data['data'] = base64_encode(ModelPhoto::getImageDataForPhoto($data)); @@ -103,7 +104,7 @@ class Photo extends BaseFactory 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]; @@ -111,20 +112,20 @@ class Photo extends BaseFactory } if (!empty($item)) { $data['friendica_activities'] = $this->activities->createFromUriId($item['uri-id'], $item['uid'], $type); - + // retrieve comments on photo $condition = ["`parent` = ? AND `uid` = ? AND `gravity` IN (?, ?)", $item['parent'], $uid, GRAVITY_PARENT, GRAVITY_COMMENT]; - + $statuses = Post::selectForUser($uid, [], $condition); - + // prepare output of comments $commentData = []; while ($status = DBA::fetch($statuses)) { $commentData[] = $this->status->createFromUriId($status['uri-id'], $status['uid'])->toArray(); } DBA::close($statuses); - + $comments = []; if ($type == 'xml') { $k = 0; @@ -137,7 +138,7 @@ class Photo extends BaseFactory } } $data['friendica_comments'] = $comments; - + // include info if rights on photo and rights on item are mismatching $data['rights_mismatch'] = $data['allow_cid'] != $item['allow_cid'] || $data['deny_cid'] != $item['deny_cid'] || @@ -148,7 +149,7 @@ class Photo extends BaseFactory $data['friendica_comments'] = []; $data['rights_mismatch'] = false; } - + return $data; } } \ No newline at end of file diff --git a/src/Module/Api/Friendica/Photo.php b/src/Module/Api/Friendica/Photo.php index a27abb371..5c2f46fc2 100644 --- a/src/Module/Api/Friendica/Photo.php +++ b/src/Module/Api/Friendica/Photo.php @@ -26,7 +26,7 @@ use Friendica\Model\Contact; use Friendica\Module\BaseApi; use Friendica\Network\HTTPException; -class Activity extends BaseApi +class Photo extends BaseApi { protected function post(array $request = []) { @@ -37,13 +37,13 @@ class Activity extends BaseApi if (empty($_REQUEST['photo_id'])) { throw new HTTPException\BadRequestException('No photo id.'); } - + $scale = (!empty($_REQUEST['scale']) ? intval($_REQUEST['scale']) : false); $photo_id = $_REQUEST['photo_id']; - + // prepare json/xml output with data from database for the requested photo $data = ['photo' => DI::friendicaPhoto()->createFromId($photo_id, $scale, $uid, $type)]; - + $this->response->exit('statuses', $data, $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid)); } } diff --git a/src/Module/Api/Friendica/Photo/Create.php b/src/Module/Api/Friendica/Photo/Create.php index fe99a175d..8da6acbf4 100644 --- a/src/Module/Api/Friendica/Photo/Create.php +++ b/src/Module/Api/Friendica/Photo/Create.php @@ -45,19 +45,19 @@ class Create extends BaseApi $deny_cid = $_REQUEST['deny_cid' ] ?? null; $allow_gid = $_REQUEST['allow_gid'] ?? null; $deny_gid = $_REQUEST['deny_gid' ] ?? null; - + // do several checks on input parameters // we do not allow calls without album string if ($album == null) { throw new HTTPException\BadRequestException('no albumname specified'); } - + // error if no media posted in create-mode if (empty($_FILES['media'])) { // Output error throw new HTTPException\BadRequestException('no media data submitted'); } - + // checks on acl strings provided by clients $acl_input_error = false; $acl_input_error |= !ACL::isValidContact($allow_cid, $uid); diff --git a/src/Module/Api/Friendica/Photo/Lists.php b/src/Module/Api/Friendica/Photo/Lists.php index 826e32d08..d7080b442 100644 --- a/src/Module/Api/Friendica/Photo/Lists.php +++ b/src/Module/Api/Friendica/Photo/Lists.php @@ -42,15 +42,15 @@ class Lists extends BaseApi $photos = Photo::selectToArray(['resource-id'], ["`uid` = ? AND NOT `photo-type` IN (?, ?)", $uid, Photo::CONTACT_AVATAR, Photo::CONTACT_BANNER], ['order' => ['id'], 'group_by' => ['resource-id']]); - + $data = ['photo' => []]; if (DBA::isResult($photos)) { foreach ($photos as $photo) { $element = DI::friendicaPhoto()->createFromId($photo['resource-id'], null, $uid, 'json', false); - + $element['thumb'] = end($element['link']); unset($element['link']); - + if ($type == 'xml') { $thumb = $element['thumb']; unset($element['thumb']); diff --git a/src/Module/Api/Friendica/Photo/Update.php b/src/Module/Api/Friendica/Photo/Update.php index 2b489bad3..c4bd6c70b 100644 --- a/src/Module/Api/Friendica/Photo/Update.php +++ b/src/Module/Api/Friendica/Photo/Update.php @@ -37,7 +37,7 @@ class Update extends BaseApi BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE); $uid = BaseApi::getCurrentUserID(); $type = $this->parameters['extension'] ?? ''; - + // input params $photo_id = $_REQUEST['photo_id'] ?? null; $desc = $_REQUEST['desc'] ?? null; @@ -47,7 +47,7 @@ class Update extends BaseApi $deny_cid = $_REQUEST['deny_cid' ] ?? null; $allow_gid = $_REQUEST['allow_gid'] ?? null; $deny_gid = $_REQUEST['deny_gid' ] ?? null; - + // do several checks on input parameters // we do not allow calls without album string if ($album == null) { @@ -58,7 +58,7 @@ class Update extends BaseApi if (!Photo::exists(['resource-id' => $photo_id, 'uid' => $uid, 'album' => $album])) { throw new HTTPException\BadRequestException('photo not available'); } - + // checks on acl strings provided by clients $acl_input_error = false; $acl_input_error |= !ACL::isValidContact($allow_cid, $uid); @@ -68,7 +68,7 @@ class Update extends BaseApi if ($acl_input_error) { throw new HTTPException\BadRequestException('acl data invalid'); } - + $updated_fields = []; if (!is_null($desc)) {