From 6e06e0cf202e85ad28f49f69b6bf7e7a6ccd79d6 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 30 Nov 2020 06:59:00 +0000 Subject: [PATCH] New class for delayed postings --- src/Protocol/Feed.php | 17 ++-------- src/Worker/DelayedPublish.php | 58 +++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 src/Worker/DelayedPublish.php diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index eb6f71ff50..0c945a1809 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -29,6 +29,7 @@ use Friendica\Content\Text\HTML; use Friendica\Core\Cache\Duration; use Friendica\Core\Logger; use Friendica\Core\Protocol; +use Friendica\Core\Worker; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\Contact; @@ -634,20 +635,8 @@ class Feed $post_delay += $delay; } - $id = Item::insert($posting['item'], $posting['notify']); - - Logger::notice("Feed for contact " . $contact["url"] . " stored under id " . $id); - - if (!empty($id) && (!empty($posting['taglist']) || !empty($posting['attachments']))) { - $feeditem = Item::selectFirst(['uri-id'], ['id' => $id]); - foreach ($posting['taglist'] as $tag) { - Tag::store($feeditem['uri-id'], Tag::HASHTAG, $tag); - } - foreach ($posting['attachments'] as $attachment) { - $attachment['uri-id'] = $feeditem['uri-id']; - Post\Media::insert($attachment); - } - } + Worker::add(['priority' => PRIORITY_HIGH, 'delayed' => $post_delay], + 'DelayedPublish', $posting['item'], $posting['notify'], $posting['taglist'], $posting['attachments']); } } diff --git a/src/Worker/DelayedPublish.php b/src/Worker/DelayedPublish.php new file mode 100644 index 0000000000..3dad540481 --- /dev/null +++ b/src/Worker/DelayedPublish.php @@ -0,0 +1,58 @@ +. + * + */ + +namespace Friendica\Worker; + +use Friendica\Core\Logger; +use Friendica\Model\Item; +use Friendica\Model\Post; +use Friendica\Model\Tag; + +class DelayedPublish +{ + /** + * Publish a post, used for delayed postings + * + * @param array $item + * @param integer $notify + * @param array $taglist + * @param array $attachments + * @return void + */ + public static function execute(array $item, int $notify = 0, array $taglist = [], array $attachments = []) + { + $id = Item::insert($item, $notify); + + Logger::notice('Post stored', ['id' => $id, 'uid' => $item['uid'], 'cid' => $item['contact-id']]); + + if (!empty($id) && (!empty($taglist) || !empty($attachments))) { + $feeditem = Item::selectFirst(['uri-id'], ['id' => $id]); + foreach ($taglist as $tag) { + Tag::store($feeditem['uri-id'], Tag::HASHTAG, $tag); + } + foreach ($attachments as $attachment) { + $attachment['uri-id'] = $feeditem['uri-id']; + Post\Media::insert($attachment); + } + } + + } +}