X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Futil.php;fp=lib%2Futil.php;h=f31812349b2d9814410f956d01fa7e6d611bc86a;hb=fed0895d98a595609df7c821123ec9d6a22fbbc9;hp=b842bbaa93e75d38f84b7af25bcf756109116f09;hpb=21979bb7d75ddbc0edfd529779a6f368bd0df7d5;p=quix0rs-gnu-social.git diff --git a/lib/util.php b/lib/util.php index b842bbaa93..f31812349b 100644 --- a/lib/util.php +++ b/lib/util.php @@ -730,33 +730,24 @@ function common_find_mentions($text, Notice $notice) $matches = common_find_mentions_raw($text); foreach ($matches as $match) { - // Try to process it as @URL - $url = $match[0]; - if(!common_valid_http_url($url)) { $url = 'http://' . $url; } - if(common_valid_http_url($url)) { - $mentioned = Profile::ensureFromUrl($url); - $text = mb_strlen($mentioned->nickname) <= mb_strlen($match[0]) ? $mentioned->nickname : $match[0]; - } else { - try { - $nickname = Nickname::normalize($match[0]); - } catch (NicknameException $e) { - // Bogus match? Drop it. - continue; - } + try { + $nickname = Nickname::normalize($match[0]); + } catch (NicknameException $e) { + // Bogus match? Drop it. + continue; + } - // Try to get a profile for this nickname. - // Start with conversation context, then go to - // sender context. + // Try to get a profile for this nickname. + // Start with conversation context, then go to + // sender context. - if ($origAuthor instanceof Profile && $origAuthor->nickname == $nickname) { - $mentioned = $origAuthor; - } else if (!empty($origMentions) && - array_key_exists($nickname, $origMentions)) { - $mentioned = $origMentions[$nickname]; - } else { - $mentioned = common_relative_profile($sender, $nickname); - } - $text = $match[0]; + if ($origAuthor instanceof Profile && $origAuthor->nickname == $nickname) { + $mentioned = $origAuthor; + } else if (!empty($origMentions) && + array_key_exists($nickname, $origMentions)) { + $mentioned = $origMentions[$nickname]; + } else { + $mentioned = common_relative_profile($sender, $nickname); } if ($mentioned instanceof Profile) { @@ -770,7 +761,7 @@ function common_find_mentions($text, Notice $notice) $mention = array('mentioned' => array($mentioned), 'type' => 'mention', - 'text' => $text, + 'text' => $match[0], 'position' => $match[1], 'length' => mb_strlen($match[0]), 'url' => $url); @@ -848,7 +839,7 @@ function common_find_mentions_raw($text) PREG_OFFSET_CAPTURE); $atmatches = array(); - preg_match_all('/(?:^|\s+)@((?:[A-Za-z0-9_:\-\.\/%]+)|(?:' . Nickname::DISPLAY_FMT . '))\b/', + preg_match_all('/(?:^|\s+)@(' . Nickname::DISPLAY_FMT . ')\b/', $text, $atmatches, PREG_OFFSET_CAPTURE); @@ -2440,62 +2431,6 @@ function common_strip_html($html, $trim=true, $save_whitespace=false) return $trim ? trim($text) : $text; } -function common_representative_hcard($url, $fn=null, $mf2=null) { - if(!$mf2) { - $request = HTTPClient::start(); - - try { - $response = $request->get($url); - } catch(Exception $ex) { - return null; - } - - $url = $response->getEffectiveUrl(); - $mf2 = new Mf2\Parser($response->getBody(), $url); - $mf2 = $mf2->parse(); - } - - $hcard = null; - - if(!empty($mf2['items'])) { - $hcards = array(); - foreach($mf2['items'] as $item) { - if(!in_array('h-card', $item['type'])) { - continue; - } - - // We found a match, return it immediately - if(isset($item['properties']['url']) && in_array($url, $item['properties']['url'])) { - $hcard = $item['properties']; - break; - } - - // Let's keep all the hcards for later, to return one of them at least - $hcards[] = $item['properties']; - } - - // No match immediately for the url we expected, but there were h-cards found - if (count($hcards) > 0) { - $hcard = $hcards[0]; - } - } - - if(!$hcard && $fn) { - $hcard = array('name' => array($fn)); - } - - if(!$hcard && $response) { - preg_match('/([^<]+)/', $response->getBody(), $match); - $hcard = array('name' => array($match[1])); - } - - if($hcard && !$hcard['url']) { - $hcard['url'] = array($url); - } - - return $hcard; -} - function html_sprintf() { $args = func_get_args();