fix mastodon tag notifications (again)

(cherry picked from commit 8e71324514)
This commit is contained in:
zotlabs 2018-11-22 04:25:59 +00:00 committed by Mario
parent 8e25c091f4
commit 4010ea814a

View File

@ -2625,42 +2625,43 @@ function tag_deliver($uid, $item_id) {
$plustagged = false; $plustagged = false;
$matches = array(); $matches = array();
$pattern = '/[\!@]\!?\[zrl\=' . preg_quote($term['url'],'/') . '\]' . preg_quote($term['term'],'/') . '\[\/zrl\]/'; $pattern = '/[\!@]\!?\[[uz]rl\=' . preg_quote($term['url'],'/') . '\](.*?)\[\/[uz]rl\]/';
if(preg_match($pattern,$body,$matches)) if(preg_match($pattern,$body,$matches))
$tagged = true; $tagged = true;
// original red forum tagging sequence @forumname+ $pattern = '/\[url\=' . preg_quote($term['url'],'/') . '\]\@(.*?)\[\/url\]/';
if(preg_match($pattern,$body,$matches))
$tagged = true;
// standard forum tagging sequence !forumname // standard forum tagging sequence !forumname
$pluspattern = '/@\!?\[zrl\=([^\]]*?)\]((?:.(?!\[zrl\=))*?)\+\[\/zrl\]/'; $forumpattern = '/\!\!?\[[uz]rl\=([^\]]*?)\]((?:.(?!\[[uz]rl\=))*?)\[\/[uz]rl\]/';
$forumpattern = '/\!\!?\[zrl\=([^\]]*?)\]((?:.(?!\[zrl\=))*?)\[\/zrl\]/'; $forumpattern2 = '/\[[uz]rl\=([^\]]*?)\]\!((?:.(?!\[[uz]rl\=))*?)\[\/[uz]rl\]/';
$found = false;
$matches = array(); $matches = array();
if(preg_match_all($pluspattern,$body,$matches,PREG_SET_ORDER)) {
foreach($matches as $match) {
$matched_forums ++;
if($term['url'] === $match[1] && intval($term['ttype']) === TERM_MENTION) {
if($matched_forums <= $max_forums) {
$plustagged = true;
$found = true;
break;
}
logger('forum ' . $term['term'] . ' exceeded max_tagged_forums - ignoring');
}
}
}
if(preg_match_all($forumpattern,$body,$matches,PREG_SET_ORDER)) { if(preg_match_all($forumpattern,$body,$matches,PREG_SET_ORDER)) {
foreach($matches as $match) { foreach($matches as $match) {
$matched_forums ++; $matched_forums ++;
if($term['url'] === $match[1] && intval($term['ttype']) === TERM_FORUM) { if($term['url'] === $match[1] && intval($term['ttype']) === TERM_FORUM) {
if($matched_forums <= $max_forums) { if($matched_forums <= $max_forums) {
$plustagged = true; $plustagged = true;
$found = true; break;
}
logger('forum ' . $term['term'] . ' exceeded max_tagged_forums - ignoring');
}
}
}
if(preg_match_all($forumpattern2,$body,$matches,PREG_SET_ORDER)) {
foreach($matches as $match) {
$matched_forums ++;
if($term['url'] === $match[1] && intval($term['ttype']) === TERM_FORUM) {
if($matched_forums <= $max_forums) {
$plustagged = true;
break; break;
} }
logger('forum ' . $term['term'] . ' exceeded max_tagged_forums - ignoring'); logger('forum ' . $term['term'] . ' exceeded max_tagged_forums - ignoring');
@ -2882,18 +2883,19 @@ function tgroup_check($uid, $item) {
$body = preg_replace('/\[share(.*?)\[\/share\]/','',$item['body']); $body = preg_replace('/\[share(.*?)\[\/share\]/','',$item['body']);
$pluspattern = '/@\!?\[zrl\=([^\]]*?)\]((?:.(?!\[zrl\=))*?)\+\[\/zrl\]/';
$forumpattern = '/\!\!?\[zrl\=([^\]]*?)\]((?:.(?!\[zrl\=))*?)\[\/zrl\]/'; $forumpattern = '/\!\!?\[zrl\=([^\]]*?)\]((?:.(?!\[zrl\=))*?)\[\/zrl\]/';
$forumpattern2 = '/\[zrl\=([^\]]*?)\]\!((?:.(?!\[zrl\=))*?)\[\/zrl\]/';
$found = false; $found = false;
$matches = array(); $matches = array();
if(preg_match_all($pluspattern,$body,$matches,PREG_SET_ORDER)) { if(preg_match_all($forumpattern,$body,$matches,PREG_SET_ORDER)) {
foreach($matches as $match) { foreach($matches as $match) {
$matched_forums ++; $matched_forums ++;
if($term['url'] === $match[1] && intval($term['ttype']) === TERM_MENTION) { if($term['url'] === $match[1] && intval($term['ttype']) === TERM_FORUM) {
if($matched_forums <= $max_forums) { if($matched_forums <= $max_forums) {
$found = true; $found = true;
break; break;
@ -2903,7 +2905,7 @@ function tgroup_check($uid, $item) {
} }
} }
if(preg_match_all($forumpattern,$body,$matches,PREG_SET_ORDER)) { if(preg_match_all($forumpattern2,$body,$matches,PREG_SET_ORDER)) {
foreach($matches as $match) { foreach($matches as $match) {
$matched_forums ++; $matched_forums ++;
if($term['url'] === $match[1] && intval($term['ttype']) === TERM_FORUM) { if($term['url'] === $match[1] && intval($term['ttype']) === TERM_FORUM) {