ILIAS  trunk Revision v13.0_alpha-52-g21c366bbdd4
StaticUrlHandler.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
29
30class StaticURLHandler extends BaseHandler implements Handler
31{
32 public function getNamespace(): string
33 {
34 return 'exc';
35 }
36
37 public function handle(Request $request, Context $context, Factory $response_factory): Response
38 {
39 global $DIC;
40 $main_tpl = $DIC->ui()->mainTemplate();
41 $lng = $DIC->language();
42 $uri = null;
43
44 $ref_id = $request->getReferenceId()?->toInt() ?? 0;
45 $additional_params = $request->getAdditionalParameters() ?? [];
46 $last = "";
47 if (count($additional_params) > 0) {
48 $last = (string) $additional_params[count($additional_params) - 1];
49 }
50 $ass_id = (int) ($additional_params[0] ?? 0);
51 $action = null;
52 $member = null;
53
54 if (!$context->exists($ref_id) || ($ass_id > 0
56 return $response_factory->cannot();
57 }
58
59 switch ($last) {
60 case "download":
61 case "setdownload":
62 $action = $additional_params[2] ?? "";
63 $member = $additional_params[1];
64 break;
65
66 case "given":
67 $action = $additional_params[2] ?? "";
68 $peer_id = (int) ($additional_params[1] ?? 0);
69 break;
70
71 case "grades":
72 case "received":
73 $action = $additional_params[1] ?? "";
74 break;
75 }
76
77 $ctrl = $context->ctrl();
78
79 $ctrl->setParameterByClass(\ilExerciseHandlerGUI::class, "ref_id", $ref_id);
80
81 if ($context->checkPermission("read", $ref_id)) {
82
83 if ($ass_id > 0) {
84 $ctrl->setParameterByClass(\ilExerciseManagementGUI::class, "ass_id", $ass_id);
85 }
86
87 switch ($action) {
88 case "grades":
89 $uri = $ctrl->getLinkTargetByClass(
90 [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilExerciseManagementGUI::class],
91 "members"
92 );
93 break;
94
95 case "setdownload":
96 $ctrl->setParameterByClass(\ilExerciseHandlerGUI::class, "member_id", $member);
97 $uri = $ctrl->getLinkTargetByClass(
98 array(\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilExerciseManagementGUI::class),
99 "waitingDownload"
100 );
101 break;
102
103 case "given":
104 $ctrl->setParameterByClass(\ilObjExerciseGUI::class, "ass_id", $ass_id);
105 $ctrl->setParameterByClass(\ilObjExerciseGUI::class, "peer_id", $peer_id);
106 $uri = $ctrl->getLinkTargetByClass(
107 array(\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilAssignmentPresentationGUI::class,
108 \ilExSubmissionGUI::class, \ilExPeerReviewGUI::class),
109 "editPeerReviewItem"
110 );
111 break;
112
113 case "received":
114 $ctrl->setParameterByClass(\ilObjExerciseGUI::class, "ass_id", $ass_id);
115 $uri = $ctrl->getLinkTargetByClass(
116 array(\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilAssignmentPresentationGUI::class,
117 \ilExSubmissionGUI::class, \ilExPeerReviewGUI::class),
118 "showReceivedPeerReview"
119 );
120 break;
121
122 default:
123 if ($ass_id > 0) {
124 $ctrl->setParameterByClass(\ilObjExerciseGUI::class, "ass_id", $ass_id);
125 $uri = $ctrl->getLinkTargetByClass(
126 [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilAssignmentPresentationGUI::class],
127 ""
128 );
129 } else {
130 $uri = $ctrl->getLinkTargetByClass(
131 [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class],
132 "showOverview"
133 );
134 }
135 break;
136
137 }
138 } elseif ($context->checkPermission("visible", $ref_id)) {
139 $uri = $ctrl->getLinkTargetByClass(
140 [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class],
141 "infoScreen"
142 );
143 }
144 if (is_null($uri)) {
145 if (!$context->isUserLoggedIn()) {
146 return $response_factory->loginFirst();
147 }
148 return $response_factory->cannotReach();
149 }
150 return $response_factory->can($uri);
151 }
152
153}
exists(int $ref_id)
Definition: Context.php:99
checkPermission(string $permission, int $ref_id)
Definition: Context.php:89
loginFirst()
Convenience: the Handler cannot serve the target with the current permissions.
Definition: Factory.php:74
cannotReach()
The target exists, but the CURRENT user has no permission to reach it.
Definition: Factory.php:61
can(string $uri_path, bool $shift=false)
The Handler successfully resolved the target.
Definition: Factory.php:88
cannot()
The Handler cannot process the given Request at all, e.g.
Definition: Factory.php:47
static lookupExerciseId(int $a_ass_id)
static _lookupObjectId(int $ref_id)
$request
@ilCtrl_Calls ilObjLearningSequenceContentGUI: ilObjLearningSequenceConditionsGUI
Definition: ltiauth.php:39
global $lng
Definition: privfeed.php:26
global $DIC
Definition: shib_login.php:26