linkify @person and @person@domain.com tags
This commit is contained in:
parent
f7e1e907bc
commit
051fb7107e
2 changed files with 55 additions and 3 deletions
13
boot.php
13
boot.php
|
@ -1300,8 +1300,17 @@ function activity_match($haystack,$needle) {
|
||||||
|
|
||||||
if(! function_exists('get_tags')) {
|
if(! function_exists('get_tags')) {
|
||||||
function get_tags($s) {
|
function get_tags($s) {
|
||||||
if(preg_match_all('/([@#][^ ,.:?\-]*)[ ,.:?\-]/',$s,$match))
|
$ret = array();
|
||||||
return $match[1];
|
if(preg_match_all('/([@#][^ ,:?]*)[ ,:?]/',$s,$match)) {
|
||||||
|
foreach($match[1] as $match) {
|
||||||
|
if(substr($match,-1,1) === '.')
|
||||||
|
$ret[] = substr($match,0,-1);
|
||||||
|
else
|
||||||
|
$ret[] = $match;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $ret;
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
|
45
mod/item.php
45
mod/item.php
|
@ -114,6 +114,49 @@ function item_post(&$a) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$str_tags = '';
|
||||||
|
$tagged = array();
|
||||||
|
|
||||||
|
$tags = get_tags($body);
|
||||||
|
|
||||||
|
|
||||||
|
if($tags) {
|
||||||
|
foreach($tags as $tag) {
|
||||||
|
if(strpos($tag,'@') === 0) {
|
||||||
|
$name = substr($tag,1);
|
||||||
|
if(strpos($name,'@')) {
|
||||||
|
|
||||||
|
$links = @webfinger($name);
|
||||||
|
if(count($links)) {
|
||||||
|
foreach($links as $link) {
|
||||||
|
if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
|
||||||
|
$profile = $link['@attributes']['href'];
|
||||||
|
if($link['@attributes']['rel'] === 'salmon')
|
||||||
|
$salmon = $link['@attributes']['href'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$r = q("SELECT * FROM `contact` WHERE `nick` = '%s' AND `uid` = %d LIMIT 1",
|
||||||
|
dbesc($name),
|
||||||
|
intval($profile_uid)
|
||||||
|
);
|
||||||
|
if(count($r)) {
|
||||||
|
$profile = $r[0]['url'];
|
||||||
|
$salmon = $r[0]['notify'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($profile) {
|
||||||
|
$profile = str_replace(',','%2c',$profile);
|
||||||
|
$body = str_replace($name,'[url=' . $profile . ']' . $name . '[/url]', $body);
|
||||||
|
if(strlen($str_tags))
|
||||||
|
$str_tags .= ',';
|
||||||
|
$str_tags .= '[url=' . $profile . ']' . $name . '[/url]';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$wall = 0;
|
$wall = 0;
|
||||||
if($post_type === 'wall' || $post_type === 'wall-comment')
|
if($post_type === 'wall' || $post_type === 'wall-comment')
|
||||||
$wall = 1;
|
$wall = 1;
|
||||||
|
@ -345,7 +388,7 @@ function item_content(&$a) {
|
||||||
else {
|
else {
|
||||||
notice( t('Permission denied.') . EOL);
|
notice( t('Permission denied.') . EOL);
|
||||||
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
|
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
|
||||||
return; //NOTREACHED
|
//NOTREACHED
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue