public function onNewNotification(Notification $notification) { foreach ($notification->targets as $target) { $channelName = 'privateU' . $target->id; $notificationData = ['id' => $notification->hashId(), 'type' => $notification->getTypeDescription(), 'title' => $notification->title, 'img' => $notification->getThumbnailPath(), 'url' => $notification->getURL(true)]; Pusher::trigger($channelName, 'new-notification', $notificationData); } }
public function edit(Notification $notification) { if (!in_array(Auth::id(), array_column($notification->_targets, 'user_id'))) { App::abort(403, 'Access denied'); } $notification->target(['user_id' => Auth::id()])->update(Input::only('read')); return Response::json(['status' => 'ok']); }
private function getUserData() { $notifications = Notification::with(['user' => function ($q) { $q->select('avatar'); }])->target(auth()->id())->orderBy('created_at', 'desc')->take(15)->get(); $data = array_merge(user()->toArray(), ['subscribed_groups' => user()->subscribedGroups(), 'blocked_groups' => user()->blockedGroups(), 'moderated_groups' => user()->moderatedGroups(), 'folders' => user()->folders(), 'notifications' => $notifications]); return ['user' => $data]; }
public function __construct($attributes = []) { static::deleted(function (Content $content) { Notification::where('content_id', $this->getKey())->delete(); if (!$content->trashed()) { foreach ($this->comments() as $comment) { $comment->delete(); } } }); parent::__construct($attributes); }
/** * Add users as targets of notification. */ protected function addTargets(Notification $notification, array $users) { $sourceUser = $notification->user; foreach ($users as $targetUser) { if ($this->isNotMyselfOrBlockedByReceiver($sourceUser, $targetUser)) { $notification->targets()->attach($targetUser); } } }
/** * Send notifications to given users. * * @param array|string $targets * @param Closure $callback * @param User $sourceUser */ protected function sendNotifications($targets, Closure $callback, User $sourceUser) { $users = is_array($targets) ? $targets : $this->findMentionedUsers($targets); $notification = new Notification(); $notification->user()->associate($sourceUser); $callback($notification); $this->addPushTargets($notification, $users); $notification->save(); $this->addTargets($notification, $users); }