X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FPhoto.php;h=1d347f3d5f6c09db64009bac79f5b3148f6edcae;hb=6dbbd081795fa1c8fe57db2248ac162efeeada88;hp=c09434d7f237a477c80fbb0dc25e63e4643aac8a;hpb=bd09f5f6655494f626bb143ae7c2f992a8011bb7;p=friendica.git diff --git a/src/Model/Photo.php b/src/Model/Photo.php index c09434d7f2..1d347f3d5f 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -1,6 +1,6 @@ strlen($Image->asString()), "data" => $data, "scale" => $scale, - "profile" => $profile, + "photo-type" => $type, + "profile" => false, "allow_cid" => $allow_cid, "allow_gid" => $allow_gid, "deny_cid" => $deny_cid, @@ -478,7 +484,7 @@ class Photo $micro = ""; $photo = DBA::selectFirst( - "photo", ["resource-id"], ["uid" => $uid, "contact-id" => $cid, "scale" => 4, "album" => self::CONTACT_PHOTOS] + "photo", ["resource-id"], ["uid" => $uid, "contact-id" => $cid, "scale" => 4, "photo-type" => self::CONTACT_AVATAR] ); if (!empty($photo['resource-id'])) { $resource_id = $photo["resource-id"]; @@ -531,7 +537,7 @@ class Photo Logger::info('Avatar is resized', ['uid' => $uid, 'cid' => $cid, 'size' => $filesize, 'type' => $Image->getType()]); } - $r = self::store($Image, $uid, $cid, $resource_id, $filename, self::CONTACT_PHOTOS, 4); + $r = self::store($Image, $uid, $cid, $resource_id, $filename, self::CONTACT_PHOTOS, 4, self::CONTACT_AVATAR); if ($r === false) { $photo_failure = true; @@ -539,7 +545,7 @@ class Photo $Image->scaleDown(80); - $r = self::store($Image, $uid, $cid, $resource_id, $filename, self::CONTACT_PHOTOS, 5); + $r = self::store($Image, $uid, $cid, $resource_id, $filename, self::CONTACT_PHOTOS, 5, self::CONTACT_AVATAR); if ($r === false) { $photo_failure = true; @@ -547,7 +553,7 @@ class Photo $Image->scaleDown(48); - $r = self::store($Image, $uid, $cid, $resource_id, $filename, self::CONTACT_PHOTOS, 6); + $r = self::store($Image, $uid, $cid, $resource_id, $filename, self::CONTACT_PHOTOS, 6, self::CONTACT_AVATAR); if ($r === false) { $photo_failure = true; @@ -558,25 +564,6 @@ class Photo $image_url = DI::baseUrl() . "/photo/" . $resource_id . "-4." . $Image->getExt() . $suffix; $thumb = DI::baseUrl() . "/photo/" . $resource_id . "-5." . $Image->getExt() . $suffix; $micro = DI::baseUrl() . "/photo/" . $resource_id . "-6." . $Image->getExt() . $suffix; - - // Remove the cached photo - $a = DI::app(); - $basepath = $a->getBasePath(); - - if (is_dir($basepath . "/photo")) { - $filename = $basepath . "/photo/" . $resource_id . "-4." . $Image->getExt(); - if (file_exists($filename)) { - unlink($filename); - } - $filename = $basepath . "/photo/" . $resource_id . "-5." . $Image->getExt(); - if (file_exists($filename)) { - unlink($filename); - } - $filename = $basepath . "/photo/" . $resource_id . "-6." . $Image->getExt(); - if (file_exists($filename)) { - unlink($filename); - } - } } else { $photo_failure = true; } @@ -645,29 +632,31 @@ class Photo { $sql_extra = Security::getPermissionsSQLByUserId($uid); + $avatar_type = (local_user() && (local_user() == $uid)) ? Photo::USER_AVATAR : Photo::DEFAULT; + $key = "photo_albums:".$uid.":".local_user().":".remote_user(); $albums = DI::cache()->get($key); if (is_null($albums) || $update) { if (!DI::config()->get("system", "no_count", false)) { /// @todo This query needs to be renewed. It is really slow // At this time we just store the data in the cache - $albums = q("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, ANY_VALUE(`created`) AS `created` + $albums = DBA::toArray(DBA::p("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, ANY_VALUE(`created`) AS `created` FROM `photo` - WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra + WHERE `uid` = ? AND `photo-type` IN (?, ?) $sql_extra GROUP BY `album` ORDER BY `created` DESC", - intval($uid), - DBA::escape(self::CONTACT_PHOTOS), - DBA::escape(DI::l10n()->t(self::CONTACT_PHOTOS)) - ); + $uid, + self::DEFAULT, + $avatar_type + )); } else { // This query doesn't do the count and is much faster - $albums = q("SELECT DISTINCT(`album`), '' AS `total` + $albums = DBA::toArray(DBA::p("SELECT DISTINCT(`album`), '' AS `total` FROM `photo` USE INDEX (`uid_album_scale_created`) - WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra", - intval($uid), - DBA::escape(self::CONTACT_PHOTOS), - DBA::escape(DI::l10n()->t(self::CONTACT_PHOTOS)) - ); + WHERE `uid` = ? AND `photo-type` IN (?, ?) $sql_extra", + $uid, + self::DEFAULT, + $avatar_type + )); } DI::cache()->set($key, $albums, Duration::DAY); } @@ -799,22 +788,6 @@ class Photo Photo::update($fields, $condition); } - /** - * Strips known picture extensions from picture links - * - * @param string $name Picture link - * @return string stripped picture link - * @throws \Exception - */ - public static function stripExtension($name) - { - $name = str_replace([".jpg", ".png", ".gif"], ["", "", ""], $name); - foreach (Images::supportedTypes() as $m => $e) { - $name = str_replace("." . $e, "", $name); - } - return $name; - } - /** * Fetch the guid and scale from picture links * @@ -831,7 +804,7 @@ class Photo return []; } - $guid = self::stripExtension($guid); + $guid = pathinfo($guid, PATHINFO_FILENAME); if (substr($guid, -2, 1) != "-") { return []; } @@ -978,9 +951,6 @@ class Photo @unlink($src); $max_length = DI::config()->get('system', 'max_image_length'); - if (!$max_length) { - $max_length = MAX_IMAGE_LENGTH; - } if ($max_length > 0) { $Image->scaleDown($max_length); $filesize = strlen($Image->asString()); @@ -1016,7 +986,7 @@ class Photo $smallest = 0; - $r = Photo::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 0, 0, $defperm); + $r = Photo::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 0, self::DEFAULT, $defperm); if (!$r) { Logger::notice('Photo could not be stored'); return []; @@ -1024,7 +994,7 @@ class Photo if ($width > 640 || $height > 640) { $Image->scaleDown(640); - $r = Photo::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 1, 0, $defperm); + $r = Photo::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 1, self::DEFAULT, $defperm); if ($r) { $smallest = 1; } @@ -1032,7 +1002,7 @@ class Photo if ($width > 320 || $height > 320) { $Image->scaleDown(320); - $r = Photo::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 2, 0, $defperm); + $r = Photo::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 2, self::DEFAULT, $defperm); if ($r && ($smallest == 0)) { $smallest = 2; }