X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FPhoto.php;h=0f03b54b0dbac9677dfaca7ee2cb48a6211f5e76;hb=c3d0ab56a560809f0d331f3f45f1f213a2094358;hp=301231f6bdd9378cd4815f923552a3faaf24c101;hpb=d6ed0068e6c8bf513e40a5d29b73d100f664261b;p=friendica.git diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 301231f6bd..0f03b54b0d 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -31,8 +31,8 @@ use Friendica\Model\Storage\SystemResource; use Friendica\Object\Image; use Friendica\Util\DateTimeFormat; use Friendica\Util\Images; -use Friendica\Util\Network; -use Friendica\Util\Security; +use Friendica\Security\Security; +use Friendica\Util\Proxy; use Friendica\Util\Strings; require_once "include/dba.php"; @@ -42,6 +42,8 @@ require_once "include/dba.php"; */ class Photo { + const CONTACT_PHOTOS = 'Contact Photos'; + /** * Select rows from the photo table and returns them as array * @@ -150,7 +152,7 @@ class Photo $uid = $r["uid"]; - $accessible = $uid ? DI::pConfig()->get($uid, 'system', 'accessible-photos') : false; + $accessible = $uid ? (bool)DI::pConfig()->get($uid, 'system', 'accessible-photos', false) : false; $sql_acl = Security::getPermissionsSQLByUserId($uid, $accessible); @@ -298,7 +300,6 @@ class Photo $backend_ref = $storage->put($Image->asString(), $backend_ref); } - $fields = [ "uid" => $uid, "contact-id" => $cid, @@ -410,7 +411,7 @@ class Photo $micro = ""; $photo = DBA::selectFirst( - "photo", ["resource-id"], ["uid" => $uid, "contact-id" => $cid, "scale" => 4, "album" => "Contact Photos"] + "photo", ["resource-id"], ["uid" => $uid, "contact-id" => $cid, "scale" => 4, "album" => self::CONTACT_PHOTOS] ); if (!empty($photo['resource-id'])) { $resource_id = $photo["resource-id"]; @@ -422,7 +423,7 @@ class Photo $filename = basename($image_url); if (!empty($image_url)) { - $ret = Network::curl($image_url, true); + $ret = DI::httpRequest()->get($image_url); $img_str = $ret->getBody(); $type = $ret->getContentType(); } else { @@ -433,15 +434,13 @@ class Photo return false; } - if (empty($type)) { - $type = Images::guessType($image_url, true); - } + $type = Images::getMimeTypeByData($img_str, $image_url, $type); $Image = new Image($img_str, $type); if ($Image->isValid()) { $Image->scaleToSquare(300); - $r = self::store($Image, $uid, $cid, $resource_id, $filename, "Contact Photos", 4); + $r = self::store($Image, $uid, $cid, $resource_id, $filename, self::CONTACT_PHOTOS, 4); if ($r === false) { $photo_failure = true; @@ -449,7 +448,7 @@ class Photo $Image->scaleDown(80); - $r = self::store($Image, $uid, $cid, $resource_id, $filename, "Contact Photos", 5); + $r = self::store($Image, $uid, $cid, $resource_id, $filename, self::CONTACT_PHOTOS, 5); if ($r === false) { $photo_failure = true; @@ -457,7 +456,7 @@ class Photo $Image->scaleDown(48); - $r = self::store($Image, $uid, $cid, $resource_id, $filename, "Contact Photos", 6); + $r = self::store($Image, $uid, $cid, $resource_id, $filename, self::CONTACT_PHOTOS, 6); if ($r === false) { $photo_failure = true; @@ -496,9 +495,10 @@ class Photo } if ($photo_failure) { - $image_url = DI::baseUrl() . "/images/person-300.jpg"; - $thumb = DI::baseUrl() . "/images/person-80.jpg"; - $micro = DI::baseUrl() . "/images/person-48.jpg"; + $contact = Contact::getById($cid) ?: []; + $image_url = Contact::getDefaultAvatar($contact, Proxy::SIZE_SMALL); + $thumb = Contact::getDefaultAvatar($contact, Proxy::SIZE_THUMB); + $micro = Contact::getDefaultAvatar($contact, Proxy::SIZE_MICRO); } return [$image_url, $thumb, $micro]; @@ -565,8 +565,8 @@ class Photo WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra GROUP BY `album` ORDER BY `created` DESC", intval($uid), - DBA::escape("Contact Photos"), - DBA::escape(DI::l10n()->t("Contact Photos")) + DBA::escape(self::CONTACT_PHOTOS), + DBA::escape(DI::l10n()->t(self::CONTACT_PHOTOS)) ); } else { // This query doesn't do the count and is much faster @@ -574,8 +574,8 @@ class Photo FROM `photo` USE INDEX (`uid_album_scale_created`) WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra", intval($uid), - DBA::escape("Contact Photos"), - DBA::escape(DI::l10n()->t("Contact Photos")) + DBA::escape(self::CONTACT_PHOTOS), + DBA::escape(DI::l10n()->t(self::CONTACT_PHOTOS)) ); } DI::cache()->set($key, $albums, Duration::DAY); @@ -658,12 +658,17 @@ class Photo // Ensure to only modify photos that you own $srch = '<' . intval($original_contact_id) . '>'; - $condition = ["(`allow_cid` = ? OR `allow_cid` IS NULL) AND - (`allow_gid` = ? OR `allow_gid` IS NULL) AND - (`deny_cid` = ? OR `deny_cid` IS NULL) AND - (`deny_gid` = ? OR `deny_gid` IS NULL) AND - `resource-id` = ? AND `uid` =?", $srch, '', '', '', $image_rid, $uid]; + $condition = [ + 'allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', + 'resource-id' => $image_rid, 'uid' => $uid + ]; if (!Photo::exists($condition)) { + $photo = self::selectFirst(['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid', 'uid'], ['resource-id' => $image_rid]); + if (!DBA::isResult($photo)) { + Logger::info('Image not found', ['resource-id' => $image_rid]); + } else { + Logger::info('Mismatching permissions', ['condition' => $condition, 'photo' => $photo]); + } continue; } @@ -675,11 +680,8 @@ class Photo */ $fields = ['allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow, - 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny]; - - if (DI::pConfig()->get($uid, 'system', 'accessible-photos')) { - $fields['accessible'] = true; - } + 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny, + 'accessible' => DI::pConfig()->get($uid, 'system', 'accessible-photos', false)]; $condition = ['resource-id' => $image_rid, 'uid' => $uid]; Logger::info('Set permissions', ['condition' => $condition, 'permissions' => $fields]);