ILIAS  trunk Revision v11.0_alpha-1723-g8e69f309bab
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
StaticUrlHandler.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
29 
30 class 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  $exc_domain = $DIC->exercise()->internal()->domain();
44 
45  $ref_id = $request->getReferenceId()?->toInt() ?? 0;
46  $additional_params = $request->getAdditionalParameters() ?? [];
47  $last = "";
48  if (count($additional_params) > 0) {
49  $last = (string) $additional_params[count($additional_params) - 1];
50  }
51  $ass_id = (int) ($additional_params[0] ?? 0);
52  $action = null;
53  $member = null;
54 
55  switch ($last) {
56  case "download":
57  case "setdownload":
58  $action = $additional_params[2] ?? "";
59  $member = $additional_params[1];
60  break;
61 
62  case "given":
63  $action = $additional_params[2] ?? "";
64  $peer_id = (int) ($additional_params[1] ?? 0);
65  break;
66 
67  case "grades":
68  case "received":
69  $action = $additional_params[1] ?? "";
70  break;
71  }
72 
73  $ctrl = $context->ctrl();
74 
75  $ctrl->setParameterByClass(\ilExerciseHandlerGUI::class, "ref_id", $ref_id);
76 
77  if ($context->checkPermission("read", $ref_id)) {
78 
79  if ($ass_id > 0) {
80  $ctrl->setParameterByClass(\ilExerciseManagementGUI::class, "ass_id", $ass_id);
81  }
82 
83  switch ($action) {
84  case "grades":
85  $uri = $ctrl->getLinkTargetByClass(
86  [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilExerciseManagementGUI::class],
87  "members"
88  );
89  break;
90 
91  case "setdownload":
92  $ctrl->setParameterByClass(\ilExerciseHandlerGUI::class, "member_id", $member);
93  $uri = $ctrl->getLinkTargetByClass(
94  array(\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilExerciseManagementGUI::class),
95  "waitingDownload"
96  );
97  break;
98 
99  case "given":
100  $ctrl->setParameterByClass(\ilObjExerciseGUI::class, "ass_id", $ass_id);
101  $ctrl->setParameterByClass(\ilObjExerciseGUI::class, "peer_id", $peer_id);
102  $uri = $ctrl->getLinkTargetByClass(
103  array(\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilAssignmentPresentationGUI::class,
104  \ilExSubmissionGUI::class, \ilExPeerReviewGUI::class),
105  "editPeerReviewItem"
106  );
107  break;
108 
109  case "received":
110  $ctrl->setParameterByClass(\ilObjExerciseGUI::class, "ass_id", $ass_id);
111  $uri = $ctrl->getLinkTargetByClass(
112  array(\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilAssignmentPresentationGUI::class,
113  \ilExSubmissionGUI::class, \ilExPeerReviewGUI::class),
114  "showReceivedPeerReview"
115  );
116  break;
117 
118  default:
119  if ($ass_id > 0) {
120  $ctrl->setParameterByClass(\ilObjExerciseGUI::class, "ass_id", $ass_id);
121  $uri = $ctrl->getLinkTargetByClass(
122  [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilAssignmentPresentationGUI::class],
123  ""
124  );
125  } else {
126  $uri = $ctrl->getLinkTargetByClass(
127  [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class],
128  "showOverview"
129  );
130  }
131  break;
132 
133  }
134  } elseif ($context->checkPermission("visible", $ref_id)) {
135  $uri = $ctrl->getLinkTargetByClass(
136  [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class],
137  "infoScreen"
138  );
139  }
140  if (is_null($uri)) {
141  if ($exc_domain->user()->isAnonymous() || $exc_domain->user()->getId() == 0) {
142  return $response_factory->loginFirst();
143  } else {
144  return $response_factory->cannot();
145  }
146  }
147  return $response_factory->can($uri);
148  }
149 
150 }
checkPermission(string $permission, int $ref_id)
Definition: Context.php:54
$context
Definition: webdav.php:31
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
$ref_id
Definition: ltiauth.php:65
global $DIC
Definition: shib_login.php:22
global $lng
Definition: privfeed.php:31