From 6b85fa17bbc187604001df799dfabab7f0656819 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 10 Jan 2016 19:06:34 +0100 Subject: [PATCH] Added some documentation --- include/Contact.php | 4 ++-- include/socgraph.php | 42 +++++++++++++++++++++++++++++++++++------- mod/contacts.php | 4 +++- mod/display.php | 2 +- 4 files changed, 41 insertions(+), 11 deletions(-) diff --git a/include/Contact.php b/include/Contact.php index 5aaaa11bff..81692fa840 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -533,7 +533,7 @@ function posts_from_gcontact($a, $gcontact_id) { $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`, `author-name` AS `name`, `owner-avatar` AS `photo`, `owner-link` AS `url`, `owner-avatar` AS `thumb` - FROM `item` + FROM `item` FORCE INDEX (`gcontactid_uid_created`) WHERE `gcontact-id` = %d AND $sql AND NOT `deleted` AND NOT `moderated` AND `visible` ORDER BY `item`.`created` DESC LIMIT %d, %d", @@ -639,7 +639,7 @@ function posts_from_contact($a, $contact_id) { $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`, `author-name` AS `name`, `owner-avatar` AS `photo`, `owner-link` AS `url`, `owner-avatar` AS `thumb` - FROM `item` FORCE INDEX (uid_contactid_created) + FROM `item` FORCE INDEX (`uid_contactid_created`) WHERE `item`.`uid` = %d AND `contact-id` = %d AND `author-link` IN ('%s', '%s') AND NOT `deleted` AND NOT `moderated` AND `visible` diff --git a/include/socgraph.php b/include/socgraph.php index 0082cb43b2..00fc439b7e 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -1507,6 +1507,12 @@ function poco_discover_server($data, $default_generation = 0) { return $success; } +/** + * @brief Fetch the gcontact id, add an entry if not existed + * + * @param arr $contact contact array + * @return bool|int Returns false if not found, integer if contact was found + */ function get_gcontact_id($contact) { $gcontact_id = 0; @@ -1546,6 +1552,12 @@ function get_gcontact_id($contact) { return $gcontact_id; } +/** + * @brief Updates the gcontact table from a given array + * + * @param arr $contact contact array + * @return bool|int Returns false if not found, integer if contact was found + */ function update_gcontact($contact) { $gcontact_id = get_gcontact_id($contact); @@ -1553,7 +1565,7 @@ function update_gcontact($contact) { if (!$gcontact_id) return false; - $r = q("SELECT `name`, `nick`, `photo`, `location`, `about`, `addr`, `generation`, `birthday`, `gender`, `keywords`, `hide`, `nsfw`, `network`, `alias`, `notify` + $r = q("SELECT `name`, `nick`, `photo`, `location`, `about`, `addr`, `generation`, `birthday`, `gender`, `keywords`, `hide`, `nsfw`, `network`, `alias`, `notify`, `url` FROM `gcontact` WHERE `id` = %d LIMIT 1", intval($gcontact_id)); @@ -1599,6 +1611,9 @@ function update_gcontact($contact) { if ($contact["alias"] =="") $contact["alias"] = $r[0]["alias"]; + if ($contact["url"] =="") + $contact["url"] = $r[0]["url"]; + if ($contact["notify"] =="") $contact["notify"] = $r[0]["notify"]; @@ -1608,22 +1623,35 @@ function update_gcontact($contact) { if (($contact["photo"] != $r[0]["photo"]) OR ($contact["name"] != $r[0]["name"]) OR ($contact["nick"] != $r[0]["nick"]) OR ($contact["addr"] != $r[0]["addr"]) OR ($contact["birthday"] != $r[0]["birthday"]) OR ($contact["gender"] != $r[0]["gender"]) OR ($contact["keywords"] != $r[0]["keywords"]) OR ($contact["hide"] != $r[0]["hide"]) OR ($contact["nsfw"] != $r[0]["nsfw"]) OR ($contact["network"] != $r[0]["network"]) OR - ($contact["alias"] != $r[0]["alias"]) OR ($contact["notify"] != $r[0]["notify"]) OR + ($contact["alias"] != $r[0]["alias"]) OR ($contact["notify"] != $r[0]["notify"]) OR ($contact["url"] != $r[0]["url"]) OR ($contact["location"] != $r[0]["location"]) OR ($contact["about"] != $r[0]["about"]) OR ($contact["generation"] < $r[0]["generation"])) { 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', + `alias` = '%s', `notify` = '%s', `url` = '%s', `location` = '%s', `about` = '%s', `generation` = %d, `updated` = '%s' WHERE `nurl` = '%s' AND (`generation` = 0 OR `generation` >= %d)", 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"]), - dbesc($contact["location"]), dbesc($contact["about"]), intval($contact["generation"]), dbesc(datetime_convert()), + 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"]), + dbesc($contact["url"]), dbesc($contact["location"]), dbesc($contact["about"]), + intval($contact["generation"]), dbesc(datetime_convert()), dbesc(normalise_link($contact["url"])), intval($contact["generation"])); } return $gcontact_id; } + +/** + * @brief Updates the gcontact entry from probe + * + * @param str $url profile link + */ +function update_gcontact_from_probe($url) { + $data = probe_url($url); + + if ($data["network"] != NETWORK_PHANTOM) + update_gcontact($data); +} ?> diff --git a/mod/contacts.php b/mod/contacts.php index ac7c7d85a1..f83b1b5daa 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -302,7 +302,7 @@ function _contact_update_profile($contact_id) { `uri-date` = '%s', `avatar-date` = '%s' WHERE `id` = %d", - dbesc($photos[0]), + dbesc($data["photo"]), dbesc($photos[1]), dbesc($photos[2]), dbesc(datetime_convert()), @@ -311,6 +311,8 @@ function _contact_update_profile($contact_id) { intval($contact_id) ); + // Update the entry in the gcontact table + update_gcontact_from_probe($data["url"]); } function _contact_block($contact_id, $orig_record) { diff --git a/mod/display.php b/mod/display.php index c41d2f045f..c53e92d05b 100644 --- a/mod/display.php +++ b/mod/display.php @@ -186,7 +186,7 @@ function display_fetchauthor($a, $item) { // Fetching profile data from global contacts if ($profiledata["network"] != NETWORK_FEED) { - $r = q("SELECT `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords` FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($profiledata["url"]))); + $r = q("SELECT `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords`, `network` FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($profiledata["url"]))); if (count($r)) { $profiledata["name"] = $r[0]["name"]; $profiledata["photo"] = $r[0]["photo"];