use statements and review changes.
$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"]);
$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)
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;
}
// 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.
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;
);
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
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];
$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];
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';
);
// 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"]);
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';
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) {
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';
*
*/
- Photo::updateContactAvatar($contact['photo'],$uid,$contact_id);
+ Contact::updateAvatar($contact['photo'], $uid, $contact_id);
logger('dfrn_confirm: confirm - imported photos');
$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');
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';
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 {
);
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);
}
}
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;
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',
}
}
- 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));
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;
+ }
}
use Friendica\Core\System;
use Friendica\Database\DBM;
use dba;
+use Imagick;
+use ImagickPixel;
require_once "include/photos.php";
/**
* @brief supported mimetypes and corresponding file extensions
+ * @return array
*/
public static function supportedTypes()
{
// 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
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
$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();
}
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);
- }
}
}
$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) {
unset($siteinfo["image"]);
- $photodata = Photo::getPhotoInfo($src);
+ $photodata = Photo::getInfoFromURL($src);
if (($photodata) && ($photodata[0] > 10) && ($photodata[1] > 10)) {
$siteinfo["images"][] = array("src" => $src,
);
}
- Photo::updateContactAvatar(
+ Contact::updateAvatar(
$author["avatar"],
$importer["uid"],
$contact["id"],
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;
use Friendica\Model\GlobalContact;
use Friendica\Network\Probe;
use Friendica\Object\Contact;
-use Friendica\Object\Photo;
use Friendica\Object\Profile;
use Friendica\Util\XML;
$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.
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);
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
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)
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;
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"],
}
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"],