mirror of
https://github.com/friendica/friendica
synced 2024-11-10 07:02:54 +00:00
New avatar picture fields to better cope with changing avatars
This commit is contained in:
parent
d6c1889a20
commit
6f662b8c74
15 changed files with 143 additions and 59 deletions
|
@ -488,9 +488,10 @@ function get_contact($url, $uid = 0) {
|
|||
|
||||
$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]),
|
||||
|
|
|
@ -720,7 +720,29 @@ function guess_image_type($filename, $fromcurl=false) {
|
|||
|
||||
}
|
||||
|
||||
function import_profile_photo($photo,$uid,$cid) {
|
||||
function update_contact_avatar($avatar,$uid,$cid) {
|
||||
|
||||
$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"]);
|
||||
|
||||
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();
|
||||
|
||||
|
@ -730,8 +752,7 @@ function import_profile_photo($photo,$uid,$cid) {
|
|||
);
|
||||
if(count($r) && strlen($r[0]['resource-id'])) {
|
||||
$hash = $r[0]['resource-id'];
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$hash = photo_new_resource();
|
||||
}
|
||||
|
||||
|
@ -740,6 +761,9 @@ function import_profile_photo($photo,$uid,$cid) {
|
|||
$filename = basename($photo);
|
||||
$img_str = fetch_url($photo,true);
|
||||
|
||||
if ($quit_on_error AND ($img_str == ""))
|
||||
return false;
|
||||
|
||||
$type = guess_image_type($photo,true);
|
||||
$img = new Photo($img_str, $type);
|
||||
if($img->is_valid()) {
|
||||
|
@ -768,10 +792,12 @@ function import_profile_photo($photo,$uid,$cid) {
|
|||
$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
|
||||
} 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';
|
||||
|
|
|
@ -453,6 +453,7 @@ function db_definition() {
|
|||
"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"),
|
||||
|
@ -656,7 +657,10 @@ function db_definition() {
|
|||
"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"),
|
||||
|
|
|
@ -740,6 +740,7 @@ function diaspora_request($importer,$xml) {
|
|||
$new_relation = CONTACT_IS_FOLLOWER;
|
||||
|
||||
$r = q("UPDATE `contact` SET
|
||||
`avatar` = '%s',
|
||||
`photo` = '%s',
|
||||
`thumb` = '%s',
|
||||
`micro` = '%s',
|
||||
|
@ -752,6 +753,7 @@ function diaspora_request($importer,$xml) {
|
|||
`writable` = 1
|
||||
WHERE `id` = %d
|
||||
",
|
||||
dbesc($contact_record['photo']),
|
||||
dbesc($photos[0]),
|
||||
dbesc($photos[1]),
|
||||
dbesc($photos[2]),
|
||||
|
@ -2491,12 +2493,15 @@ function diaspora_profile($importer,$xml,$msg) {
|
|||
/// @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()),
|
||||
|
@ -2516,7 +2521,7 @@ function diaspora_profile($importer,$xml,$msg) {
|
|||
}
|
||||
|
||||
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));
|
||||
|
|
|
@ -222,6 +222,7 @@ function gs_search_user($search) {
|
|||
$contact = probe_url($user->site_address."/".$user->name);
|
||||
if ($contact["network"] != NETWORK_PHANTOM) {
|
||||
$contact["about"] = $user->description;
|
||||
$contact["avatar"] = $contact["photo"];
|
||||
update_gcontact($contact);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -266,13 +266,16 @@ function new_contact($uid,$url,$interactive = false) {
|
|||
|
||||
$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]),
|
||||
|
|
|
@ -58,8 +58,10 @@ function gprobe_run(&$argv, &$argc){
|
|||
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))
|
||||
|
|
|
@ -166,13 +166,13 @@ function ostatus_fetchauthor($xpath, $context, $importer, &$contact, $onlyfetch)
|
|||
"", "", "", 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));
|
||||
}
|
||||
|
||||
|
@ -180,7 +180,7 @@ function ostatus_fetchauthor($xpath, $context, $importer, &$contact, $onlyfetch)
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
require_once('include/datetime.php');
|
||||
require_once("include/Scrape.php");
|
||||
require_once("include/html2bbcode.php");
|
||||
|
||||
require_once("include/Contact.php");
|
||||
|
||||
/*
|
||||
* poco_load
|
||||
|
@ -294,7 +294,7 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
|
|||
"alias" => $alias,
|
||||
"name" => $name,
|
||||
"network" => $network,
|
||||
"photo" => $profile_photo,
|
||||
"avatar" => $profile_photo,
|
||||
"about" => $about,
|
||||
"location" => $location,
|
||||
"gender" => $gender,
|
||||
|
@ -1517,7 +1517,7 @@ function update_gcontact($contact) {
|
|||
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));
|
||||
|
@ -1552,14 +1552,37 @@ function update_gcontact($contact) {
|
|||
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"]),
|
||||
|
|
|
@ -295,7 +295,9 @@ function _contact_update_profile($contact_id) {
|
|||
|
||||
$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',
|
||||
|
@ -303,6 +305,7 @@ function _contact_update_profile($contact_id) {
|
|||
`avatar-date` = '%s'
|
||||
WHERE `id` = %d",
|
||||
dbesc($data["photo"]),
|
||||
dbesc($photos[0]),
|
||||
dbesc($photos[1]),
|
||||
dbesc($photos[2]),
|
||||
dbesc(datetime_convert()),
|
||||
|
|
|
@ -82,7 +82,9 @@ function crepair_post(&$a) {
|
|||
|
||||
$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',
|
||||
|
@ -90,6 +92,7 @@ function crepair_post(&$a) {
|
|||
`avatar-date` = '%s'
|
||||
WHERE `id` = %d
|
||||
",
|
||||
dbesc($photo),
|
||||
dbesc($photos[0]),
|
||||
dbesc($photos[1]),
|
||||
dbesc($photos[2]),
|
||||
|
|
|
@ -329,6 +329,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
$duplex = 0;
|
||||
|
||||
$r = q("UPDATE `contact` SET
|
||||
`avatar` = '%s',
|
||||
`photo` = '%s',
|
||||
`thumb` = '%s',
|
||||
`micro` = '%s',
|
||||
|
@ -342,6 +343,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
`hidden` = %d,
|
||||
`network` = '%s' WHERE `id` = %d
|
||||
",
|
||||
dbesc($contact['photo']),
|
||||
dbesc($photos[0]),
|
||||
dbesc($photos[1]),
|
||||
dbesc($photos[2]),
|
||||
|
@ -695,6 +697,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
$duplex = 0;
|
||||
|
||||
$r = q("UPDATE `contact` SET
|
||||
`avatar` = '%s',
|
||||
`photo` = '%s',
|
||||
`thumb` = '%s',
|
||||
`micro` = '%s',
|
||||
|
@ -709,6 +712,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
`prv` = %d,
|
||||
`network` = '%s' WHERE `id` = %d
|
||||
",
|
||||
dbesc($photo),
|
||||
dbesc($photos[0]),
|
||||
dbesc($photos[1]),
|
||||
dbesc($photos[2]),
|
||||
|
|
|
@ -1146,6 +1146,7 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo
|
|||
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"])));
|
||||
|
|
|
@ -179,6 +179,9 @@ function poco_init(&$a) {
|
|||
$rr['generation'] = 2;
|
||||
}
|
||||
|
||||
if ($rr["avatar"] == "")
|
||||
$rr["avatar"] = $rr["photo"];
|
||||
|
||||
if (($rr['about'] == "") AND isset($rr['pabout']))
|
||||
$rr['about'] = $rr['pabout'];
|
||||
|
||||
|
@ -258,7 +261,7 @@ function poco_init(&$a) {
|
|||
$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)
|
||||
|
|
|
@ -158,6 +158,7 @@ function wall_upload_post(&$a, $desktopmode = true) {
|
|||
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)
|
||||
);
|
||||
|
@ -176,6 +177,7 @@ function wall_upload_post(&$a, $desktopmode = true) {
|
|||
}
|
||||
|
||||
|
||||
logger("Picture will be processed.", LOGGER_DEBUG);
|
||||
$imagedata = @file_get_contents($src);
|
||||
$ph = new Photo($imagedata, $filetype);
|
||||
|
||||
|
@ -210,6 +212,7 @@ function wall_upload_post(&$a, $desktopmode = true) {
|
|||
|
||||
$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) {
|
||||
|
@ -266,6 +269,8 @@ function wall_upload_post(&$a, $desktopmode = true) {
|
|||
return $picture;
|
||||
}
|
||||
|
||||
logger("Picture is stored.", LOGGER_DEBUG);
|
||||
|
||||
if ($r_json) {
|
||||
echo json_encode(array('ok'=>true));
|
||||
killme();
|
||||
|
|
Loading…
Reference in a new issue