X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FContent%2FItem.php;h=c0b1d3b49a37d3baf1aaffd69245aec129965836;hb=76ae210527487bea129411e8ed02ac4997d0d89b;hp=40deb976c778386df3ba3793cb5386b0983b6e00;hpb=18745b1723b3f8580704914e8f9df8441c859e70;p=friendica.git diff --git a/src/Content/Item.php b/src/Content/Item.php index 40deb976c7..c0b1d3b49a 100644 --- a/src/Content/Item.php +++ b/src/Content/Item.php @@ -130,7 +130,7 @@ class Item // Checking for the alias that is used for OStatus $pattern = '/[@!]\[url\=(.*?)\](.*?)\[\/url\]/ism'; if (preg_match($pattern, $tag, $matches)) { - $data = Contact::getDetailsByURL($matches[1]); + $data = Contact::getByURL($matches[1], false, ['alias', 'nick']); if ($data['alias'] != '') { $newtag = '@[url=' . $data['alias'] . ']' . $data['nick'] . '[/url]'; @@ -149,15 +149,8 @@ class Item $name = $nameparts[0]; // Try to detect the contact in various ways - if (strpos($name, 'http://')) { - // At first we have to ensure that the contact exists - Contact::getIdForURL($name); - - // Now we should have something - $contact = Contact::getDetailsByURL($name, $profile_uid); - } elseif (strpos($name, '@')) { - // This function automatically probes when no entry was found - $contact = Contact::getDetailsByAddr($name, $profile_uid); + if (strpos($name, 'http://') || strpos($name, '@')) { + $contact = Contact::getByURLForUser($name, $profile_uid); } else { $contact = false; $fields = ['id', 'url', 'nick', 'name', 'alias', 'network', 'forum', 'prv']; @@ -168,10 +161,17 @@ class Item $contact = DBA::selectFirst('contact', $fields, ['id' => $tagcid, 'uid' => $profile_uid]); } - // select someone by nick or attag in the current network + // select someone by nick in the current network if (!DBA::isResult($contact) && ($network != '')) { - $condition = ["(`nick` = ? OR `attag` = ?) AND `network` = ? AND `uid` = ?", - $name, $name, $network, $profile_uid]; + $condition = ["`nick` = ? AND `network` = ? AND `uid` = ?", + $name, $network, $profile_uid]; + $contact = DBA::selectFirst('contact', $fields, $condition); + } + + // select someone by attag in the current network + if (!DBA::isResult($contact) && ($network != '')) { + $condition = ["`attag` = ? AND `network` = ? AND `uid` = ?", + $name, $network, $profile_uid]; $contact = DBA::selectFirst('contact', $fields, $condition); } @@ -181,9 +181,15 @@ class Item $contact = DBA::selectFirst('contact', $fields, $condition); } - // select someone by nick or attag in any network + // select someone by nick in any network + if (!DBA::isResult($contact)) { + $condition = ["`nick` = ? AND `uid` = ?", $name, $profile_uid]; + $contact = DBA::selectFirst('contact', $fields, $condition); + } + + // select someone by attag in any network if (!DBA::isResult($contact)) { - $condition = ["(`nick` = ? OR `attag` = ?) AND `uid` = ?", $name, $name, $profile_uid]; + $condition = ["`attag` = ? AND `uid` = ?", $name, $profile_uid]; $contact = DBA::selectFirst('contact', $fields, $condition); }