X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FPost%2FDelivery.php;h=c53014fa516ff8ee6fbcfaeacedf428c72db4fed;hb=59a822ee872647b3680220ead282438c857d5f5b;hp=9ccfdc15a6bdd24888c9d756f38a0216db8cf8fd;hpb=a943dbb420ca81e63b8ec3c1e508d55004424daf;p=friendica.git diff --git a/src/Model/Post/Delivery.php b/src/Model/Post/Delivery.php index 9ccfdc15a6..c53014fa51 100644 --- a/src/Model/Post/Delivery.php +++ b/src/Model/Post/Delivery.php @@ -1,6 +1,6 @@ $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); } @@ -57,6 +60,16 @@ class Delivery DBA::delete('post-delivery', ['uri-id' => $uri_id, 'inbox-id' => ItemURI::getIdByURI($inbox)]); } + /** + * Remove failed posts for an inbox + * + * @param string $inbox + */ + public static function removeFailed(string $inbox) + { + DBA::delete('post-delivery', ["`inbox-id` = ? AND `failed` >= ?", ItemURI::getIdByURI($inbox), DI::config()->get('system', 'worker_defer_limit')]); + } + /** * Increment "failed" counter for the given inbox and post * @@ -65,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` = ? AND `failed` < ?", ItemURI::getIdByURI($inbox), 15], ['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; } }