. * */ namespace Friendica\Factory\Api\Mastodon; use Friendica\BaseFactory; use Friendica\Collection\Api\Mastodon\Emojis; class Emoji extends BaseFactory { public function create(string $shortcode, string $url): \Friendica\Object\Api\Mastodon\Emoji { return new \Friendica\Object\Api\Mastodon\Emoji($shortcode, $url); } /** * Creates an emoji collection from shortcode => image mappings. * * Only emojis with shortcodes of the form of ':shortcode:' are passed in the collection. * * @param array $smilies * @param bool $extract_url * * @return Emojis */ public function createCollectionFromArray(array $smilies, bool $extract_url = true): Emojis { $prototype = null; $emojis = []; foreach ($smilies as $shortcode => $url) { if (substr($shortcode, 0, 1) == ':' && substr($shortcode, -1) == ':') { if ($extract_url) { if (preg_match('/src="(.+?)"/', $url, $matches)) { $url = $matches[1]; } else { continue; } } $shortcode = trim($shortcode, ':'); if ($prototype === null) { $prototype = $this->create($shortcode, $url); $emojis[] = $prototype; } else { $emojis[] = \Friendica\Object\Api\Mastodon\Emoji::createFromPrototype($prototype, $shortcode, $url); } } } return new Emojis($emojis); } /** * @param array $smilies * * @return Emojis */ public function createCollectionFromSmilies(array $smilies): Emojis { return self::createCollectionFromArray(array_combine($smilies['texts'], $smilies['icons'])); } }