-
-
Notifications
You must be signed in to change notification settings - Fork 827
/
IndexAction.php
97 lines (82 loc) · 2.07 KB
/
IndexAction.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
/*
* This file is part of Flarum.
*
* (c) Toby Zerner <toby.zerner@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Flarum\Api\Actions\Notifications;
use Flarum\Core\Notifications\NotificationRepository;
use Flarum\Core\Exceptions\PermissionDeniedException;
use Flarum\Api\Actions\SerializeCollectionAction;
use Flarum\Api\JsonApiRequest;
use Tobscure\JsonApi\Document;
class IndexAction extends SerializeCollectionAction
{
/**
* @var NotificationRepository
*/
protected $notifications;
/**
* @inheritdoc
*/
public $serializer = 'Flarum\Api\Serializers\NotificationSerializer';
/**
* @inheritdoc
*/
public $include = [
'sender' => true,
'subject' => true,
'subject.discussion' => true
];
/**
* @inheritdoc
*/
public $link = [];
/**
* @inheritdoc
*/
public $limitMax = 50;
/**
* @inheritdoc
*/
public $limit = 10;
/**
* @inheritdoc
*/
public $sortFields = [];
/**
* @inheritdoc
*/
public $sort;
/**
* Instantiate the action.
*
* @param NotificationRepository $notifications
*/
public function __construct(NotificationRepository $notifications)
{
$this->notifications = $notifications;
}
/**
* Get the notification results, ready to be serialized and assigned to the
* document response.
*
* @param JsonApiRequest $request
* @param Document $document
* @return \Illuminate\Database\Eloquent\Collection
* @throws PermissionDeniedException
*/
protected function data(JsonApiRequest $request, Document $document)
{
$actor = $request->actor;
if ($actor->isGuest()) {
throw new PermissionDeniedException;
}
$actor->markNotificationsAsRead()->save();
return $this->notifications->findByUser($actor, $request->limit, $request->offset)
->load($request->include);
}
}