ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
class.ilLTITool.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
23 use ceLTIc\LTI\Tool;
24 use ceLTIc\LTI\User;
26 
32 class 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 }
$res
Definition: ltiservices.php:69
parsePostBody(ArrayBasedRequestWrapper $postData)
static getLogger(string $a_component_id)
Get component logger.
LTI provider for LTI launch.
$_POST['cmd']
Definition: lti.php:27
__construct(ilLTIDataConnector $dataConnector)
ilLTITool constructor.
onLaunch()
Process a valid launch request.
static getDataConnector(mixed $db=null, string $dbTableNamePrefix='', string $type='')
$_SERVER['HTTP_HOST']
Definition: raiseError.php:10
global $DIC
Definition: shib_login.php:25
ilLogger $logger
$_GET['cmd']
Definition: lti.php:26
handleRequest(bool $strictMode=null, bool $disableCookieCheck=false, bool $generateWarnings=false)
Component logger with individual log levels by component id.
retrieve(string $key, Transformation $transformation)