Browse Source

Use Model\Photo as much as possible

Most important is to use `Photo::delete()` to have backend
to remove data.
pull/6482/head
fabrixxm 2 years ago
committed by Hypolite Petovan
parent
commit
8c75c26361
8 changed files with 39 additions and 56 deletions
  1. +18
    -35
      include/api.php
  2. +7
    -4
      mod/item.php
  3. +1
    -1
      mod/photos.php
  4. +1
    -1
      src/Model/Contact.php
  5. +7
    -12
      src/Model/Item.php
  6. +2
    -1
      src/Model/Mail.php
  7. +2
    -1
      src/Model/User.php
  8. +1
    -1
      src/Worker/CronJobs.php

+ 18
- 35
include/api.php View File

@ -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];


+ 7
- 4
mod/item.php View File

@ -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);
}
}
}


+ 1
- 1
mod/photos.php View File

@ -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);


+ 1
- 1
src/Model/Contact.php View File

@ -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();


+ 7
- 12
src/Model/Item.php View File

@ -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);


+ 2
- 1
src/Model/Mail.php View File

@ -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()]);
}
}
}


+ 2
- 1
src/Model/User.php View File

@ -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]);
}
}
}


+ 1
- 1
src/Worker/CronJobs.php View File

@ -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


Loading…
Cancel
Save