コード例 #1
0
ファイル: PubSubHandler.php プロジェクト: strimoid/strimoid
 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);
     }
 }
コード例 #2
0
 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']);
 }
コード例 #3
0
ファイル: AuthController.php プロジェクト: strimoid/strimoid
 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];
 }
コード例 #4
0
ファイル: Content.php プロジェクト: strimoid/strimoid
 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);
 }
コード例 #5
0
 /**
  * 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);
         }
     }
 }
コード例 #6
0
 /**
  * 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);
 }