Move "isType" to Tag.php

This commit is contained in:
Michael 2020-05-01 12:39:41 +00:00
parent ac2957c4dd
commit 029a379060
3 changed files with 24 additions and 25 deletions

View file

@ -906,7 +906,7 @@ function handle_tag(&$body, &$inform, &$str_tags, $profile_uid, $tag, $network =
$r = null; $r = null;
//is it a person tag? //is it a person tag?
if (Term::isType($tag, Tag::MENTION, Tag::IMPLICIT_MENTION, Tag::EXCLUSIVE_MENTION)) { if (Tag::isType($tag, Tag::MENTION, Tag::IMPLICIT_MENTION, Tag::EXCLUSIVE_MENTION)) {
$tag_type = substr($tag, 0, 1); $tag_type = substr($tag, 0, 1);
//is it already replaced? //is it already replaced?
if (strpos($tag, '[url=')) { if (strpos($tag, '[url=')) {

View file

@ -471,4 +471,23 @@ class Tag
return $tags ?: []; return $tags ?: [];
} }
/**
* Check if the provided tag is of one of the provided term types.
*
* @param string $tag
* @param int ...$types
* @return bool
*/
public static function isType($tag, ...$types)
{
$tag_chars = [];
foreach ($types as $type) {
if (array_key_exists($type, self::TAG_CHARACTER)) {
$tag_chars[] = self::TAG_CHARACTER[$type];
}
}
return Strings::startsWith($tag, $tag_chars);
}
} }

View file

@ -21,7 +21,6 @@
namespace Friendica\Model; namespace Friendica\Model;
use Friendica\Core\Cache\Duration;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
@ -202,7 +201,7 @@ class Term
} }
foreach ($tags as $link => $tag) { foreach ($tags as $link => $tag) {
if (self::isType($tag, self::HASHTAG)) { if (Tag::isType($tag, self::HASHTAG)) {
// try to ignore #039 or #1 or anything like that // try to ignore #039 or #1 or anything like that
if (ctype_digit(substr(trim($tag), 1))) { if (ctype_digit(substr(trim($tag), 1))) {
continue; continue;
@ -216,8 +215,8 @@ class Term
$type = self::HASHTAG; $type = self::HASHTAG;
$term = substr($tag, 1); $term = substr($tag, 1);
$link = ''; $link = '';
} elseif (self::isType($tag, self::MENTION, self::EXCLUSIVE_MENTION, self::IMPLICIT_MENTION)) { } elseif (Tag::isType($tag, self::MENTION, self::EXCLUSIVE_MENTION, self::IMPLICIT_MENTION)) {
if (self::isType($tag, self::MENTION, self::EXCLUSIVE_MENTION)) { if (Tag::isType($tag, self::MENTION, self::EXCLUSIVE_MENTION)) {
$type = self::MENTION; $type = self::MENTION;
} else { } else {
$type = self::IMPLICIT_MENTION; $type = self::IMPLICIT_MENTION;
@ -266,7 +265,7 @@ class Term
]); ]);
// Search for mentions // Search for mentions
if (self::isType($tag, self::MENTION, self::EXCLUSIVE_MENTION) if (Tag::isType($tag, self::MENTION, self::EXCLUSIVE_MENTION)
&& ( && (
strpos($link, $profile_base_friendica) !== false strpos($link, $profile_base_friendica) !== false
|| strpos($link, $profile_base_diaspora) !== false || strpos($link, $profile_base_diaspora) !== false
@ -351,23 +350,4 @@ class Term
// Clean up all tags // Clean up all tags
DBA::delete('term', ['otype' => self::OBJECT_TYPE_POST, 'oid' => $item_id, 'type' => $type]); DBA::delete('term', ['otype' => self::OBJECT_TYPE_POST, 'oid' => $item_id, 'type' => $type]);
} }
/**
* Check if the provided tag is of one of the provided term types.
*
* @param string $tag
* @param int ...$types
* @return bool
*/
public static function isType($tag, ...$types)
{
$tag_chars = [];
foreach ($types as $type) {
if (array_key_exists($type, self::TAG_CHARACTER)) {
$tag_chars[] = self::TAG_CHARACTER[$type];
}
}
return Strings::startsWith($tag, $tag_chars);
}
} }