X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FPhoto.php;h=8ad7f3145f3d8c30d593c3b1b34c24999774171a;hb=8eba329111e832d7efdacf4f6a6fa85b0f7abbf3;hp=88f6d4269b3678c991c5681bb76270f83da75837;hpb=bbbc15a5ebd3127909e6fca0a5cc21d84f080ee1;p=friendica.git diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 88f6d4269b..8ad7f3145f 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -10,10 +10,11 @@ use Friendica\BaseObject; use Friendica\Core\Cache; use Friendica\Core\Config; use Friendica\Core\L10n; -use Friendica\Core\System; use Friendica\Core\StorageManager; +use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Database\DBStructure; +use Friendica\Model\Storage\IStorage; use Friendica\Object\Image; use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; @@ -29,18 +30,19 @@ class Photo extends BaseObject /** * @brief Select rows from the photo table * - * @param array $fields Array of selected fields, empty for all - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param array $fields Array of selected fields, empty for all + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return boolean|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function select(array $fields = [], array $conditions = [], array $params = []) { if (empty($fields)) { - $selected = self::getFields(); + $fields = self::getFields(); } $r = DBA::select("photo", $fields, $conditions, $params); @@ -50,13 +52,14 @@ class Photo extends BaseObject /** * @brief Retrieve a single record from the photo table * - * @param array $fields Array of selected fields, empty for all - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param array $fields Array of selected fields, empty for all + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return bool|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function selectFirst(array $fields = [], array $conditions = [], array $params = []) { @@ -70,14 +73,15 @@ class Photo extends BaseObject /** * @brief Get photos for user id * - * @param integer $uid User id - * @param string $resourceid Rescource ID of the photo - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param integer $uid User id + * @param string $resourceid Rescource ID of the photo + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return bool|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function getPhotosForUser($uid, $resourceid, array $conditions = [], array $params = []) { @@ -90,15 +94,16 @@ class Photo extends BaseObject /** * @brief Get a photo for user id * - * @param integer $uid User id - * @param string $resourceid Rescource ID of the photo - * @param integer $scale Scale of the photo. Defaults to 0 - * @param array $conditions Array of fields for conditions - * @param array $params Array of several parameters + * @param integer $uid User id + * @param string $resourceid Rescource ID of the photo + * @param integer $scale Scale of the photo. Defaults to 0 + * @param array $conditions Array of fields for conditions + * @param array $params Array of several parameters * * @return bool|array * - * @see \Friendica\Database\DBA::select + * @throws \Exception + * @see \Friendica\Database\DBA::select */ public static function getPhotoForUser($uid, $resourceid, $scale = 0, array $conditions = [], array $params = []) { @@ -116,10 +121,11 @@ class Photo extends BaseObject * on success, "no sign" image info, if user has no permission, * false if photo does not exists * - * @param string $resourceid Rescource ID of the photo - * @param integer $scale Scale of the photo. Defaults to 0 + * @param string $resourceid Rescource ID of the photo + * @param integer $scale Scale of the photo. Defaults to 0 * * @return boolean|array + * @throws \Exception */ public static function getPhoto($resourceid, $scale = 0) { @@ -145,9 +151,10 @@ class Photo extends BaseObject /** * @brief Check if photo with given conditions exists * - * @param array $conditions Array of extra conditions + * @param array $conditions Array of extra conditions * * @return boolean + * @throws \Exception */ public static function exists(array $conditions) { @@ -158,13 +165,16 @@ class Photo extends BaseObject /** * @brief Get Image object for given row id. null if row id does not exist * - * @param array $photo Photo data. Needs at least 'id', 'type', 'backend-class', 'backend-ref' + * @param array $photo Photo data. Needs at least 'id', 'type', 'backend-class', 'backend-ref' * * @return \Friendica\Object\Image + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function getImageForPhoto(array $photo) { $data = ""; + if ($photo["backend-class"] == "") { // legacy data storage in "data" column $i = self::selectFirst(["data"], ["id" => $photo["id"]]); @@ -181,6 +191,7 @@ class Photo extends BaseObject if ($data === "") { return null; } + return new Image($data, $photo["type"]); } @@ -188,10 +199,11 @@ class Photo extends BaseObject * @brief Return a list of fields that are associated with the photo table * * @return array field list + * @throws \Exception */ private static function getFields() { - $allfields = DBStructure::definition(false); + $allfields = DBStructure::definition(self::getApp()->getBasePath(), false); $fields = array_keys($allfields["photo"]["fields"]); array_splice($fields, array_search("data", $fields), 1); return $fields; @@ -200,20 +212,23 @@ class Photo extends BaseObject /** * @brief Construct a photo array for a system resource image * - * @param string $filename Image file name relative to code root - * @param string $mimetype Image mime type. Defaults to "image/jpeg" + * @param string $filename Image file name relative to code root + * @param string $mimetype Image mime type. Defaults to "image/jpeg" * * @return array + * @throws \Exception */ public static function createPhotoForSystemResource($filename, $mimetype = "image/jpeg") { $fields = self::getFields(); $values = array_fill(0, count($fields), ""); + $photo = array_combine($fields, $values); - $photo["backend-class"] = \Friendica\Model\Storage\SystemResource::class; + $photo["backend-class"] = Storage\SystemResource::class; $photo["backend-ref"] = $filename; $photo["type"] = $mimetype; $photo["cacheable"] = false; + return $photo; } @@ -236,6 +251,7 @@ class Photo extends BaseObject * @param string $desc Photo caption. optional, default = "" * * @return boolean True on success + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function store(Image $Image, $uid, $cid, $rid, $filename, $album, $scale, $profile = 0, $allow_cid = "", $allow_gid = "", $deny_cid = "", $deny_gid = "", $desc = "") { @@ -257,14 +273,15 @@ class Photo extends BaseObject // if is an existing photo, reuse same backend $data = ""; $backend_ref = ""; - $backend_class = ""; + /** @var IStorage $backend_class */ if (DBA::isResult($existing_photo)) { $backend_ref = (string)$existing_photo["backend-ref"]; $backend_class = (string)$existing_photo["backend-class"]; } else { $backend_class = StorageManager::getBackend(); } + if ($backend_class === "") { $data = $Image->asString(); } else { @@ -306,15 +323,17 @@ class Photo extends BaseObject return $r; } + /** * @brief Delete info from table and data from storage * - * @param array $conditions Field condition(s) - * @param array $options Options array, Optional + * @param array $conditions Field condition(s) + * @param array $options Options array, Optional * * @return boolean * - * @see \Friendica\Database\DBA::delete + * @throws \Exception + * @see \Friendica\Database\DBA::delete */ public static function delete(array $conditions, array $options = []) { @@ -322,6 +341,7 @@ class Photo extends BaseObject $photos = self::select(["backend-class","backend-ref"], $conditions); foreach($photos as $photo) { + /** @var IStorage $backend_class */ $backend_class = (string)$photo["backend-class"]; if ($backend_class !== "") { $backend_class::delete($photo["backend-ref"]); @@ -341,7 +361,8 @@ class Photo extends BaseObject * * @return boolean Was the update successfull? * - * @see \Friendica\Database\DBA::update + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @see \Friendica\Database\DBA::update */ public static function update($fields, $conditions, Image $img = null, array $old_fields = []) { @@ -350,6 +371,7 @@ class Photo extends BaseObject $photos = self::select(["backend-class","backend-ref"], $conditions); foreach($photos as $photo) { + /** @var IStorage $backend_class */ $backend_class = (string)$photo["backend-class"]; if ($backend_class !== "") { $fields["backend-ref"] = $backend_class::put($img->asString(), $photo["backend-ref"]); @@ -362,7 +384,7 @@ class Photo extends BaseObject $fields['edited'] = DateTimeFormat::utcNow(); - return DBA::update("photo", $fields, $conditions); + return DBA::update("photo", $fields, $conditions, $old_fields); } /** @@ -371,6 +393,8 @@ class Photo extends BaseObject * @param integer $cid contact id * @param boolean $quit_on_error optional, default false * @return array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ public static function importProfilePhoto($image_url, $uid, $cid, $quit_on_error = false) { @@ -464,7 +488,7 @@ class Photo extends BaseObject } /** - * @param string $exifCoord coordinate + * @param array $exifCoord coordinate * @param string $hemi hemi * @return float */ @@ -507,6 +531,7 @@ class Photo extends BaseObject * @param bool $update Update the cache * * @return array Returns array of the photo albums + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function getAlbums($uid, $update = false) { @@ -544,6 +569,7 @@ class Photo extends BaseObject /** * @param int $uid User id of the photos * @return void + * @throws \Exception */ public static function clearAlbumCache($uid) { @@ -555,6 +581,7 @@ class Photo extends BaseObject * Generate a unique photo ID. * * @return string + * @throws \Exception */ public static function newResource() {