diff --git a/include/api.php b/include/api.php index 22ed066baf..c59ecd016a 100644 --- a/include/api.php +++ b/include/api.php @@ -3961,7 +3961,7 @@ function api_fr_photoalbum_delete($type) } // now let's delete all photos from the album - $result = DBA::delete('photo', ['uid' => api_user(), 'album' => $album]); + $result = Photo::delete(['uid' => api_user(), 'album' => $album]); // return success of deletion or error message if ($result) { @@ -3995,11 +3995,11 @@ function api_fr_photoalbum_update($type) throw new BadRequestException("no new albumname specified"); } // check if album is existing - if (!DBA::exists('photo', ['uid' => api_user(), 'album' => $album])) { + if (!Photo::exists(null, ['uid' => api_user(), 'album' => $album])) { throw new BadRequestException("album not available"); } // now let's update all photos to the albumname - $result = DBA::update('photo', ['album' => $album_new], ['uid' => api_user(), 'album' => $album]); + $result = Photo::update(['album' => $album_new], ['uid' => api_user(), 'album' => $album]); // return success of updating or error message if ($result) { @@ -4099,14 +4099,8 @@ function api_fr_photo_create_update($type) } else { $mode = "update"; - // check if photo is existing in database - $r = q( - "SELECT `id` FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' AND `album` = '%s'", - intval(api_user()), - DBA::escape($photo_id), - DBA::escape($album) - ); - if (!DBA::isResult($r)) { + // check if photo is existing in databasei + if (!Photo::exists($photo_id, ['uid' => api_user(), 'album' => $album]) { throw new BadRequestException("photo not available"); } } @@ -4135,47 +4129,40 @@ function api_fr_photo_create_update($type) // now let's do the changes in update-mode if ($mode == "update") { - $sql_extra = ""; + $updated_fields = []; if (!is_null($desc)) { - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`desc` = '$desc'"; + $updated_fields['desc'] = $desc; } if (!is_null($album_new)) { - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`album` = '$album_new'"; + $updated_fields['album'] = $album_new; } if (!is_null($allow_cid)) { $allow_cid = trim($allow_cid); - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`allow_cid` = '$allow_cid'"; + $updated_fields['allow_cid'] = $allow_cid; } if (!is_null($deny_cid)) { $deny_cid = trim($deny_cid); - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`deny_cid` = '$deny_cid'"; + $updated_fields['deny_cid'] = $deny_cid; } if (!is_null($allow_gid)) { $allow_gid = trim($allow_gid); - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`allow_gid` = '$allow_gid'"; + $updated_fields['allow_gid'] = $allow_gid; } if (!is_null($deny_gid)) { $deny_gid = trim($deny_gid); - $sql_extra .= (($sql_extra != "") ? " ," : "") . "`deny_gid` = '$deny_gid'"; + $updated_fields['deny_gid'] = $deny_gid; } $result = false; - if ($sql_extra != "") { + if (count($updated_fields) > 0) { $nothingtodo = false; - $result = q( - "UPDATE `photo` SET %s, `edited`='%s' WHERE `uid` = %d AND `resource-id` = '%s' AND `album` = '%s'", - $sql_extra, - DateTimeFormat::utcNow(), // update edited timestamp - intval(api_user()), - DBA::escape($photo_id), - DBA::escape($album) - ); + $result = Photo::update($updated_fields, ['uid' => api_user(), 'resource-id' => $photo_id, 'album' => $album]); } else { $nothingtodo = true; } @@ -4224,16 +4211,12 @@ function api_fr_photo_delete($type) throw new BadRequestException("no photo_id specified"); } // check if photo is existing in database - $r = q( - "SELECT `id` FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s'", - intval(api_user()), - DBA::escape($photo_id) - ); - if (!DBA::isResult($r)) { + $r = Photo::exists($photo_id, ['uid' => api_user()]); + if (!$r) { throw new BadRequestException("photo not available"); } // now we can perform on the deletion of the photo - $result = DBA::delete('photo', ['uid' => api_user(), 'resource-id' => $photo_id]); + $result = Photo::delete(['uid' => api_user(), 'resource-id' => $photo_id]); // return success of deletion or error message if ($result) { @@ -4343,7 +4326,7 @@ function api_account_update_profile_image($type) // change specified profile or all profiles to the new resource-id if ($is_default_profile) { $condition = ["`profile` AND `resource-id` != ? AND `uid` = ?", $data['photo']['id'], api_user()]; - DBA::update('photo', ['profile' => false], $condition); + Photo::update(['profile' => false], $condition); } else { $fields = ['photo' => System::baseUrl() . '/photo/' . $data['photo']['id'] . '-4.' . $filetype, 'thumb' => System::baseUrl() . '/photo/' . $data['photo']['id'] . '-5.' . $filetype]; diff --git a/mod/item.php b/mod/item.php index 4617dfa02e..cc9de0dd60 100644 --- a/mod/item.php +++ b/mod/item.php @@ -31,6 +31,7 @@ use Friendica\Model\Contact; use Friendica\Model\Conversation; use Friendica\Model\FileTag; use Friendica\Model\Item; +use Friendica\Model\Photo; use Friendica\Protocol\Diaspora; use Friendica\Protocol\Email; use Friendica\Util\DateTimeFormat; @@ -456,16 +457,18 @@ function item_post(App $a) { // Ensure to only modify photos that you own $srch = '<' . intval($original_contact_id) . '>'; - $condition = ['allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', - 'resource-id' => $image_uri, 'uid' => $profile_uid]; - if (!DBA::exists('photo', $condition)) { + $condition = [ + 'allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', + 'uid' => $profile_uid + ]; + if (!Photo::exists($image_uri, $condition)) { continue; } $fields = ['allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow, 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny]; $condition = ['resource-id' => $image_uri, 'uid' => $profile_uid]; - DBA::update('photo', $fields, $condition); + Photo::update($fields, $condition); } } } diff --git a/mod/photos.php b/mod/photos.php index c72b66f259..3ccd3fa111 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -344,7 +344,7 @@ function photos_post(App $a) } if (DBA::isResult($r)) { - Photo::delete(['resource-id' => $r[0]['resource-id'], 'uid' => $page_owner_uid]); + Photo::delete(['uid' => $page_owner_uid, 'resource-id' => $r[0]['resource-id']]); Item::deleteForUser(['resource-id' => $r[0]['resource-id'], 'uid' => $page_owner_uid], $page_owner_uid); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 52bcc3b54b..1dac5dbf41 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -483,7 +483,7 @@ class Contact extends BaseObject 'gender' => $profile['gender'], 'avatar' => $profile['photo'], 'contact-type' => $user['account-type'], 'xmpp' => $profile['xmpp']]; - $avatar = DBA::selectFirst('photo', ['resource-id', 'type'], ['uid' => $uid, 'profile' => true]); + $avatar = Photo::selectFirst(['resource-id', 'type'], ['uid' => $uid, 'profile' => true]); if (DBA::isResult($avatar)) { if ($update_avatar) { $fields['avatar-date'] = DateTimeFormat::utcNow(); diff --git a/src/Model/Item.php b/src/Model/Item.php index 95256219a1..f4290aab97 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1030,7 +1030,7 @@ class Item extends BaseObject * generate a resource-id and therefore aren't intimately linked to the item. */ if (strlen($item['resource-id'])) { - DBA::delete('photo', ['resource-id' => $item['resource-id'], 'uid' => $item['uid']]); + Photo::delete(['resource-id' => $item['resource-id'], 'uid' => $item['uid']]); } // If item is a link to an event, delete the event. @@ -2737,8 +2737,7 @@ class Item extends BaseObject if ($x) { $res = substr($i, $x + 1); $i = substr($i, 0, $x); - $fields = ['data', 'type', 'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']; - $photo = DBA::selectFirst('photo', $fields, ['resource-id' => $i, 'scale' => $res, 'uid' => $uid]); + $photo = Photo::getPhotoForUser($uid, $i, $res); if (DBA::isResult($photo)) { /* * Check to see if we should replace this photo link with an embedded image @@ -2762,9 +2761,7 @@ class Item extends BaseObject } } if ($replace) { - $data = $photo['data']; - $type = $photo['type']; - + $photo_img = Photo::getImageForPhoto($photo); // If a custom width and height were specified, apply before embedding if (preg_match("/\[img\=([0-9]*)x([0-9]*)\]/is", substr($orig_body, $img_start, $img_st_close), $match)) { Logger::log('scaling photo', Logger::DEBUG); @@ -2772,14 +2769,12 @@ class Item extends BaseObject $width = intval($match[1]); $height = intval($match[2]); - $Image = new Image($data, $type); - if ($Image->isValid()) { - $Image->scaleDown(max($width, $height)); - $data = $Image->asString(); - $type = $Image->getType(); - } + $photo_img->scaleDown(max($width, $height)); } + $data = $photo_img->asString(); + $type = $photo_img->getType(); + Logger::log('replacing photo', Logger::DEBUG); $image = 'data:' . $type . ';base64,' . base64_encode($data); Logger::log('replaced: ' . $image, Logger::DATA); diff --git a/src/Model/Mail.php b/src/Model/Mail.php index deedadeb0f..b47d4ac8e3 100644 --- a/src/Model/Mail.php +++ b/src/Model/Mail.php @@ -10,6 +10,7 @@ use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBA; +use Friendica\Model\Photo; use Friendica\Network\Probe; use Friendica\Util\DateTimeFormat; @@ -141,7 +142,7 @@ class Mail } $image_uri = substr($image, strrpos($image, '/') + 1); $image_uri = substr($image_uri, 0, strpos($image_uri, '-')); - DBA::update('photo', ['allow-cid' => '<' . $recipient . '>'], ['resource-id' => $image_uri, 'album' => 'Wall Photos', 'uid' => local_user()]); + Photo::update(['allow-cid' => '<' . $recipient . '>'], ['resource-id' => $image_uri, 'album' => 'Wall Photos', 'uid' => local_user()]); } } } diff --git a/src/Model/User.php b/src/Model/User.php index 2effb660fb..4fc17ae82d 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -17,6 +17,7 @@ use Friendica\Core\Protocol; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBA; +use Friendica\Model\Photo; use Friendica\Object\Image; use Friendica\Util\Crypto; use Friendica\Util\DateTimeFormat; @@ -701,7 +702,7 @@ class User } if (!$photo_failure) { - DBA::update('photo', ['profile' => 1], ['resource-id' => $hash]); + Photo::update(['profile' => 1], ['resource-id' => $hash]); } } } diff --git a/src/Worker/CronJobs.php b/src/Worker/CronJobs.php index b13afffd9a..ca50e0e75f 100644 --- a/src/Worker/CronJobs.php +++ b/src/Worker/CronJobs.php @@ -173,7 +173,7 @@ class CronJobs } $condition = ['`uid` = 0 AND `resource-id` LIKE "pic:%" AND `created` < NOW() - INTERVAL ? SECOND', $cachetime]; - DBA::delete('photo', $condition); + Photo::delete($condition); } // Delete the cached OEmbed entries that are older than three month