]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Post/Delivery.php
Configuration is now stored in the "channel" section
[friendica.git] / src / Model / Post / Delivery.php
index 8d19f8c941136c319894e9dcfd96472a884f7e90..c53014fa516ff8ee6fbcfaeacedf428c72db4fed 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -35,14 +35,16 @@ class Delivery
         * @param integer $uri_id
         * @param string  $inbox
         * @param string  $created
+        * @param array   %receivers
         */
-       public static function add(int $uri_id, int $uid, string $inbox, string $created, string $command)
+       public static function add(int $uri_id, int $uid, string $inbox, string $created, string $command, array $receivers)
        {
                if (empty($uri_id)) {
                        throw new BadMethodCallException('Empty URI_id');
                }
 
-               $fields = ['uri-id' => $uri_id, 'uid' => $uid, 'inbox-id' => ItemURI::getIdByURI($inbox), 'created' => $created, 'command' => $command];
+               $fields = ['uri-id' => $uri_id, 'uid' => $uid, 'inbox-id' => ItemURI::getIdByURI($inbox),
+                       'created' => $created, 'command' => $command, 'receivers' => json_encode($receivers)];
 
                DBA::insert('post-delivery', $fields, Database::INSERT_IGNORE);
        }
@@ -76,11 +78,23 @@ class Delivery
         */
        public static function incrementFailed(int $uri_id, string $inbox)
        {
-               return DBA::e('UPDATE `post-delivery` SET `failed` = `failed` + 1 WHERE `uri-id` = ? AND `inbox-id` = ?', $uri_id, ItemURI::getIdByURI($inbox));
+               return DBA::update('post-delivery', ["`failed` = `failed` + 1"], ['uri-id' => $uri_id, 'inbox-id' => ItemURI::getIdByURI($inbox)]);
        }
 
        public static function selectForInbox(string $inbox)
        {
-               return DBA::selectToArray('post-delivery', [], ['inbox-id' => ItemURI::getIdByURI($inbox)], ['order' => ['created']]);
+               $rows = DBA::select('post-delivery', [], ["`inbox-id` = ? AND `failed` < ?", ItemURI::getIdByURI($inbox), DI::config()->get('system', 'worker_defer_limit')], ['order' => ['created']]);
+               $deliveries = [];
+               while ($row = DBA::fetch($rows)) {
+                       if (!empty($row['receivers'])) {
+                               $row['receivers'] = json_decode($row['receivers'], true);
+                       } else {
+                               $row['receivers'] = [];
+                       }
+                       $deliveries[] = $row;
+               }
+               DBA::close($rows);
+
+               return $deliveries;
        }
 }