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
|
<?php
namespace JsonApi\Routes\Files\Rel;
use Psr\Http\Message\ServerRequestInterface as Request;
use JsonApi\Errors\RecordNotFoundException;
use JsonApi\Routes\Files\Authority;
use JsonApi\Routes\RelationshipsController;
class FileRefsOfFile extends RelationshipsController
{
protected $allowedPagingParameters = ['offset', 'limit'];
/**
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function fetchRelationship(Request $request, $related)
{
$refs = $related->refs->filter(
function ($ref) use ($request) {
return Authority::canShowFileRef($this->getUser($request), $ref);
}
);
$total = count($refs);
list($offset, $limit) = $this->getOffsetAndLimit();
return $this->getPaginatedIdentifiersResponse(
$refs->limit($offset, $limit),
$total,
$this->getRelationshipLinks($related),
[
'total-refs' => count($related->refs),
]
);
}
protected function findRelated(array $args)
{
if (!$related = \File::find($args['id'])) {
throw new RecordNotFoundException();
}
return $related;
}
protected function authorize(Request $request, $resource)
{
switch ($request->getMethod()) {
case 'GET':
return Authority::canShowFile($this->getUser($request), $resource);
default:
return false;
}
}
/**
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function getRelationshipSelfLink($resource, $schema, $userData)
{
return $schema->getRelationshipSelfLink($resource, 'file-refs');
}
/**
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function getRelationshipRelatedLink($resource, $schema, $userData)
{
return $schema->getRelationshipRelatedLink($resource, 'file-refs');
}
}
|