]> git.mxchange.org Git - friendica.git/commitdiff
Extract validateItemData() into ItemInserter
authorArt4 <art4@wlabs.de>
Thu, 23 Jan 2025 09:26:58 +0000 (09:26 +0000)
committerArt4 <art4@wlabs.de>
Thu, 23 Jan 2025 09:26:58 +0000 (09:26 +0000)
src/Model/Item.php
src/Model/ItemInserter.php

index 7d6318846169b63cb1dabff1897a290b6d73bb88..5fdc57647f301dd927a52240b00bef7064730c02 100644 (file)
@@ -826,7 +826,12 @@ class Item
         */
        public static function insert(array $item, int $notify = 0, bool $post_local = true): int
        {
-               $itemInserter = new ItemInserter(DI::contentItem(), DI::activity());
+               $itemInserter = new ItemInserter(
+                       DI::contentItem(),
+                       DI::activity(),
+                       DI::logger(),
+                       DI::baseUrl()
+               );
 
                $orig_item = $item;
 
@@ -890,7 +895,7 @@ class Item
                        }
                }
 
-               $item = self::validateItemData($item, $itemInserter);
+               $item = $itemInserter->validateItemData($item);
 
                // Ensure that there is an avatar cache
                Contact::checkAvatarCache($item['author-id']);
@@ -1337,82 +1342,6 @@ class Item
                return $post_user_id;
        }
 
