$photos = import_profile_photo($data["photo"],$uid,$contactid);
- q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s', `micro` = '%s',
+ q("UPDATE `contact` SET `avatar` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s',
`addr` = '%s', `alias` = '%s', `name` = '%s', `nick` = '%s',
`name-date` = '%s', `uri-date` = '%s', `avatar-date` = '%s' WHERE `id` = %d",
+ dbesc($data["photo"]),
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
}
-function import_profile_photo($photo,$uid,$cid) {
+function update_contact_avatar($avatar,$uid,$cid) {
- $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) {
+ $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));
}
"keywords" => array("type" => "text", "not null" => "1"),
"gender" => array("type" => "varchar(32)", "not null" => "1", "default" => ""),
"attag" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+ "avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"photo" => array("type" => "text", "not null" => "1"),
"thumb" => array("type" => "text", "not null" => "1"),
"micro" => array("type" => "text", "not null" => "1"),
"nick" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"nurl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+ "avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+ "thumb" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+ "micro" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"connect" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
"updated" => array("type" => "datetime", "default" => "0000-00-00 00:00:00"),
$new_relation = CONTACT_IS_FOLLOWER;
$r = q("UPDATE `contact` SET
+ `avatar` = '%s',
`photo` = '%s',
`thumb` = '%s',
`micro` = '%s',
`writable` = 1
WHERE `id` = %d
",
+ dbesc($contact_record['photo']),
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
/// @TODO Update name on item['author-name'] if the name changed. See consume_feed()
/// (Not doing this currently because D* protocol is scheduled for revision soon).
- $r = q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `addr` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s', `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d AND `uid` = %d",
+ $r = q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `addr` = '%s', `name-date` = '%s',
+ `avatar` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s',
+ `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d AND `uid` = %d",
dbesc($name),
dbesc($nick),
dbesc($diaspora_handle),
dbesc(datetime_convert()),
dbesc($image_url),
+ dbesc($images[0]),
dbesc($images[1]),
dbesc($images[2]),
dbesc(datetime_convert()),
}
update_gcontact(array("url" => $contact['url'], "network" => NETWORK_DIASPORA, "generation" => 2,
- "photo" => $image_url, "name" => $name, "location" => $location,
+ "avatar" => $image_url, "name" => $name, "location" => $location,
"about" => $about, "birthday" => $birthday, "gender" => $gender,
"addr" => $diaspora_handle, "nick" => $nick, "keywords" => $keywords,
"hide" => !$searchable, "nsfw" => $nsfw));
$contact = probe_url($user->site_address."/".$user->name);
if ($contact["network"] != NETWORK_PHANTOM) {
$contact["about"] = $user->description;
+ $contact["avatar"] = $contact["photo"];
update_gcontact($contact);
}
}
$photos = import_profile_photo($ret['photo'],$uid,$contact_id);
- $r = q("UPDATE `contact` SET `photo` = '%s',
+ $r = q("UPDATE `contact` SET
+ `avatar` = '%s',
+ `photo` = '%s',
`thumb` = '%s',
`micro` = '%s',
`name-date` = '%s',
`uri-date` = '%s',
`avatar-date` = '%s'
WHERE `id` = %d",
+ dbesc($ret['photo']),
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
if (is_null($result))
Cache::set("gprobe:".$urlparts["host"],serialize($arr));
- if (!in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM)))
+ if (!in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM))) {
+ $arr["avatar"] = $arr["photo"];
update_gcontact($arr);
+ }
$r = q("SELECT `id`, `url`, `network` FROM `gcontact` WHERE `nurl` = '%s' ORDER BY `id` LIMIT 1",
dbesc(normalise_link($url))
"", "", "", datetime_convert(), 2, $contact["id"], $contact["uid"]);
}
- if (isset($author["author-avatar"]) AND ($author["author-avatar"] != $r[0]['photo'])) {
+ if (isset($author["author-avatar"]) AND ($author["author-avatar"] != $r[0]['avatar'])) {
logger("Update profile picture for contact ".$contact["id"], LOGGER_DEBUG);
$photos = import_profile_photo($author["author-avatar"], $importer["uid"], $contact["id"]);
- q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' WHERE `id` = %d AND `network` = '%s'",
- dbesc($author["author-avatar"]), dbesc($photos[1]), dbesc($photos[2]),
+ q("UPDATE `contact` SET `avatar` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' WHERE `id` = %d AND `network` = '%s'",
+ dbesc($author["author-avatar"]), dbesc($photos[0]), dbesc($photos[1]), dbesc($photos[2]),
dbesc(datetime_convert()), intval($contact["id"]), dbesc(NETWORK_OSTATUS));
}
if ($contact["network"] == NETWORK_OSTATUS) {
/// @todo Add the "addr" field
$contact["generation"] = 2;
- $contact["photo"] = $author["author-avatar"];
+ $contact["avatar"] = $author["author-avatar"];
update_gcontact($contact);
}
}
require_once('include/datetime.php');
require_once("include/Scrape.php");
require_once("include/html2bbcode.php");
-
+require_once("include/Contact.php");
/*
* poco_load
"alias" => $alias,
"name" => $name,
"network" => $network,
- "photo" => $profile_photo,
+ "avatar" => $profile_photo,
"about" => $about,
"location" => $location,
"gender" => $gender,
if (!$gcontact_id)
return false;
- $r = q("SELECT `name`, `nick`, `photo`, `location`, `about`, `addr`, `generation`, `birthday`, `gender`, `keywords`,
+ $r = q("SELECT `name`, `nick`, `avatar`, `photo`, `thumb`, `micro`, `location`, `about`, `addr`, `generation`, `birthday`, `gender`, `keywords`,
`hide`, `nsfw`, `network`, `alias`, `notify`, `server_url`, `connect`, `updated`, `url`
FROM `gcontact` WHERE `id` = %d LIMIT 1",
intval($gcontact_id));
if ($contact["generation"] < $r[0]["generation"])
$update = true;
+ if (isset($contact["avatar"]) AND (($contact["avatar"] != $r[0]["avatar"]) OR
+ ($r[0]["photo"] == $r[0]["avatar"]) OR ($r[0]["thumb"] == "") OR ($r[0]["micro"] == ""))) {
+
+ $cid = get_contact($contact["url"]);
+
+ // We always store avatar picture with a contact-id.
+ // We don't have a contact-id when we use the gcontact table.
+ // Solution is to use a matching entry in the contact table. (Which is not totally clean)
+ if (($cid == 0) AND isset($contact["uid"]))
+ $cid = get_contact($contact["url"], $contact["uid"]);
+
+ $photos = update_contact_avatar($contact["avatar"], 0, $cid);
+
+ if ($photos) {
+ $contact["photo"] = $photos[0];
+ $contact["thumb"] = $photos[1];
+ $contact["micro"] = $photos[2];
+ }
+ }
+
if ($update) {
- q("UPDATE `gcontact` SET `photo` = '%s', `name` = '%s', `nick` = '%s', `addr` = '%s', `network` = '%s',
+
+ q("UPDATE `gcontact` SET `avatar` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s',
+ `name` = '%s', `nick` = '%s', `addr` = '%s', `network` = '%s',
`birthday` = '%s', `gender` = '%s', `keywords` = %d, `hide` = %d, `nsfw` = %d,
`alias` = '%s', `notify` = '%s', `url` = '%s',
`location` = '%s', `about` = '%s', `generation` = %d, `updated` = '%s',
`server_url` = '%s', `connect` = '%s'
WHERE `nurl` = '%s' AND (`generation` = 0 OR `generation` >= %d)",
- dbesc($contact["photo"]), dbesc($contact["name"]), dbesc($contact["nick"]),
+ dbesc($contact["avatar"]), dbesc($contact["photo"]), dbesc($contact["thumb"]),
+ dbesc($contact["micro"]), dbesc($contact["name"]), dbesc($contact["nick"]),
dbesc($contact["addr"]), dbesc($contact["network"]), dbesc($contact["birthday"]),
dbesc($contact["gender"]), dbesc($contact["keywords"]), intval($contact["hide"]),
intval($contact["nsfw"]), dbesc($contact["alias"]), dbesc($contact["notify"]),
$photos = import_profile_photo($data['photo'], local_user(), $contact_id);
- $r = q("UPDATE `contact` SET `photo` = '%s',
+ $r = q("UPDATE `contact` SET
+ `avatar` = '%s',
+ `photo` = '%s',
`thumb` = '%s',
`micro` = '%s',
`name-date` = '%s',
`avatar-date` = '%s'
WHERE `id` = %d",
dbesc($data["photo"]),
+ dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
dbesc(datetime_convert()),
$photos = import_profile_photo($photo,local_user(),$contact['id']);
- $x = q("UPDATE `contact` SET `photo` = '%s',
+ $x = q("UPDATE `contact` SET
+ `avatar` = '%s',
+ `photo` = '%s',
`thumb` = '%s',
`micro` = '%s',
`name-date` = '%s',
`avatar-date` = '%s'
WHERE `id` = %d
",
+ dbesc($photo),
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
$duplex = 0;
$r = q("UPDATE `contact` SET
+ `avatar` = '%s',
`photo` = '%s',
`thumb` = '%s',
`micro` = '%s',
`hidden` = %d,
`network` = '%s' WHERE `id` = %d
",
+ dbesc($contact['photo']),
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
$duplex = 0;
$r = q("UPDATE `contact` SET
+ `avatar` = '%s',
`photo` = '%s',
`thumb` = '%s',
`micro` = '%s',
`prv` = %d,
`network` = '%s' WHERE `id` = %d
",
+ dbesc($photo),
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
if (!$r) {
$probed = probe_url($name);
if (isset($probed["url"])) {
+ $probed["avatar"] = $probed["photo"];
update_gcontact($probed);
$r = q("SELECT `url`, `name`, `nick`, `network`, `alias`, `notify` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
dbesc(normalise_link($probed["url"])));
$rr['generation'] = 2;
}
+ if ($rr["avatar"] == "")
+ $rr["avatar"] = $rr["photo"];
+
if (($rr['about'] == "") AND isset($rr['pabout']))
$rr['about'] = $rr['pabout'];
$entry['updated'] = date("c", strtotime($entry['updated']));
}
if($fields_ret['photos'])
- $entry['photos'] = array(array('value' => $rr['photo'], 'type' => 'profile'));
+ $entry['photos'] = array(array('value' => $rr['avatar'], 'type' => 'profile'));
if($fields_ret['network']) {
$entry['network'] = $rr['network'];
if ($entry['network'] == NETWORK_STATUSNET)
killme();
}
+ logger("Check size of picture.", LOGGER_DEBUG);
$r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ",
intval($page_owner_uid)
);
}
+ logger("Picture will be processed.", LOGGER_DEBUG);
$imagedata = @file_get_contents($src);
$ph = new Photo($imagedata, $filetype);
$defperm = '<' . $default_cid . '>';
+ logger("Picture will be stored", LOGGER_DEBUG);
$r = $ph->store($page_owner_uid, $visitor, $hash, $filename, t('Wall Photos'), 0, 0, $defperm);
if(! $r) {
return $picture;
}
+ logger("Picture is stored.", LOGGER_DEBUG);
+
if ($r_json) {
echo json_encode(array('ok'=>true));
killme();