X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2FPhoto.php;h=d87bce478704fccb6489097269e2e83163a4fd5f;hb=8a11a60932115725d65791d99a817aefbde174b7;hp=5fdd682e74e4925d40f7514b07c9f75c91a15d47;hpb=32c7896c5dce4543eeb326f5abc1037451b84757;p=friendica.git diff --git a/include/Photo.php b/include/Photo.php index 5fdd682e74..d87bce4787 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -720,65 +720,101 @@ function guess_image_type($filename, $fromcurl=false) { } -function import_profile_photo($photo,$uid,$cid) { +/** + * @brief Updates the avatar links in a contact only if needed + * + * @param string $avatar Link to avatar picture + * @param int $uid User id of contact owner + * @param int $cid Contact id + * @param bool $force force picture update + * + * @return array Returns array of the different avatar sizes + */ +function update_contact_avatar($avatar,$uid,$cid, $force = false) { - $a = get_app(); + $r = q("SELECT `avatar`, `photo`, `thumb`, `micro` FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid)); + if (!$r) + return false; + else + $data = array($r[0]["photo"], $r[0]["thumb"], $r[0]["micro"]); - $r = q("select `resource-id` from photo where `uid` = %d and `contact-id` = %d and `scale` = 4 and `album` = 'Contact Photos' limit 1", - intval($uid), - intval($cid) - ); - if(count($r) && strlen($r[0]['resource-id'])) { - $hash = $r[0]['resource-id']; - } - else { - $hash = photo_new_resource(); - } + if (($r[0]["avatar"] != $avatar) OR $force) { + $photos = import_profile_photo($avatar,$uid,$cid, true); + + if ($photos) { + q("UPDATE `contact` SET `avatar` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' WHERE `id` = %d", + dbesc($avatar), dbesc($photos[0]), dbesc($photos[1]), dbesc($photos[2]), + dbesc(datetime_convert()), intval($cid)); + return $photos; + } + } + + return $data; +} + +function import_profile_photo($photo,$uid,$cid, $quit_on_error = false) { + + $a = get_app(); - $photo_failure = false; + $r = q("select `resource-id` from photo where `uid` = %d and `contact-id` = %d and `scale` = 4 and `album` = 'Contact Photos' limit 1", + intval($uid), + intval($cid) + ); + if(count($r) && strlen($r[0]['resource-id'])) { + $hash = $r[0]['resource-id']; + } else { + $hash = photo_new_resource(); + } - $filename = basename($photo); - $img_str = fetch_url($photo,true); + $photo_failure = false; - $type = guess_image_type($photo,true); - $img = new Photo($img_str, $type); - if($img->is_valid()) { + $filename = basename($photo); + $img_str = fetch_url($photo,true); - $img->scaleImageSquare(175); + if ($quit_on_error AND ($img_str == "")) + return false; - $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 4 ); + $type = guess_image_type($photo,true); + $img = new Photo($img_str, $type); + if($img->is_valid()) { - if($r === false) - $photo_failure = true; + $img->scaleImageSquare(175); - $img->scaleImage(80); + $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 4 ); - $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 5 ); + if($r === false) + $photo_failure = true; - if($r === false) - $photo_failure = true; + $img->scaleImage(80); - $img->scaleImage(48); + $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 5 ); - $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 6 ); + if($r === false) + $photo_failure = true; - if($r === false) - $photo_failure = true; + $img->scaleImage(48); - $photo = $a->get_baseurl() . '/photo/' . $hash . '-4.' . $img->getExt(); - $thumb = $a->get_baseurl() . '/photo/' . $hash . '-5.' . $img->getExt(); - $micro = $a->get_baseurl() . '/photo/' . $hash . '-6.' . $img->getExt(); - } - else - $photo_failure = true; + $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 6 ); - if($photo_failure) { - $photo = $a->get_baseurl() . '/images/person-175.jpg'; - $thumb = $a->get_baseurl() . '/images/person-80.jpg'; - $micro = $a->get_baseurl() . '/images/person-48.jpg'; - } + if($r === false) + $photo_failure = true; + + $photo = $a->get_baseurl() . '/photo/' . $hash . '-4.' . $img->getExt(); + $thumb = $a->get_baseurl() . '/photo/' . $hash . '-5.' . $img->getExt(); + $micro = $a->get_baseurl() . '/photo/' . $hash . '-6.' . $img->getExt(); + } else + $photo_failure = true; + + if($photo_failure AND $quit_on_error) + return false; + + if($photo_failure) { + $photo = $a->get_baseurl() . '/images/person-175.jpg'; + $thumb = $a->get_baseurl() . '/images/person-80.jpg'; + $micro = $a->get_baseurl() . '/images/person-48.jpg'; + } - return(array($photo,$thumb,$micro)); + return(array($photo,$thumb,$micro)); } @@ -787,9 +823,12 @@ function get_photo_info($url) { $data = Cache::get($url); - if (is_null($data)) { - $img_str = fetch_url($url, true, $redirects, 4); + // Unserialise to be able to check in the next step if the cached data is alright. + if (!is_null($data)) + $data = unserialize($data); + if (is_null($data) OR !$data) { + $img_str = fetch_url($url, true, $redirects, 4); $filesize = strlen($img_str); if (function_exists("getimagesizefromstring")) @@ -810,8 +849,7 @@ function get_photo_info($url) { $data["size"] = $filesize; Cache::set($url, serialize($data)); - } else - $data = unserialize($data); + } return $data; }