-       private static function validateItemData(array $item, ItemInserter $itemInserter): array
-       {
-               $item['wall']          = intval($item['wall'] ?? 0);
-               $item['extid']         = trim($item['extid'] ?? '');
-               $item['author-name']   = trim($item['author-name'] ?? '');
-               $item['author-link']   = trim($item['author-link'] ?? '');
-               $item['author-avatar'] = trim($item['author-avatar'] ?? '');
-               $item['owner-name']    = trim($item['owner-name'] ?? '');
-               $item['owner-link']    = trim($item['owner-link'] ?? '');
-               $item['owner-avatar']  = trim($item['owner-avatar'] ?? '');
-               $item['received']      = (isset($item['received'])  ? DateTimeFormat::utc($item['received'])  : DateTimeFormat::utcNow());
-               $item['created']       = (isset($item['created'])   ? DateTimeFormat::utc($item['created'])   : $item['received']);
-               $item['edited']        = (isset($item['edited'])    ? DateTimeFormat::utc($item['edited'])    : $item['created']);
-               $item['changed']       = (isset($item['changed'])   ? DateTimeFormat::utc($item['changed'])   : $item['created']);
-               $item['commented']     = (isset($item['commented']) ? DateTimeFormat::utc($item['commented']) : $item['created']);
-               $item['title']         = substr(trim($item['title'] ?? ''), 0, 255);
-               $item['location']      = trim($item['location'] ?? '');
-               $item['coord']         = trim($item['coord'] ?? '');
-               $item['visible']       = (isset($item['visible']) ? intval($item['visible']) : 1);
-               $item['deleted']       = 0;
-               $item['verb']          = trim($item['verb'] ?? '');
-               $item['object-type']   = trim($item['object-type'] ?? '');
-               $item['object']        = trim($item['object'] ?? '');
-               $item['target-type']   = trim($item['target-type'] ?? '');
-               $item['target']        = trim($item['target'] ?? '');
-               $item['plink']         = substr(trim($item['plink'] ?? ''), 0, 255);
-               $item['allow_cid']     = trim($item['allow_cid'] ?? '');
-               $item['allow_gid']     = trim($item['allow_gid'] ?? '');
-               $item['deny_cid']      = trim($item['deny_cid'] ?? '');
-               $item['deny_gid']      = trim($item['deny_gid'] ?? '');
-               $item['private']       = intval($item['private'] ?? self::PUBLIC);
-               $item['body']          = trim($item['body'] ?? '');
-               $item['raw-body']      = trim($item['raw-body'] ?? $item['body']);
-               $item['app']           = trim($item['app'] ?? '');
-               $item['origin']        = intval($item['origin'] ?? 0);
-               $item['postopts']      = trim($item['postopts'] ?? '');
-               $item['resource-id']   = trim($item['resource-id'] ?? '');
-               $item['event-id']      = intval($item['event-id'] ?? 0);
-               $item['inform']        = trim($item['inform'] ?? '');
-               $item['file']          = trim($item['file'] ?? '');
-
-               // Items cannot be stored before they happen ...
-               if ($item['created'] > DateTimeFormat::utcNow()) {
-                       $item['created'] = DateTimeFormat::utcNow();
-               }
-
-               // We haven't invented time travel by now.
-               if ($item['edited'] > DateTimeFormat::utcNow()) {
-                       $item['edited'] = DateTimeFormat::utcNow();
-               }
-
-               $item['plink'] = ($item['plink'] ?? '') ?: DI::baseUrl() . '/display/' . urlencode($item['guid']);
-
-               $item['gravity'] = $itemInserter->getGravity($item);
-
-               if ($item['gravity'] === self::GRAVITY_UNKNOWN) {
-                       DI::logger()->info('Unknown gravity for verb', ['verb' => $item['verb']]);
-               }
-
-               $default = [
-                       'url'   => $item['author-link'], 'name' => $item['author-name'],
-                       'photo' => $item['author-avatar'], 'network' => $item['network']
-               ];
-               $item['author-id'] = ($item['author-id'] ?? 0) ?: Contact::getIdForURL($item['author-link'], 0, null, $default);
-
-               $default = [
-                       'url'   => $item['owner-link'], 'name' => $item['owner-name'],
-                       'photo' => $item['owner-avatar'], 'network' => $item['network']
-               ];
-               $item['owner-id'] = ($item['owner-id'] ?? 0) ?: Contact::getIdForURL($item['owner-link'], 0, null, $default);
-
-               $item['post-reason'] = self::getPostReason($item);
-
-               return $item;
-       }
-
        private static function handleToplevelParent(array $item, array $toplevel_parent, bool $defined_permissions): array
        {
                $parent_id             = (int) $toplevel_parent['id'];
index 7576fce203d1056ad84e9a6eb663de5eaf53bbb6..77e58ee1549330dc436afcbbab233157dd0d817c 100644 (file)
@@ -7,8 +7,11 @@
 
 namespace Friendica\Model;
 
+use Friendica\App\BaseURL;
 use Friendica\Content\Item as ItemContent;
 use Friendica\Protocol\Activity;
+use Friendica\Util\DateTimeFormat;
+use Psr\Log\LoggerInterface;
 
 /**
  * A helper class for inserting an Item Model
@@ -23,10 +26,20 @@ final class ItemInserter
 
        private Activity $activity;
 
-       public function __construct(ItemContent $itemContent, Activity $activity)
-       {
+       private LoggerInterface $logger;
+
+       private string $baseUrl;
+
+       public function __construct(
+               ItemContent $itemContent,
+               Activity $activity,
+               LoggerInterface $logger,
+               BaseURL $baseURL,
+       ) {
                $this->itemContent = $itemContent;
                $this->activity    = $activity;
+               $this->logger      = $logger;
+               $this->baseUrl     = $baseURL->__toString();
        }
 
        public function prepareOriginPost(array $item): array
@@ -58,12 +71,88 @@ final class ItemInserter
                return $item;
        }
 
+       public function validateItemData(array $item): array
+       {
+               $item['wall']          = intval($item['wall'] ?? 0);
+               $item['extid']         = trim($item['extid'] ?? '');
+               $item['author-name']   = trim($item['author-name'] ?? '');
+               $item['author-link']   = trim($item['author-link'] ?? '');
+               $item['author-avatar'] = trim($item['author-avatar'] ?? '');
+               $item['owner-name']    = trim($item['owner-name'] ?? '');
+               $item['owner-link']    = trim($item['owner-link'] ?? '');
+               $item['owner-avatar']  = trim($item['owner-avatar'] ?? '');
+               $item['received']      = (isset($item['received'])  ? DateTimeFormat::utc($item['received'])  : DateTimeFormat::utcNow());
+               $item['created']       = (isset($item['created'])   ? DateTimeFormat::utc($item['created'])   : $item['received']);
+               $item['edited']        = (isset($item['edited'])    ? DateTimeFormat::utc($item['edited'])    : $item['created']);
+               $item['changed']       = (isset($item['changed'])   ? DateTimeFormat::utc($item['changed'])   : $item['created']);
+               $item['commented']     = (isset($item['commented']) ? DateTimeFormat::utc($item['commented']) : $item['created']);
+               $item['title']         = substr(trim($item['title'] ?? ''), 0, 255);
+               $item['location']      = trim($item['location'] ?? '');
+               $item['coord']         = trim($item['coord'] ?? '');
+               $item['visible']       = (isset($item['visible']) ? intval($item['visible']) : 1);
+               $item['deleted']       = 0;
+               $item['verb']          = trim($item['verb'] ?? '');
+               $item['object-type']   = trim($item['object-type'] ?? '');
+               $item['object']        = trim($item['object'] ?? '');
+               $item['target-type']   = trim($item['target-type'] ?? '');
+               $item['target']        = trim($item['target'] ?? '');
+               $item['plink']         = substr(trim($item['plink'] ?? ''), 0, 255);
+               $item['allow_cid']     = trim($item['allow_cid'] ?? '');
+               $item['allow_gid']     = trim($item['allow_gid'] ?? '');
+               $item['deny_cid']      = trim($item['deny_cid'] ?? '');
+               $item['deny_gid']      = trim($item['deny_gid'] ?? '');
+               $item['private']       = intval($item['private'] ?? Item::PUBLIC);
+               $item['body']          = trim($item['body'] ?? '');
+               $item['raw-body']      = trim($item['raw-body'] ?? $item['body']);
+               $item['app']           = trim($item['app'] ?? '');
+               $item['origin']        = intval($item['origin'] ?? 0);
+               $item['postopts']      = trim($item['postopts'] ?? '');
+               $item['resource-id']   = trim($item['resource-id'] ?? '');
+               $item['event-id']      = intval($item['event-id'] ?? 0);
+               $item['inform']        = trim($item['inform'] ?? '');
+               $item['file']          = trim($item['file'] ?? '');
+
+               // Items cannot be stored before they happen ...
+               if ($item['created'] > DateTimeFormat::utcNow()) {
+                       $item['created'] = DateTimeFormat::utcNow();
+               }
+
+               // We haven't invented time travel by now.
+               if ($item['edited'] > DateTimeFormat::utcNow()) {
+                       $item['edited'] = DateTimeFormat::utcNow();
+               }
+
+               $item['plink'] = ($item['plink'] ?? '') ?: $this->baseUrl . '/display/' . urlencode($item['guid']);
+
+               $item['gravity'] = $this->getGravity($item);
+
+               if ($item['gravity'] === Item::GRAVITY_UNKNOWN) {
+                       $this->logger->info('Unknown gravity for verb', ['verb' => $item['verb']]);
+               }
+
+               $default = [
+                       'url'   => $item['author-link'], 'name' => $item['author-name'],
+                       'photo' => $item['author-avatar'], 'network' => $item['network']
+               ];
+               $item['author-id'] = ($item['author-id'] ?? 0) ?: Contact::getIdForURL($item['author-link'], 0, null, $default);
+
+               $default = [
+                       'url'   => $item['owner-link'], 'name' => $item['owner-name'],
+                       'photo' => $item['owner-avatar'], 'network' => $item['network']
+               ];
+               $item['owner-id'] = ($item['owner-id'] ?? 0) ?: Contact::getIdForURL($item['owner-link'], 0, null, $default);
+
+               $item['post-reason'] = Item::getPostReason($item);
+
+               return $item;
+       }
+
        /**
         * Get the gravity for the given item array
         *
         * @return int gravity
         */
-       public function getGravity(array $item): int
+       private function getGravity(array $item): int
        {
                if (isset($item['gravity'])) {
                        return intval($item['gravity']);