ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilLTITool.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21use ceLTIc\LTI\Context;
22use ceLTIc\LTI\ResourceLink;
23use ceLTIc\LTI\Tool;
24use ceLTIc\LTI\User;
26
32class ilLTITool extends Tool
33{
37 protected ?\ilLogger $logger = null;
38
43 public function __construct(ilLTIDataConnector $dataConnector)
44 {
45 $this->logger = ilLoggerFactory::getLogger('ltis');
46 // $this->initialize();
47 if (empty($dataConnector)) {
48 $dataConnector = ilLTIDataConnector::getDataConnector();
49 }
50 $this->dataConnector = $dataConnector;
51 //parent::__construct($dataConnector);
52 $this->setParameterConstraint('resource_link_id', true, 50, array('basic-lti-launch-request'));
53 $this->setParameterConstraint('user_id', true, 64, array('basic-lti-launch-request'));
54 $this->setParameterConstraint('roles', true, null, array('basic-lti-launch-request'));
55 $this->setParameterConstraint('lis_person_contact_email_primary', true, 80, array('basic-lti-launch-request'));
56 }
57
61 protected function onLaunch(): void
62 {
63 // save/update current user
64 if ($this->userResult instanceof User) {
65 $this->logger->debug("onLaunch - user");
66 $this->userResult->save();
67 }
68
69 if ($this->context instanceof Context) {
70 $this->logger->debug("onLaunch - context");
71 $this->context->save();
72 }
73
74 if ($this->resourceLink instanceof ResourceLink) {
75 $this->logger->debug("onLaunch - resource");
76 $this->resourceLink->save();
77 }
78 }
79
80 public function parsePostBody(ArrayBasedRequestWrapper $postData): array
81 {
82 global $DIC;
83 $res = [];
84 foreach ($postData->keys() as $key) {
85 $res[$key] = $postData->retrieve($key, $DIC->refinery()->kindlyTo()->string());
86 }
87 return $res;
88 }
89
90 public function handleRequest(bool $strictMode = null, bool $disableCookieCheck = false, bool $generateWarnings = false): void
91 {
92 global $DIC;
93
94 $_POST = $this->parsePostBody($DIC->http()->wrapper()->post());
95 $_GET = $DIC->http()->request()->getQueryParams();
96
97 if (isset($_POST['lti_version']) && $_POST['lti_version'] === 'LTI-1p0') {
98 $_SERVER['REQUEST_URI'] = rtrim(preg_replace('/([?&])client_id=[^&]+(&|$)/', '$1', $_SERVER['REQUEST_URI']), '?&');
99 }
100
101 self::$authenticateUsingGet = true;
102
103 parent::handleRequest($strictMode, $disableCookieCheck, $generateWarnings);
104 }
105}
retrieve(string $key, Transformation $transformation)
@inheritDoc
static getDataConnector(mixed $db=null, string $dbTableNamePrefix='', string $type='')
LTI provider for LTI launch.
ilLogger $logger
parsePostBody(ArrayBasedRequestWrapper $postData)
handleRequest(bool $strictMode=null, bool $disableCookieCheck=false, bool $generateWarnings=false)
__construct(ilLTIDataConnector $dataConnector)
ilLTITool constructor.
onLaunch()
Process a valid launch request.
static getLogger(string $a_component_id)
Get component logger.
Component logger with individual log levels by component id.
$_GET['cmd']
Definition: lti.php:26
$_POST['cmd']
Definition: lti.php:27
$res
Definition: ltiservices.php:69
$_SERVER['HTTP_HOST']
Definition: raiseError.php:26
global $DIC
Definition: shib_login.php:26