From 1a5a00bef8c90524b094dddd4de5dcc6a1a6545f Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 6 Jan 2015 07:23:11 +0100 Subject: [PATCH] While storing an item, now every contact is stored in the gcontact table. --- include/items.php | 7 ++++ include/socgraph.php | 78 +++++++++++++++++++++++++------------------- 2 files changed, 52 insertions(+), 33 deletions(-) diff --git a/include/items.php b/include/items.php index 9d1e36f39b..a7e996015e 100644 --- a/include/items.php +++ b/include/items.php @@ -11,6 +11,7 @@ require_once('include/text.php'); require_once('include/email.php'); require_once('include/ostatus_conversation.php'); require_once('include/threads.php'); +require_once('include/socgraph.php'); function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) { @@ -1343,6 +1344,12 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa $current_post = $r[0]['id']; logger('item_store: created item ' . $current_post); + // Add every contact to the global contact table + // Contacts from the statusnet connector are also added since you could add them in OStatus as well. + if (!$arr['private'] AND in_array($arr["network"], + array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS, NETWORK_STATUSNET, ""))) + poco_check($arr["author-link"], $arr["author-name"], $arr["author-avatar"], "", $arr["received"]); + // Set "success_update" to the date of the last time we heard from this contact // This can be used to filter for inactive contacts and poco. // Only do this for public postings to avoid privacy problems, since poco data is public. diff --git a/include/socgraph.php b/include/socgraph.php index b9e890427c..8b8eb915cc 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -98,40 +98,8 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { if((! $name) || (! $profile_url) || (! $profile_photo)) continue; - $x = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", - dbesc(normalise_link($profile_url)) - ); + $gcid = poco_check($profile_url, $name, $profile_photo, $connect_url, $updated); - if(count($x)) { - $gcid = $x[0]['id']; - - if($x[0]['name'] != $name || $x[0]['photo'] != $profile_photo || $x[0]['updated'] < $updated) { - q("update gcontact set `name` = '%s', `photo` = '%s', `connect` = '%s', `url` = '%s', `updated` = '%s' - where `nurl` = '%s'", - dbesc($name), - dbesc($profile_photo), - dbesc($connect_url), - dbesc($profile_url), - dbesc($updated), - dbesc(normalise_link($profile_url)) - ); - } - } else { - q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`,`connect`, `updated`) - values ( '%s', '%s', '%s', '%s','%s') ", - dbesc($name), - dbesc($profile_url), - dbesc(normalise_link($profile_url)), - dbesc($profile_photo), - dbesc($connect_url), - dbesc($updated) - ); - $x = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", - dbesc(normalise_link($profile_url)) - ); - if(count($x)) - $gcid = $x[0]['id']; - } if(! $gcid) return; @@ -178,6 +146,50 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { } +function poco_check($profile_url, $name, $profile_photo, $connect_url, $updated) { + $gcid = ""; + + if (($profile_url == "") OR ($name == "") OR ($profile_photo == "")) + return $gcid; + + logger("profile-check URL: ".$profile_url." name: ".$name." avatar: ".$profile_photo, LOGGER_DEBUG); + + $x = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", + dbesc(normalise_link($profile_url)) + ); + + if(count($x)) { + $gcid = $x[0]['id']; + + if($x[0]['name'] != $name || $x[0]['photo'] != $profile_photo || $x[0]['updated'] < $updated) { + q("update gcontact set `name` = '%s', `photo` = '%s', `connect` = '%s', `url` = '%s', `updated` = '%s' + where `nurl` = '%s'", + dbesc($name), + dbesc($profile_photo), + dbesc($connect_url), + dbesc($profile_url), + dbesc($updated), + dbesc(normalise_link($profile_url)) + ); + } + } else { + q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`,`connect`, `updated`) + values ('%s', '%s', '%s', '%s','%s', '%s')", + dbesc($name), + dbesc($profile_url), + dbesc(normalise_link($profile_url)), + dbesc($profile_photo), + dbesc($connect_url), + dbesc($updated) + ); + $x = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", + dbesc(normalise_link($profile_url)) + ); + if(count($x)) + $gcid = $x[0]['id']; + } + return $gcid; +} function count_common_friends($uid,$cid) {