From 78e79de7c974732e6cb8cee58536fa9b6f98e06f Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 28 Jan 2016 11:09:08 +0100 Subject: [PATCH] New central function to store avatar data in contacts --- include/Contact.php | 12 +++--------- include/diaspora.php | 27 +++++---------------------- include/discover_poco.php | 1 - include/follow.php | 23 ++--------------------- include/gprobe.php | 4 +--- include/ostatus.php | 25 ++++++++++--------------- include/socgraph.php | 30 ++++-------------------------- mod/contacts.php | 22 ++-------------------- mod/crepair.php | 22 +--------------------- mod/dfrn_confirm.php | 37 ++++--------------------------------- mod/item.php | 1 - 11 files changed, 32 insertions(+), 172 deletions(-) diff --git a/include/Contact.php b/include/Contact.php index 1c99dd0298..3799e0b189 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -486,22 +486,16 @@ function get_contact($url, $uid = 0) { require_once("Photo.php"); - $photos = import_profile_photo($data["photo"],$uid,$contactid); + update_contact_avatar($data["photo"],$uid,$contactid); - 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]), + q("UPDATE `contact` SET `addr` = '%s', `alias` = '%s', `name` = '%s', `nick` = '%s', + `name-date` = '%s', `uri-date` = '%s' WHERE `id` = %d", dbesc($data["addr"]), dbesc($data["alias"]), dbesc($data["name"]), dbesc($data["nick"]), dbesc(datetime_convert()), dbesc(datetime_convert()), - dbesc(datetime_convert()), intval($contactid) ); diff --git a/include/diaspora.php b/include/diaspora.php index 3f0b4be432..1b71d4f2bd 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -728,7 +728,7 @@ function diaspora_request($importer,$xml) { require_once('include/Photo.php'); - $photos = import_profile_photo($contact_record['photo'],$importer['uid'],$contact_record['id']); + update_contact_avatar($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 @@ -739,28 +739,17 @@ function diaspora_request($importer,$xml) { else $new_relation = CONTACT_IS_FOLLOWER; - $r = q("UPDATE `contact` SET - `avatar` = '%s', - `photo` = '%s', - `thumb` = '%s', - `micro` = '%s', - `rel` = %d, + $r = q("UPDATE `contact` SET `rel` = %d, `name-date` = '%s', `uri-date` = '%s', - `avatar-date` = '%s', `blocked` = 0, `pending` = 0, `writable` = 1 WHERE `id` = %d ", - dbesc($contact_record['photo']), - dbesc($photos[0]), - dbesc($photos[1]), - dbesc($photos[2]), intval($new_relation), dbesc(datetime_convert()), dbesc(datetime_convert()), - dbesc(datetime_convert()), intval($contact_record['id']) ); @@ -2475,7 +2464,7 @@ function diaspora_profile($importer,$xml,$msg) { require_once('include/Photo.php'); - $images = import_profile_photo($image_url,$importer['uid'],$contact['id']); + update_contact_avatar($image_url,$importer['uid'],$contact['id']); // Generic birthday. We don't know the timezone. The year is irrelevant. @@ -2493,18 +2482,12 @@ 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', - `avatar` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s', + $r = q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `addr` = '%s', `name-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()), dbesc($birthday), dbesc($location), dbesc($about), @@ -2521,7 +2504,7 @@ function diaspora_profile($importer,$xml,$msg) { } update_gcontact(array("url" => $contact['url'], "network" => NETWORK_DIASPORA, "generation" => 2, - "avatar" => $image_url, "name" => $name, "location" => $location, + "photo" => $image_url, "name" => $name, "location" => $location, "about" => $about, "birthday" => $birthday, "gender" => $gender, "addr" => $diaspora_handle, "nick" => $nick, "keywords" => $keywords, "hide" => !$searchable, "nsfw" => $nsfw)); diff --git a/include/discover_poco.php b/include/discover_poco.php index 63d1175a71..a8f670334b 100644 --- a/include/discover_poco.php +++ b/include/discover_poco.php @@ -222,7 +222,6 @@ 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); } } diff --git a/include/follow.php b/include/follow.php index 8e6094cb4d..22ff079b63 100644 --- a/include/follow.php +++ b/include/follow.php @@ -264,27 +264,8 @@ function new_contact($uid,$url,$interactive = false) { require_once("include/Photo.php"); - $photos = import_profile_photo($ret['photo'],$uid,$contact_id); - - $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]), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - intval($contact_id) - ); - + // Update the avatar + update_contact_avatar($ret['photo'],$uid,$contact_id); // pull feed and consume it, which should subscribe to the hub. diff --git a/include/gprobe.php b/include/gprobe.php index 8e4d3715c0..dfa9137d7d 100644 --- a/include/gprobe.php +++ b/include/gprobe.php @@ -58,10 +58,8 @@ 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))) { - $arr["avatar"] = $arr["photo"]; + if (!in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM))) update_gcontact($arr); - } $r = q("SELECT `id`, `url`, `network` FROM `gcontact` WHERE `nurl` = '%s' ORDER BY `id` LIMIT 1", dbesc(normalise_link($url)) diff --git a/include/ostatus.php b/include/ostatus.php index eeacd40de4..d4c5d1617c 100644 --- a/include/ostatus.php +++ b/include/ostatus.php @@ -127,7 +127,8 @@ function ostatus_fetchauthor($xpath, $context, $importer, &$contact, $onlyfetch) $author["owner-link"] = $author["author-link"]; $author["owner-avatar"] = $author["author-avatar"]; - if ($r AND !$onlyfetch) { + // Only update the contacts if it is an OStatus contact + if ($r AND !$onlyfetch AND ($contact["network"] == NETWORK_OSTATUS)) { // Update contact data $value = $xpath->query("atom:link[@rel='salmon']", $context)->item(0)->nodeValue; @@ -158,9 +159,9 @@ function ostatus_fetchauthor($xpath, $context, $importer, &$contact, $onlyfetch) logger("Update contact data for contact ".$contact["id"], LOGGER_DEBUG); - q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `about` = '%s', `location` = '%s', `name-date` = '%s' WHERE `id` = %d AND `network` = '%s'", + q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `about` = '%s', `location` = '%s', `name-date` = '%s' WHERE `id` = %d", dbesc($contact["name"]), dbesc($contact["nick"]), dbesc($contact["about"]), dbesc($contact["location"]), - dbesc(datetime_convert()), intval($contact["id"]), dbesc(NETWORK_OSTATUS)); + dbesc(datetime_convert()), intval($contact["id"])); poco_check($contact["url"], $contact["name"], $contact["network"], $author["author-avatar"], $contact["about"], $contact["location"], "", "", "", datetime_convert(), 2, $contact["id"], $contact["uid"]); @@ -169,20 +170,14 @@ function ostatus_fetchauthor($xpath, $context, $importer, &$contact, $onlyfetch) 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 `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)); + update_contact_avatar($author["author-avatar"], $importer["uid"], $contact["id"]); } - // Only update the global contact if it is an OStatus contact - if ($contact["network"] == NETWORK_OSTATUS) { - /// @todo Add the "addr" field - $contact["generation"] = 2; - $contact["avatar"] = $author["author-avatar"]; - update_gcontact($contact); - } + + /// @todo Add the "addr" field + $contact["generation"] = 2; + $contact["photo"] = $author["author-avatar"]; + update_gcontact($contact); } return($author); diff --git a/include/socgraph.php b/include/socgraph.php index 241e2df7f0..268b5d3e72 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -294,7 +294,7 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca "alias" => $alias, "name" => $name, "network" => $network, - "avatar" => $profile_photo, + "photo" => $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`, `avatar`, `photo`, `thumb`, `micro`, `location`, `about`, `addr`, `generation`, `birthday`, `gender`, `keywords`, + $r = q("SELECT `name`, `nick`, `photo`, `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,37 +1552,15 @@ 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 `avatar` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', - `name` = '%s', `nick` = '%s', `addr` = '%s', `network` = '%s', + q("UPDATE `gcontact` SET `photo` = '%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["avatar"]), dbesc($contact["photo"]), dbesc($contact["thumb"]), - dbesc($contact["micro"]), dbesc($contact["name"]), dbesc($contact["nick"]), + dbesc($contact["photo"]), 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"]), diff --git a/mod/contacts.php b/mod/contacts.php index 1ef201490c..0b421433e0 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -293,26 +293,8 @@ function _contact_update_profile($contact_id) { intval(local_user()) ); - $photos = import_profile_photo($data['photo'], local_user(), $contact_id); - - $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($data["photo"]), - dbesc($photos[0]), - dbesc($photos[1]), - dbesc($photos[2]), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - intval($contact_id) - ); + // Update the entry in the contact table + update_contact_avatar($data['photo'], local_user(), $contact_id); // Update the entry in the gcontact table update_gcontact_from_probe($data["url"]); diff --git a/mod/crepair.php b/mod/crepair.php index 606c388458..5b4db09dac 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -80,27 +80,7 @@ function crepair_post(&$a) { logger('mod-crepair: updating photo from ' . $photo); require_once("include/Photo.php"); - $photos = import_profile_photo($photo,local_user(),$contact['id']); - - $x = 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($photo), - dbesc($photos[0]), - dbesc($photos[1]), - dbesc($photos[2]), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - intval($contact['id']) - ); + update_contact_avatar($photo,local_user(),$contact['id']); } if($r) diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 8528ba9ffd..27c04a908d 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -315,7 +315,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { require_once('include/Photo.php'); - $photos = import_profile_photo($contact['photo'],$uid,$contact_id); + update_contact_avatar($contact['photo'],$uid,$contact_id); logger('dfrn_confirm: confirm - imported photos'); @@ -328,29 +328,18 @@ function dfrn_confirm_post(&$a,$handsfree = null) { if(($relation == CONTACT_IS_SHARING) && ($duplex)) $duplex = 0; - $r = q("UPDATE `contact` SET - `avatar` = '%s', - `photo` = '%s', - `thumb` = '%s', - `micro` = '%s', - `rel` = %d, + $r = q("UPDATE `contact` SET `rel` = %d, `name-date` = '%s', `uri-date` = '%s', - `avatar-date` = '%s', `blocked` = 0, `pending` = 0, `duplex` = %d, `hidden` = %d, `network` = '%s' WHERE `id` = %d ", - dbesc($contact['photo']), - dbesc($photos[0]), - dbesc($photos[1]), - dbesc($photos[2]), intval($new_relation), dbesc(datetime_convert()), dbesc(datetime_convert()), - dbesc(datetime_convert()), intval($duplex), intval($hidden), dbesc(NETWORK_DFRN), @@ -396,12 +385,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) { ); - $r = q("UPDATE `contact` SET `photo` = '%s', - `thumb` = '%s', - `micro` = '%s', - `name-date` = '%s', + $r = q("UPDATE `contact` SET `name-date` = '%s', `uri-date` = '%s', - `avatar-date` = '%s', `notify` = '%s', `poll` = '%s', `blocked` = 0, @@ -412,10 +397,6 @@ function dfrn_confirm_post(&$a,$handsfree = null) { `rel` = %d WHERE `id` = %d ", - dbesc($photos[0]), - dbesc($photos[1]), - dbesc($photos[2]), - dbesc(datetime_convert()), dbesc(datetime_convert()), dbesc(datetime_convert()), dbesc($notify), @@ -685,7 +666,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { require_once("include/Photo.php"); - $photos = import_profile_photo($photo,$local_uid,$dfrn_record); + update_contact_avatar($photo,$local_uid,$dfrn_record); logger('dfrn_confirm: request - photos imported'); @@ -697,14 +678,9 @@ function dfrn_confirm_post(&$a,$handsfree = null) { $duplex = 0; $r = q("UPDATE `contact` SET - `avatar` = '%s', - `photo` = '%s', - `thumb` = '%s', - `micro` = '%s', `rel` = %d, `name-date` = '%s', `uri-date` = '%s', - `avatar-date` = '%s', `blocked` = 0, `pending` = 0, `duplex` = %d, @@ -712,14 +688,9 @@ 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]), intval($new_relation), dbesc(datetime_convert()), dbesc(datetime_convert()), - dbesc(datetime_convert()), intval($duplex), intval($forum), intval($prv), diff --git a/mod/item.php b/mod/item.php index bf0ead4932..8c5a479646 100644 --- a/mod/item.php +++ b/mod/item.php @@ -1146,7 +1146,6 @@ 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"])));