+ const UNKNOWN = 0;
+ const HASHTAG = 1;
+ const MENTION = 2;
+ const CATEGORY = 3;
+ const PCATEGORY = 4;
+ const FILE = 5;
+ const SAVEDSEARCH = 6;
+ const CONVERSATION = 7;
+ /**
+ * An implicit mention is a mention in a comment body that is redundant with the threading information.
+ */
+ const IMPLICIT_MENTION = 8;
+ /**
+ * An exclusive mention transfers the ownership of the post to the target account, usually a forum.
+ */
+ const EXCLUSIVE_MENTION = 9;
+
+ const TAG_CHARACTER = [
+ self::HASHTAG => '#',
+ self::MENTION => '@',
+ self::IMPLICIT_MENTION => '%',
+ self::EXCLUSIVE_MENTION => '!',
+ ];
+
+ const OBJECT_TYPE_POST = 1;
+ const OBJECT_TYPE_PHOTO = 2;
+
+ /**
+ * Generates the legacy item.tag field comma-separated BBCode string from an item ID.
+ * Includes only hashtags, implicit and explicit mentions.
+ *
+ * @param int $item_id
+ * @return string
+ * @throws \Exception
+ */
+ public static function tagTextFromItemId($item_id)