From 243c62e73f44d9597dd6d382a14380a13ec9b313 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 3 Nov 2018 21:24:06 -0600 Subject: [PATCH] Add SharePipeline job --- app/Jobs/SharePipeline/SharePipeline.php | 79 ++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 app/Jobs/SharePipeline/SharePipeline.php diff --git a/app/Jobs/SharePipeline/SharePipeline.php b/app/Jobs/SharePipeline/SharePipeline.php new file mode 100644 index 000000000..8d72376cb --- /dev/null +++ b/app/Jobs/SharePipeline/SharePipeline.php @@ -0,0 +1,79 @@ +status = $status; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $status = $this->status; + $actor = $this->status->profile; + $target = $this->status->parent()->profile; + + if ($status->url !== null) { + // Ignore notifications to remote statuses + return; + } + + $exists = Notification::whereProfileId($status->profile_id) + ->whereActorId($actor->id) + ->whereAction('like') + ->whereItemId($status->id) + ->whereItemType('App\Status') + ->count(); + + if ($actor->id === $status->profile_id || $exists !== 0) { + return true; + } + + try { + $notification = new Notification(); + $notification->profile_id = $status->profile_id; + $notification->actor_id = $actor->id; + $notification->action = 'like'; + $notification->message = $like->toText(); + $notification->rendered = $like->toHtml(); + $notification->item_id = $status->id; + $notification->item_type = "App\Status"; + $notification->save(); + + Cache::forever('notification.'.$notification->id, $notification); + + $redis = Redis::connection(); + $key = config('cache.prefix').':user.'.$status->profile_id.'.notifications'; + $redis->lpush($key, $notification->id); + } catch (Exception $e) { + Log::error($e); + } + } +}