Browse Source

Review and Use statements

use statements and review changes.
pull/3982/head
Adam Magness 4 years ago
parent
commit
0373056448
  1. 4
      include/api.php
  2. 4
      include/follow.php
  3. 3
      include/items.php
  4. 4
      include/plaintext.php
  5. 3
      mod/contacts.php
  6. 3
      mod/crepair.php
  7. 6
      mod/dfrn_confirm.php
  8. 6
      mod/dfrn_request.php
  9. 4
      src/Model/GlobalContact.php
  10. 47
      src/Object/Contact.php
  11. 223
      src/Object/Photo.php
  12. 4
      src/ParseUrl.php
  13. 4
      src/Protocol/DFRN.php
  14. 7
      src/Protocol/Diaspora.php
  15. 8
      src/Protocol/OStatus.php

4
include/api.php

@ -2376,7 +2376,7 @@ function api_get_attachments(&$body)
$attachments = array();
foreach ($images[1] as $image) {
$imagedata = Photo::getPhotoInfo($image);
$imagedata = Photo::getInfoFromURL($image);
if ($imagedata) {
$attachments[] = array("url" => $image, "mimetype" => $imagedata["mime"], "size" => $imagedata["size"]);
@ -2508,7 +2508,7 @@ function api_get_entitities(&$text, $bbcode)
$start = iconv_strpos($text, $url, $offset, "UTF-8");
if (!($start === false)) {
$image = Photo::getPhotoInfo($url);
$image = Photo::getInfoFromURL($url);
if ($image) {
// If image cache is activated, then use the following sizes:
// thumb (150), small (340), medium (600) and large (1024)

4
include/follow.php

@ -8,7 +8,7 @@ use Friendica\Core\System;
use Friendica\Core\Worker;
use Friendica\Database\DBM;
use Friendica\Network\Probe;
use Friendica\Object\Photo;
use Friendica\Object\Contact;
use Friendica\Protocol\Diaspora;
use Friendica\Protocol\OStatus;
use Friendica\Protocol\PortableContact;
@ -250,7 +250,7 @@ function new_contact($uid, $url, $interactive = false, $network = '') {
}
// Update the avatar
Photo::updateContactAvatar($ret['photo'], $uid, $contact_id);
Contact::updateAvatar($ret['photo'], $uid, $contact_id);
// pull feed and consume it, which should subscribe to the hub.

3
include/items.php

@ -11,7 +11,6 @@ use Friendica\Core\System;
use Friendica\Database\DBM;
use Friendica\Model\GlobalContact;
use Friendica\Object\Contact;
use Friendica\Object\Photo;
use Friendica\Protocol\DFRN;
use Friendica\Protocol\OStatus;
use Friendica\Util\Lock;
@ -1690,7 +1689,7 @@ function new_follower($importer, $contact, $datarray, $item, $sharing = false) {
);
if (DBM::is_result($r)) {
$contact_record = $r[0];
Photo::updateContactAvatar($photo, $importer["uid"], $contact_record["id"], true);
Contact::updateAvatar($photo, $importer["uid"], $contact_record["id"], true);
}
/// @TODO Encapsulate this into a function/method

4
include/plaintext.php

@ -51,7 +51,7 @@ function get_old_attachment_data($body) {
if (preg_match("/\[img\]([$URLSearchString]*)\[\/img\]/ism", $attacheddata, $matches)) {
$picturedata = Photo::getPhotoInfo($matches[1]);
$picturedata = Photo::getInfoFromURL($matches[1]);
if (($picturedata[0] >= 500) && ($picturedata[0] >= $picturedata[1]))
$post["image"] = $matches[1];
@ -221,7 +221,7 @@ function get_attached_data($body, $item = array()) {
$post["preview"] = $pictures[0][2];
$post["text"] = str_replace($pictures[0][0], "", $body);
} else {
$imgdata = Photo::getPhotoInfo($pictures[0][1]);
$imgdata = Photo::getInfoFromURL($pictures[0][1]);
if (substr($imgdata["mime"], 0, 6) == "image/") {
$post["type"] = "photo";
$post["image"] = $pictures[0][1];

3
mod/contacts.php

@ -9,7 +9,6 @@ use Friendica\Database\DBM;
use Friendica\Model\GlobalContact;
use Friendica\Network\Probe;
use Friendica\Object\Contact;
use Friendica\Object\Photo;
require_once 'include/contact_selectors.php';
require_once 'mod/proxy.php';
@ -311,7 +310,7 @@ function _contact_update_profile($contact_id) {
);
// Update the entry in the contact table
Photo::updateContactAvatar($data['photo'], local_user(), $contact_id, true);
Contact::updateAvatar($data['photo'], local_user(), $contact_id, true);
// Update the entry in the gcontact table
GlobalContact::updateFromProbe($data["url"]);

3
mod/crepair.php

@ -6,7 +6,6 @@ use Friendica\App;
use Friendica\Core\Config;
use Friendica\Database\DBM;
use Friendica\Object\Contact;
use Friendica\Object\Photo;
require_once 'include/contact_selectors.php';
require_once 'mod/contacts.php';
@ -90,7 +89,7 @@ function crepair_post(App $a) {
if ($photo) {
logger('mod-crepair: updating photo from ' . $photo);
Photo::updateContactAvatar($photo, local_user(), $contact['id']);
Contact::updateAvatar($photo, local_user(), $contact['id']);
}
if ($r) {

6
mod/dfrn_confirm.php

@ -25,7 +25,7 @@ use Friendica\Core\System;
use Friendica\Core\Worker;
use Friendica\Database\DBM;
use Friendica\Network\Probe;
use Friendica\Object\Photo;
use Friendica\Object\Contact;
use Friendica\Protocol\Diaspora;
require_once 'include/enotify.php';
@ -326,7 +326,7 @@ function dfrn_confirm_post(App $a, $handsfree = null) {
*
*/
Photo::updateContactAvatar($contact['photo'],$uid,$contact_id);
Contact::updateAvatar($contact['photo'], $uid, $contact_id);
logger('dfrn_confirm: confirm - imported photos');
@ -675,7 +675,7 @@ function dfrn_confirm_post(App $a, $handsfree = null) {
$photo = System::baseUrl() . '/images/person-175.jpg';
}
Photo::updateContactAvatar($photo,$local_uid,$dfrn_record);
Contact::updateAvatar($photo,$local_uid,$dfrn_record);
logger('dfrn_confirm: request - photos imported');

6
mod/dfrn_request.php

@ -16,7 +16,7 @@ use Friendica\Core\PConfig;
use Friendica\Core\System;
use Friendica\Database\DBM;
use Friendica\Network\Probe;
use Friendica\Object\Photo;
use Friendica\Object\Contact;
require_once 'include/enotify.php';
require_once 'include/group.php';
@ -195,7 +195,7 @@ function dfrn_request_post(App $a) {
group_add_member(local_user(), '', $r[0]['id'], $def_gid);
if (isset($photo))
Photo::updateContactAvatar($photo, local_user(), $r[0]["id"], true);
Contact::updateAvatar($photo, local_user(), $r[0]["id"], true);
$forwardurl = System::baseUrl()."/contacts/".$r[0]['id'];
} else {
@ -586,7 +586,7 @@ function dfrn_request_post(App $a) {
);
if (DBM::is_result($r)) {
$contact_record = $r[0];
Photo::updateContactAvatar($photo, $uid, $contact_record["id"], true);
Contact::updateAvatar($photo, $uid, $contact_record["id"], true);
}
}

4
src/Model/GlobalContact.php

@ -10,7 +10,7 @@ use Friendica\Core\System;
use Friendica\Core\Worker;
use Friendica\Database\DBM;
use Friendica\Network\Probe;
use Friendica\Object\Photo;
use Friendica\Object\Contact;
use Friendica\Object\Profile;
use Friendica\Protocol\PortableContact;
use dba;
@ -881,7 +881,7 @@ class GlobalContact
if (DBM::is_result($r)) {
logger("Update public contact ".$r[0]["id"], LOGGER_DEBUG);
Photo::updateContactAvatar($contact["photo"], 0, $r[0]["id"]);
Contact::updateAvatar($contact["photo"], 0, $r[0]["id"]);
$fields = array('name', 'nick', 'addr',
'network', 'bd', 'gender',

47
src/Object/Contact.php

@ -644,7 +644,7 @@ class Contact extends BaseObject
}
}
Photo::updateContactAvatar($data["photo"], $uid, $contact_id);
self::updateAvatar($data["photo"], $uid, $contact_id);
$contact = dba::select('contact', array('url', 'nurl', 'addr', 'alias', 'name', 'nick', 'keywords', 'location', 'about', 'avatar-date'), array('id' => $contact_id), array('limit' => 1));
@ -818,4 +818,49 @@ class Contact extends BaseObject
return $account_type;
}
/**
* @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
*/
public static function updateAvatar($avatar, $uid, $cid, $force = false)
{
// Limit = 1 returns the row so no need for dba:inArray()
$r = dba::select('contact', array('avatar', 'photo', 'thumb', 'micro', 'nurl'), array('id' => $cid), array('limit' => 1));
if (!DBM::is_result($r)) {
return false;
} else {
$data = array($r["photo"], $r["thumb"], $r["micro"]);
}
if (($r["avatar"] != $avatar) || $force) {
$photos = Photo::importProfilePhoto($avatar, $uid, $cid, true);
if ($photos) {
dba::update(
'contact',
array('avatar' => $avatar, 'photo' => $photos[0], 'thumb' => $photos[1], 'micro' => $photos[2], 'avatar-date' => datetime_convert()),
array('id' => $cid)
);
// Update the public contact (contact id = 0)
if ($uid != 0) {
$pcontact = dba::select('contact', array('id'), array('nurl' => $r[0]['nurl']), array('limit' => 1));
if (DBM::is_result($pcontact)) {
self::updateAvatar($avatar, 0, $pcontact['id'], $force);
}
}
return $photos;
}
}
return $data;
}
}

223
src/Object/Photo.php

@ -11,6 +11,8 @@ use Friendica\Core\Config;
use Friendica\Core\System;
use Friendica\Database\DBM;
use dba;
use Imagick;
use ImagickPixel;
require_once "include/photos.php";
@ -33,6 +35,7 @@ class Photo
/**
* @brief supported mimetypes and corresponding file extensions
* @return array
*/
public static function supportedTypes()
{
@ -446,18 +449,18 @@ class Photo
// based off comment on http://php.net/manual/en/imagick.getimageorientation.php
$orientation = $this->image->getImageOrientation();
switch ($orientation) {
case imagick::ORIENTATION_BOTTOMRIGHT:
case Imagick::ORIENTATION_BOTTOMRIGHT:
$this->image->rotateimage("#000", 180);
break;
case imagick::ORIENTATION_RIGHTTOP:
case Imagick::ORIENTATION_RIGHTTOP:
$this->image->rotateimage("#000", 90);
break;
case imagick::ORIENTATION_LEFTBOTTOM:
case Imagick::ORIENTATION_LEFTBOTTOM:
$this->image->rotateimage("#000", -90);
break;
}
$this->image->setImageOrientation(imagick::ORIENTATION_TOPLEFT);
$this->image->setImageOrientation(Imagick::ORIENTATION_TOPLEFT);
return true;
}
// based off comment on http://php.net/manual/en/function.imagerotate.php
@ -805,51 +808,6 @@ class Photo
return $type;
}
/**
* @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
*/
public function updateContactAvatar($avatar, $uid, $cid, $force = false)
{
// Limit = 1 returns the row so no need for dba:inArray()
$r = dba::select('contact', array('avatar', 'photo', 'thumb', 'micro', 'nurl'), array('id' => $cid), array('limit' => 1));
if (!DBM::is_result($r)) {
return false;
} else {
$data = array($r["photo"], $r["thumb"], $r["micro"]);
}
if (($r["avatar"] != $avatar) || $force) {
$photos = $this->importProfilePhoto($avatar, $uid, $cid, true);
if ($photos) {
dba::update(
'contact',
array('avatar' => $avatar, 'photo' => $photos[0], 'thumb' => $photos[1], 'micro' => $photos[2], 'avatar-date' => datetime_convert()),
array('id' => $cid)
);
// Update the public contact (contact id = 0)
if ($uid != 0) {
$pcontact = dba::select('contact', array('id'), array('nurl' => $r[0]['nurl']), array('limit' => 1));
if (DBM::is_result($pcontact)) {
$this->updateContactAvatar($avatar, 0, $pcontact['id'], $force);
}
}
return $photos;
}
}
return $data;
}
/**
* @param string $photo photo
* @param integer $uid user id
@ -946,14 +904,14 @@ class Photo
$micro = System::baseUrl() . '/images/person-48.jpg';
}
return(array($photo, $thumb, $micro));
return array($photo, $thumb, $micro);
}
/**
* @param string $url url
* @return object
*/
public function getPhotoInfo($url)
public function getInfoFromURL($url)
{
$data = array();
@ -1040,167 +998,4 @@ class Photo
}
return array("width" => $dest_width, "height" => $dest_height);
}
/**
* @brief This function doesn't seem to be used
* @param object $a App
* @param integer $uid user id
* @param string $imagedata optional, default empty
* @param string $url optional, default empty
* @return array
*/
private function storePhoto(App $a, $uid, $imagedata = "", $url = "")
{
$r = q(
"SELECT `user`.`nickname`, `user`.`page-flags`, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid`
WHERE `user`.`uid` = %d AND `user`.`blocked` = 0 AND `contact`.`self` = 1 LIMIT 1",
intval($uid)
);
if (!DBM::is_result($r)) {
logger("Can't detect user data for uid ".$uid, LOGGER_DEBUG);
return(array());
}
$page_owner_nick = $r[0]['nickname'];
/// @TODO
/// $default_cid = $r[0]['id'];
/// $community_page = (($r[0]['page-flags'] == PAGE_COMMUNITY) ? true : false);
if ((strlen($imagedata) == 0) && ($url == "")) {
logger("No image data and no url provided", LOGGER_DEBUG);
return(array());
} elseif (strlen($imagedata) == 0) {
logger("Uploading picture from ".$url, LOGGER_DEBUG);
$stamp1 = microtime(true);
$imagedata = @file_get_contents($url);
$a->save_timestamp($stamp1, "file");
}
$maximagesize = Config::get('system', 'maximagesize');
if (($maximagesize) && (strlen($imagedata) > $maximagesize)) {
logger("Image exceeds size limit of ".$maximagesize, LOGGER_DEBUG);
return(array());
}
$tempfile = tempnam(get_temppath(), "cache");
$stamp1 = microtime(true);
file_put_contents($tempfile, $imagedata);
$a->save_timestamp($stamp1, "file");
$data = getimagesize($tempfile);
if (!isset($data["mime"])) {
unlink($tempfile);
logger("File is no picture", LOGGER_DEBUG);
return(array());
}
$ph = new Photo($imagedata, $data["mime"]);
if (!$ph->isValid()) {
unlink($tempfile);
logger("Picture is no valid picture", LOGGER_DEBUG);
return(array());
}
$ph->orient($tempfile);
unlink($tempfile);
$max_length = Config::get('system', 'max_image_length');
if (! $max_length) {
$max_length = MAX_IMAGE_LENGTH;
}
if ($max_length > 0) {
$ph->scaleImage($max_length);
}
$width = $ph->getWidth();
$height = $ph->getHeight();
$hash = photo_new_resource();
$smallest = 0;
// Pictures are always public by now
//$defperm = '<'.$default_cid.'>';
$defperm = "";
$visitor = 0;
$r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 0, 0, $defperm);
if (!$r) {
logger("Picture couldn't be stored", LOGGER_DEBUG);
return(array());
}
$image = array("page" => System::baseUrl().'/photos/'.$page_owner_nick.'/image/'.$hash,
"full" => System::baseUrl()."/photo/{$hash}-0.".$ph->getExt());
if ($width > 800 || $height > 800) {
$image["large"] = System::baseUrl()."/photo/{$hash}-0.".$ph->getExt();
}
if ($width > 640 || $height > 640) {
$ph->scaleImage(640);
$r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 1, 0, $defperm);
if ($r) {
$image["medium"] = System::baseUrl()."/photo/{$hash}-1.".$ph->getExt();
}
}
if ($width > 320 || $height > 320) {
$ph->scaleImage(320);
$r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 2, 0, $defperm);
if ($r) {
$image["small"] = System::baseUrl()."/photo/{$hash}-2.".$ph->getExt();
}
}
if ($width > 160 && $height > 160) {
$x = 0;
$y = 0;
$min = $ph->getWidth();
if ($min > 160) {
$x = ($min - 160) / 2;
}
if ($ph->getHeight() < $min) {
$min = $ph->getHeight();
if ($min > 160) {
$y = ($min - 160) / 2;
}
}
$min = 160;
$ph->cropImage(160, $x, $y, $min, $min);
$r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 3, 0, $defperm);
if ($r) {
$image["thumb"] = System::baseUrl()."/photo/{$hash}-3.".$ph->getExt();
}
}
// Set the full image as preview image. This will be overwritten, if the picture is larger than 640.
$image["preview"] = $image["full"];
// Deactivated, since that would result in a cropped preview, if the picture wasn't larger than 320
//if (isset($image["thumb"]))
// $image["preview"] = $image["thumb"];
// Unsure, if this should be activated or deactivated
//if (isset($image["small"]))
// $image["preview"] = $image["small"];
if (isset($image["medium"])) {
$image["preview"] = $image["medium"];
}
return($image);
}
}

4
src/ParseUrl.php

@ -353,7 +353,7 @@ class ParseUrl
}
$src = self::completeUrl($attr["src"], $url);
$photodata = Photo::getPhotoInfo($src);
$photodata = Photo::getInfoFromURL($src);
if (($photodata) && ($photodata[0] > 150) && ($photodata[1] > 150)) {
if ($photodata[0] > 300) {
@ -374,7 +374,7 @@ class ParseUrl
unset($siteinfo["image"]);
$photodata = Photo::getPhotoInfo($src);
$photodata = Photo::getInfoFromURL($src);
if (($photodata) && ($photodata[0] > 10) && ($photodata[1] > 10)) {
$siteinfo["images"][] = array("src" => $src,

4
src/Protocol/DFRN.php

@ -1660,7 +1660,7 @@ class DFRN
);
}
Photo::updateContactAvatar(
Contact::updateAvatar(
$author["avatar"],
$importer["uid"],
$contact["id"],
@ -2035,7 +2035,7 @@ class DFRN
dbesc(normalise_link($old["url"]))
);
Photo::updateContactAvatar($relocate["avatar"], $importer["importer_uid"], $importer["id"], true);
Contact::updateAvatar($relocate["avatar"], $importer["importer_uid"], $importer["id"], true);
if ($x === false) {
return false;

7
src/Protocol/Diaspora.php

@ -19,7 +19,6 @@ use Friendica\Database\DBM;
use Friendica\Model\GlobalContact;
use Friendica\Network\Probe;
use Friendica\Object\Contact;
use Friendica\Object\Photo;
use Friendica\Object\Profile;
use Friendica\Util\XML;
@ -2211,7 +2210,7 @@ class Diaspora
$image_url = "http://".$handle_parts[1].$image_url;
}
Photo::updateContactAvatar($image_url, $importer["uid"], $contact["id"]);
Contact::updateAvatar($image_url, $importer["uid"], $contact["id"]);
// Generic birthday. We don't know the timezone. The year is irrelevant.
@ -2471,7 +2470,7 @@ class Diaspora
group_add_member($importer["uid"], "", $contact_record["id"], $def_gid);
}
Photo::updateContactAvatar($ret["photo"], $importer['uid'], $contact_record["id"], true);
Contact::updateAvatar($ret["photo"], $importer['uid'], $contact_record["id"], true);
if ($importer["page-flags"] == PAGE_NORMAL) {
logger("Sending intra message for author ".$author.".", LOGGER_DEBUG);
@ -2494,7 +2493,7 @@ class Diaspora
logger("Does an automatic friend approval for author ".$author.".", LOGGER_DEBUG);
Photo::updateContactAvatar($contact_record["photo"], $importer["uid"], $contact_record["id"]);
Contact::updateAvatar($contact_record["photo"], $importer["uid"], $contact_record["id"]);
// technically they are sharing with us (CONTACT_IS_SHARING),
// but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX

8
src/Protocol/OStatus.php

@ -203,7 +203,7 @@ class OStatus
if (!empty($author["author-avatar"]) && ($author["author-avatar"] != $current['avatar'])) {
logger("Update profile picture for contact ".$contact["id"], LOGGER_DEBUG);
Photo::updateContactAvatar($author["author-avatar"], $importer["uid"], $contact["id"]);
Contact::updateAvatar($author["author-avatar"], $importer["uid"], $contact["id"]);
}
// Ensure that we are having this contact (with uid=0)
@ -223,7 +223,7 @@ class OStatus
dba::update('contact', $fields, array('id' => $cid), $old_contact);
// Update the avatar
Photo::updateContactAvatar($author["author-avatar"], 0, $cid);
Contact::updateAvatar($author["author-avatar"], 0, $cid);
}
$contact["generation"] = 2;
@ -1326,7 +1326,7 @@ class OStatus
switch ($siteinfo["type"]) {
case 'photo':
$imgdata = Photo::getPhotoInfo($siteinfo["image"]);
$imgdata = Photo::getInfoFromURL($siteinfo["image"]);
$attributes = array("rel" => "enclosure",
"href" => $siteinfo["image"],
"type" => $imgdata["mime"],
@ -1346,7 +1346,7 @@ class OStatus
}
if (!Config::get('system', 'ostatus_not_attach_preview') && ($siteinfo["type"] != "photo") && isset($siteinfo["image"])) {
$imgdata = Photo::getPhotoInfo($siteinfo["image"]);
$imgdata = Photo::getInfoFromURL($siteinfo["image"]);
$attributes = array("rel" => "enclosure",
"href" => $siteinfo["image"],
"type" => $imgdata["mime"],

Loading…
Cancel
Save