]> git.mxchange.org Git - friendica.git/blobdiff - src/Factory/Api/Mastodon/Emoji.php
Tests ...
[friendica.git] / src / Factory / Api / Mastodon / Emoji.php
index 770966a776f150b6dc8a0fbac113f7dd5a4bbe0d..5e28f0d0d3475e5ad0a15b2080086a3003ce71ce 100644 (file)
@@ -1,46 +1,59 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2021, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Factory\Api\Mastodon;
 
-use Friendica\App\BaseURL;
 use Friendica\BaseFactory;
-use Friendica\Model\APContact;
-use Friendica\Model\Contact;
-use Friendica\Network\HTTPException;
-use Psr\Log\LoggerInterface;
+use Friendica\Collection\Api\Mastodon\Emojis;
 
 class Emoji extends BaseFactory
 {
-       /** @var BaseURL */
-       protected $baseUrl;
-
-       public function __construct(LoggerInterface $logger, BaseURL $baseURL)
+       public function create(string $shortcode, string $url): \Friendica\Object\Api\Mastodon\Emoji
        {
-               parent::__construct($logger);
-
-               $this->baseUrl = $baseURL;
+               return new \Friendica\Object\Api\Mastodon\Emoji($shortcode, $url);
        }
 
        /**
-        * @param int $contactId
-        * @param int $uid        User Id
-        * @return \Friendica\Api\Entity\Mastodon\Account
-        * @throws HTTPException\InternalServerErrorException
-        * @throws \ImagickException
+        * @param array $smilies
+        * @return Emojis
         */
-       public function createFromContactId(int $contactId, $uid = 0)
+       public function createCollectionFromSmilies(array $smilies): Emojis
        {
-               $cdata = Contact::getPublicAndUserContacID($contactId, $uid);
-               if (!empty($cdata)) {
-                       $publicContact = Contact::getById($cdata['public']);
-                       $userContact = Contact::getById($cdata['user']);
-               } else {
-                       $publicContact = Contact::getById($contactId);
-                       $userContact = [];
-               }
+               $prototype = null;
 
-               $apcontact = APContact::getByURL($publicContact['url'], false);
+               $emojis = [];
+
+               foreach ($smilies['texts'] as $key => $shortcode) {
+                       if (preg_match('/src="(.+?)"/', $smilies['icons'][$key], $matches)) {
+                               $url = $matches[1];
+
+                               if ($prototype === null) {
+                                       $prototype = $this->create($shortcode, $url);
+                                       $emojis[]  = $prototype;
+                               } else {
+                                       $emojis[] = \Friendica\Object\Api\Mastodon\Emoji::createFromPrototype($prototype, $shortcode, $url);
+                               }
+                       };
+               }
 
-               return new \Friendica\Api\Entity\Mastodon\Account($this->baseUrl, $publicContact, $apcontact, $userContact);
+               return new Emojis($emojis);
        }
 }