ILIAS  trunk Revision v11.0_alpha-1769-g99a433fe2dc
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 
21 namespace ILIAS\PermanentLink;
22 
29 
30 class StaticURLHandler extends BaseHandler implements Handler
31 {
32  public function getNamespace(): string
33  {
34  return 'blog';
35  }
36 
37  public function handle(Request $request, Context $context, Factory $response_factory): Response
38  {
39  global $DIC;
40 
41  $ctrl = $DIC->ctrl();
42  $access = $DIC->access();
43  $uri = "";
44 
45  $id = $request->getReferenceId()?->toInt() ?? 0;
46  $additional_params = $request->getAdditionalParameters() ?? [];
47 
48  $wsp = count($additional_params) > 0 &&
49  $additional_params[count($additional_params) - 1] === "_wsp";
50  $posting_id = 0;
51  if (is_numeric($additional_params[0] ?? "")) {
52  $posting_id = (int) $additional_params[0];
53  }
54  $edit = false;
55  if ($posting_id > 0 && ($additional_params[1] ?? "" === "edit")) {
56  $edit = true;
57  }
58  if ($posting_id > 0) {
59  $ctrl->setParameterByClass(\ilBlogPostingGUI::class, "blpg", $posting_id);
60  }
61 
62  if ($wsp) {
63  $ctrl->setParameterByClass(\ilObjBlogGUI::class, "wsp_id", $id);
64  if ($posting_id > 0) {
65  if ($edit) {
66  $uri = $ctrl->getLinkTargetByClass([
67  \ilDashboardGUI::class,
68  \ilPersonalWorkspaceGUI::class,
69  \ilObjBlogGUI::class,
70  \ilBlogPostingGUI::class,
71  ], "edit");
72  } else {
73  $uri = $ctrl->getLinkTargetByClass([
74  \ilSharedResourceGUI::class,
75  \ilObjBlogGUI::class,
76  \ilBlogPostingGUI::class,
77  ], "previewFullscreen");
78  }
79  } else {
80  $uri = $ctrl->getLinkTargetByClass([
81  \ilSharedResourceGUI::class,
82  \ilObjBlogGUI::class
83  ], "preview");
84  }
85  } else {
86  $ctrl->setParameterByClass(\ilRepositoryGUI::class, "ref_id", $id);
87  if ($posting_id > 0) {
88  if ($edit && $access->checkAccess("write", "", $id)) {
89  $uri = $ctrl->getLinkTargetByClass([
90  \ilRepositoryGUI::class,
91  \ilObjBlogGUI::class,
92  \ilBlogPostingGUI::class,
93  ], "edit");
94  } elseif ($access->checkAccess("read", "", $id)) {
95  $uri = $ctrl->getLinkTargetByClass([
96  \ilRepositoryGUI::class,
97  \ilObjBlogGUI::class,
98  \ilBlogPostingGUI::class,
99  ], "previewFullscreen");
100  }
101  } else {
102  if ($access->checkAccess("read", "", $id)) {
103  $uri = $ctrl->getLinkTargetByClass([
104  \ilRepositoryGUI::class,
105  \ilObjBlogGUI::class
106  ], "preview");
107  }
108  }
109 
110  if ($uri === "" &&
111  $access->checkAccess("visible", "", $id)) {
112  $uri = $ctrl->getLinkTargetByClass([
113  \ilRepositoryGUI::class,
114  \ilObjBlogGUI::class
115  ], "infoScreen");
116  }
117  }
118  return $response_factory->can($uri);
119  }
120 
121 }
$context
Definition: webdav.php:31
global $DIC
Definition: shib_login.php:22
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23