From df7acc76557e96a3a907deb6378450d579be1100 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 31 May 2017 14:29:33 +0200 Subject: [PATCH 1/4] Bugfix: don't probe for introduction if it is not necessary --- include/NotificationsManager.php | 48 ++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/include/NotificationsManager.php b/include/NotificationsManager.php index 718339380..37d93b750 100644 --- a/include/NotificationsManager.php +++ b/include/NotificationsManager.php @@ -720,10 +720,12 @@ class NotificationsManager { $sql_extra = " AND `ignore` = 0 "; /// @todo Fetch contact details by "get_contact_details_by_url" instead of queries to contact, fcontact and gcontact - $r = q("SELECT `intro`.`id` AS `intro_id`, `intro`.*, `contact`.*, `fcontact`.`name` AS `fname`,`fcontact`.`url` AS `furl`,`fcontact`.`photo` AS `fphoto`,`fcontact`.`request` AS `frequest`, + $r = q("SELECT `intro`.`id` AS `intro_id`, `intro`.*, `contact`.*, + `fcontact`.`name` AS `fname`, `fcontact`.`url` AS `furl`, + `fcontact`.`photo` AS `fphoto`, `fcontact`.`request` AS `frequest`, `gcontact`.`location` AS `glocation`, `gcontact`.`about` AS `gabout`, `gcontact`.`keywords` AS `gkeywords`, `gcontact`.`gender` AS `ggender`, - `gcontact`.`network` AS `gnetwork` + `gcontact`.`network` AS `gnetwork`, `gcontact`.`addr` AS `gaddr` FROM `intro` LEFT JOIN `contact` ON `contact`.`id` = `intro`.`contact-id` LEFT JOIN `gcontact` ON `gcontact`.`nurl` = `contact`.`nurl` @@ -786,11 +788,7 @@ class NotificationsManager { // Normal connection requests } else { - // Probe the contact url to get missing data - $ret = probe_url($it["url"]); - - if ($it['gnetwork'] == "") - $it['gnetwork'] = $ret["network"]; + $it = $this->getMissingIntroData($it); // Don't show these data until you are connected. Diaspora is doing the same. if($it['gnetwork'] === NETWORK_DIASPORA) { @@ -815,7 +813,7 @@ class NotificationsManager { 'post_newfriend' => (intval(get_pconfig(local_user(),'system','post_newfriend')) ? '1' : 0), 'url' => $it['url'], 'zrl' => zrl($it['url']), - 'addr' => $ret['addr'], + 'addr' => $it['gaddr'], 'network' => $it['gnetwork'], 'knowyou' => $it['knowyou'], 'note' => $it['note'], @@ -827,4 +825,38 @@ class NotificationsManager { return $arr; } + + /** + * @brief Check for missing contact data and try to fetch the data from + * from other sources + * + * @param array $arr The input array with the intro data + * + * @return array The array with the intro data + */ + private function getMissingIntroData($arr) { + // If the network and the addr isn't available from the gcontact + // table entry, take the one of the contact table entry + if ($arr['gnetwork'] == "") { + $arr['gnetwork'] = $arr['network']; + } + if ($arr['gaddr'] == "") { + $arr['gaddr'] = $arr['addr']; + } + + // If the network and addr is still not available try to probe + // the contact url to fetch the missing data + if ($arr['gnetwork'] == "" || $arr['gaddr'] == "") { + $ret = probe_url($arr["url"]); + } + + if ($arr['gnetwork'] == "") { + $arr['gnetwork'] = $ret['network']; + } + if ($arr['gaddr'] == "") { + $arr['gaddr'] = $ret['addr']; + } + + return $arr; + } } From 8311af3e9277e131e403e6f67b7809e4aa1beb00 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 31 May 2017 18:43:57 +0200 Subject: [PATCH 2/4] use Probe:uri() instead of probe_url --- include/NotificationsManager.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/NotificationsManager.php b/include/NotificationsManager.php index 37d93b750..e662bd735 100644 --- a/include/NotificationsManager.php +++ b/include/NotificationsManager.php @@ -4,6 +4,9 @@ * @brief Methods for read and write notifications from/to database * or for formatting notifications */ + +use Friendica\Network\Probe; + require_once 'include/html2plain.php'; require_once 'include/probe.php'; require_once 'include/datetime.php'; @@ -847,7 +850,7 @@ class NotificationsManager { // If the network and addr is still not available try to probe // the contact url to fetch the missing data if ($arr['gnetwork'] == "" || $arr['gaddr'] == "") { - $ret = probe_url($arr["url"]); + $ret = Probe::uri($arr["url"]); } if ($arr['gnetwork'] == "") { From a726056c5f630c53111e4dce8d23c19740a7aa7a Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Thu, 1 Jun 2017 11:44:59 +0200 Subject: [PATCH 3/4] use get_contact_details_by_url() instead of Probe:uri() --- include/NotificationsManager.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/include/NotificationsManager.php b/include/NotificationsManager.php index e662bd735..96af0b76c 100644 --- a/include/NotificationsManager.php +++ b/include/NotificationsManager.php @@ -5,12 +5,11 @@ * or for formatting notifications */ -use Friendica\Network\Probe; - require_once 'include/html2plain.php'; require_once 'include/probe.php'; require_once 'include/datetime.php'; require_once 'include/bbcode.php'; +require_once 'include/Contact.php'; /** * @brief Methods for read and write notifications from/to database @@ -847,10 +846,10 @@ class NotificationsManager { $arr['gaddr'] = $arr['addr']; } - // If the network and addr is still not available try to probe - // the contact url to fetch the missing data + // If the network and addr is still not available + // get the missing data data from other sources if ($arr['gnetwork'] == "" || $arr['gaddr'] == "") { - $ret = Probe::uri($arr["url"]); + $ret = get_contact_details_by_url($arr['url']); } if ($arr['gnetwork'] == "") { From 8806688d686ad44f0072b73846baafa5f9de1d02 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Thu, 1 Jun 2017 12:47:47 +0200 Subject: [PATCH 4/4] restructure the conditions if gnetwork and gaddr is empty --- include/NotificationsManager.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/NotificationsManager.php b/include/NotificationsManager.php index 96af0b76c..ad0ede6db 100644 --- a/include/NotificationsManager.php +++ b/include/NotificationsManager.php @@ -850,13 +850,13 @@ class NotificationsManager { // get the missing data data from other sources if ($arr['gnetwork'] == "" || $arr['gaddr'] == "") { $ret = get_contact_details_by_url($arr['url']); - } - if ($arr['gnetwork'] == "") { - $arr['gnetwork'] = $ret['network']; - } - if ($arr['gaddr'] == "") { - $arr['gaddr'] = $ret['addr']; + if ($arr['gnetwork'] == "" && $ret['network'] != "") { + $arr['gnetwork'] = $ret['network']; + } + if ($arr['gaddr'] == "" && $ret['addr'] != "") { + $arr['gaddr'] = $ret['addr']; + } } return $arr;