X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=include%2FNotificationsManager.php;h=ad0ede6dbe4a970728ea4da98c581f948fa0f8ee;hb=a98e1e559087ece25e2cebcfbfcf108f2e3c2be6;hp=7183393801540ae37d40b144ec5b1d70c1feb4ff;hpb=1f58bcc114928a5a3cd97bd0de34a5aa7d585931;p=friendica.git diff --git a/include/NotificationsManager.php b/include/NotificationsManager.php index 7183393801..ad0ede6dbe 100644 --- a/include/NotificationsManager.php +++ b/include/NotificationsManager.php @@ -4,10 +4,12 @@ * @brief Methods for read and write notifications from/to database * or for formatting notifications */ + 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 @@ -720,10 +722,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 +790,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 +815,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 +827,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 + // get the missing data data from other sources + if ($arr['gnetwork'] == "" || $arr['gaddr'] == "") { + $ret = get_contact_details_by_url($arr['url']); + + if ($arr['gnetwork'] == "" && $ret['network'] != "") { + $arr['gnetwork'] = $ret['network']; + } + if ($arr['gaddr'] == "" && $ret['addr'] != "") { + $arr['gaddr'] = $ret['addr']; + } + } + + return $arr; + } }