ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
LegacyRequestBuilder.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
28
33{
34 public function buildRequest(Services $http, Factory $refinery, array $handlers): ?Request
35 {
36 // try to get target from query
37 $target = $http->wrapper()->query()->has("target")
38 ? $http->wrapper()->query()->retrieve(
39 "target",
40 $refinery->to()->string()
41 )
42 : null;
43 if ($target !== null) {
44 $target_parts = explode('_', (string) $target);
45 if (isset($target_parts[0]) && array_key_exists($target_parts[0], $handlers)) {
46 return null;
47 }
48
49 return new Request(
51 null,
52 [LegacyGotoHandler::TARGET => $target]
53 );
54 }
55
56 // try build target from path (since URL has been rewritten to goto/...)
57 $path = $http->request()->getUri()->getPath();
58 // get everything after /goto.php/ ot /go/
59 if (str_contains($path, StandardURIBuilder::LONG)) {
61 }
62
63 if (str_contains($path, StandardURIBuilder::SHORT)) {
65 }
67 $target_parts = explode('/', $path);
68 if (isset($target_parts[0]) && array_key_exists($target_parts[0], $handlers)) {
69 return null;
70 }
71 $ref_id = null;
72 if (isset($target_parts[1]) && is_numeric($target_parts[1])) {
73 $ref_id = new ReferenceId((int) $target_parts[1]);
74 $target = $target_parts[2] ?? '';
75 } else {
76 $target = $target_parts[1] ?? '';
77 }
78
79 return new Request(
81 $ref_id,
82 [LegacyGotoHandler::TARGET => str_replace('/', '_', $path)]
83 );
84 }
85}
Builds data types.
Definition: Factory.php:36
Class Services.
Definition: Services.php:38
buildRequest(Services $http, Factory $refinery, array $handlers)
$http
Definition: deliver.php:30
$ref_id
Definition: ltiauth.php:66
$path
Definition: ltiservices.php:30