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