ILIAS  release_8 Revision v8.24
ILIAS\LTI\ToolProvider Namespace Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

Namespaces

namespace  ApiHook
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
namespace  Content
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
namespace  DataConnector
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
namespace  Http
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
namespace  Jwt
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
namespace  MediaType
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
namespace  Profile
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
namespace  Service
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 

Data Structures

class  AccessToken
 Class to represent an HTTP message. More...
 
class  AssessmentControlAction
 Class to represent an assessment control action. More...
 
class  Context
 Class to represent a platform context. More...
 
class  LineItem
 Class to represent a line item. More...
 
class  OAuthDataStore
 Class to represent an OAuth datastore. More...
 
class  Outcome
 Class to represent an outcome. More...
 
class  Platform
 Class to represent a platform. More...
 
class  PlatformNonce
 Class to represent a platform nonce. More...
 
class  ResourceLink
 Class to represent a platform resource link. More...
 
class  ResourceLinkShare
 Class to represent a platform resource link share. More...
 
class  ResourceLinkShareKey
 Class to represent a platform resource link share key. More...
 
class  Tool
 Class to represent an LTI Tool. More...
 
class  User
 Class to represent a platform user. More...
 
class  UserResult
 Class to represent a platform user. More...
 
class  Util
 

Functions

 getRecordId ()
 Get the system record ID. More...
 
 setRecordId (int $id)
 Sets the system record ID. More...
 
 getKey ()
 Get the consumer key. More...
 
 setKey (string $key)
 Set the consumer key. More...
 
 getSetting (string $name, string $default='')
 Get a setting value. More...
 
 setSetting (string $name, string $value=null)
 Set a setting value. More...
 
 getSettings ()
 Get an array of all setting values. More...
 
 setSettings (array $settings)
 Set an array of all setting values. More...
 
 saveSettings ()
 Save setting values. More...
 
 hasJwt ()
 Check whether a JWT exists. More...
 
 getJwt ()
 Get the JWT. More...
 
 getRawParameters ()
 Get the raw POST parameters. More...
 
 getMessageClaims (bool $fullyQualified=false)
 Get the message claims. More...
 
static parseRoles ($roles, string $ltiVersion=Util::LTI_VERSION1)
 Get an array of fully qualified user roles. More...
 
 signParameters (string $url, string $type, string $version, array $params)
 Add the signature to an LTI message. More...
 
 signMessage (string &$url, string $type, string $version, array $params, string $loginHint=null, string $ltiMessageHint=null)
 Add the signature to an LTI message. More...
 
 sendMessage (string $url, string $type, array $messageParams, string $target='', ?string $userId=null, string $hint='')
 Generate a web page containing an auto-submitted form of LTI message parameters. More...
 
 signServiceRequest (string $url, string $method, string $type, $data=null)
 Generates the headers for an LTI service request. More...
 
 doServiceRequest (object $service, string $method, string $format, $data)
 Perform a service request. More...
 
 useOAuth1 ()
 Determine whether this consumer is using the OAuth 1 security model. More...
 
 addSignature (string $endpoint, $data, string $method='POST', ?string $type=null, ?string $nonce='', ?string $hash=null, ?int $timestamp=null)
 Add the signature to an array of message parameters or to a header string. More...
 
 checkMessage ()
 Verify the required properties of an LTI message. More...
 
 verifySignature ()
 Verify the signature of a message. More...
 
 parseMessage ()
 Parse the message. More...
 
 parseClaims ()
 Parse the claims. More...
 
 doCallback ()
 Call any callback function for the requested action. More...
 
 addOAuth1Signature (string $endpoint, $data, string $method, ?string $type, ?string $hash, ?int $timestamp)
 Add the OAuth 1 signature to an array of message parameters or to a header string. More...
 
 addJWTSignature (string $endpoint, $data, string $method, ?string $type, ?string $nonce, ?int $timestamp)
 Add the JWT signature to an array of message parameters or to a header string. More...
 
static fullyQualifyClaim (string $claim, string $value)
 Expand a claim into an array of individual fully-qualified claims. More...
 

Variables

trait System
 
string $secret = null
 Shared secret. More...
 
string $signatureMethod = 'HMAC-SHA1'
 Method used for signing messages. More...
 
string $encryptionMethod = ''
 Algorithm used for encrypting messages. More...
 
ilLTIDataConnector $dataConnector = null
 Data connector object. More...
 
string $rsaKey = null
 RSA key in PEM or JSON format. More...
 
array $requiredScopes = array()
 Scopes to request when obtaining an access token. More...
 
string $kid = null
 Key ID. More...
 
string $jku = null
 Endpoint for public key. More...
 
string $reason = null
 Error message for last request processed. More...
 
array $details = array()
 Details for error message relating to last request processed. More...
 
bool $debugMode = false
 Whether debug level messages are to be reported. More...
 
bool $enabled = false
 Whether the system instance is enabled to accept connection requests. More...
 
int $enableFrom = null
 Timestamp from which the the system instance is enabled to accept connection requests. More...
 
int $enableUntil = null
 Timestamp until which the system instance is enabled to accept connection requests. More...
 
int $lastAccess = null
 Timestamp for date of last connection to this system. More...
 
int $created = null
 Timestamp for when the object was created. More...
 
int $updated = null
 Timestamp for when the object was last updated. More...
 
ClientInterface $jwt = null
 JWT object, if any. More...
 
array $rawParameters = null
 Raw message parameters. More...
 
array $messageParameters = null
 LTI message parameters. More...
 
int $id = null
 System ID value. More...
 
string $key = null
 Consumer key/client ID value. More...
 
array $settings = []
 Setting values (LTI parameters, custom parameters and local parameters). More...
 
bool $settingsChanged = false
 Whether the settings value have changed since last saved. More...
 

Detailed Description

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning

Function Documentation

◆ addJWTSignature()

ILIAS\LTI\ToolProvider\addJWTSignature ( string  $endpoint,
  $data,
string  $method,
?string  $type,
?string  $nonce,
?int  $timestamp 
)
private

Add the JWT signature to an array of message parameters or to a header string.

Parameters
string$endpointURL to which message is being sent
mixed$dataData to be passed
string$methodHTTP method
string | null$typeContent type of data being passed
string | null$nonceNonce value for JWT
int | null$timestampTimestamp
Returns
string[]|string Array of signed message parameters or header string

Definition at line 1294 of file System.php.

1295 {
1296 $ok = false;
1297 if (is_array($data)) {
1298 $ok = true;
1299 if (empty($nonce)) {
1300 $nonce = Util::getRandomString(32);
1301 }
1302 $publicKey = null;
1303 if (!array_key_exists('grant_type', $data)) {
1304 $this->messageParameters = $data;
1305 $payload = $this->getMessageClaims();
1307 $kid = $this->kid;
1308 $jku = $this->jku;
1309 if ($this instanceof Platform) {
1310 if (!empty(Tool::$defaultTool)) {
1311 $publicKey = Tool::$defaultTool->rsaKey;
1312 }
1313 $payload['iss'] = $this->platformId;
1314 $payload['aud'] = array($this->clientId);
1315 $payload['azp'] = $this->clientId;
1316 $payload[Util::JWT_CLAIM_PREFIX . '/claim/deployment_id'] = $this->deploymentId;
1317 $payload[Util::JWT_CLAIM_PREFIX . '/claim/target_link_uri'] = $endpoint;
1318 $paramName = 'id_token';
1319 } else {
1320 if (!empty($this->platform)) {
1321 $publicKey = $this->platform->rsaKey;
1322 $payload['iss'] = $this->platform->clientId;
1323 $payload['aud'] = array($this->platform->platformId);
1324 $payload['azp'] = $this->platform->platformId;
1325 $payload[Util::JWT_CLAIM_PREFIX . '/claim/deployment_id'] = $this->platform->deploymentId;
1326 }
1327 $paramName = 'JWT';
1328 }
1329 $payload['nonce'] = $nonce;
1330 } else {
1331 $authorizationId = '';
1332 if ($this instanceof Tool) {
1333 $sub = '';
1334 if (!empty($this->platform)) {
1335 $sub = $this->platform->clientId;
1336 $authorizationId = $this->platform->authorizationServerId;
1337 $publicKey = $this->platform->rsaKey;
1338 }
1340 $kid = $this->kid;
1341 $jku = $this->jku;
1342 } else { // Tool-hosted services not yet defined in LTI
1343 $sub = $this->clientId;
1344 $kid = $this->kid;
1345 $jku = $this->jku;
1347 if (!empty(Tool::$defaultTool)) {
1348 $publicKey = Tool::$defaultTool->rsaKey;
1349 }
1350 }
1351 $payload['iss'] = $sub;
1352 $payload['sub'] = $sub;
1353 if (empty($authorizationId)) {
1354 $authorizationId = $endpoint;
1355 }
1356 $payload['aud'] = array($authorizationId);
1357 $payload['jti'] = $nonce;
1358 $params = $data;
1359 $paramName = 'client_assertion';
1360 }
1361 }
1362 if ($ok) {
1363 if (empty($timestamp)) {
1364 $timestamp = time();
1365 }
1366 $payload['iat'] = $timestamp;
1367 $payload['exp'] = $timestamp + Jwt::$life;
1368 try {
1369 $jwt = Jwt::getJwtClient();
1370 $params[$paramName] = $jwt::sign(
1371 $payload,
1372 $this->signatureMethod,
1374 $kid,
1375 $jku,
1376 $this->encryptionMethod,
1377 $publicKey
1378 );
1379 } catch (\Exception $e) {
1380 $params = array();
1381 }
1382
1383 return $params;
1384 } else {
1385 $header = '';
1386 if ($this instanceof Tool) {
1387 $platform = $this->platform;
1388 } else {
1389 $platform = $this;
1390 }
1391 $accessToken = $platform->getAccessToken();
1392 if (empty($accessToken)) {
1393 $accessToken = new AccessToken($platform);
1394 $platform->setAccessToken($accessToken);
1395 }
1396 if (!$accessToken->hasScope()) { // Check token has not expired
1397 $accessToken->get();
1398 }
1399 if (!empty($accessToken->token)) {
1400 $header = "Authorization: Bearer {$accessToken->token}";
1401 }
1402 if (empty($data) && ($method !== 'DELETE')) {
1403 if (!empty($type)) {
1404 $header .= "\nAccept: {$type}";
1405 }
1406 } elseif (isset($type)) {
1407 $header .= "\nContent-Type: {$type}";
1408 if (!empty($data) && is_string($data)) {
1409 $header .= "\nContent-Length: " . strlen($data);
1410 }
1411 }
1412
1413 return $header;
1414 }
1415 }
foreach($mandatory_scripts as $file) $timestamp
Definition: buildRTE.php:70
$clientId
Definition: ltiregend.php:27
$privateKey
Definition: ltiregstart.php:68
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:33
if(count($parts) !=3) $payload
Definition: ltitoken.php:70
string $jku
Endpoint for public key.
Definition: System.php:95
ClientInterface $jwt
JWT object, if any.
Definition: System.php:165
string $kid
Key ID.
Definition: System.php:88
string $rsaKey
RSA key in PEM or JSON format.
Definition: System.php:74
getMessageClaims(bool $fullyQualified=false)
Get the message claims.
Definition: System.php:357
$type

References $clientId, $data, ILIAS\LTI\ToolProvider\Tool\$defaultTool, Vendor\Package\$e, ILIAS\LTI\ToolProvider\$jku, ILIAS\LTI\ToolProvider\$jwt, ILIAS\LTI\ToolProvider\$kid, ILIAS\LTI\ToolProvider\Jwt\Jwt\$life, $params, $payload, $privateKey, ILIAS\LTI\ToolProvider\$rsaKey, $timestamp, $type, ILIAS\LTI\ToolProvider\Jwt\Jwt\getJwtClient(), ILIAS\LTI\ToolProvider\getMessageClaims(), ILIAS\LTI\ToolProvider\Util\getRandomString(), and ILIAS\LTI\ToolProvider\Util\JWT_CLAIM_PREFIX.

Referenced by ILIAS\LTI\ToolProvider\addSignature().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addOAuth1Signature()

ILIAS\LTI\ToolProvider\addOAuth1Signature ( string  $endpoint,
  $data,
string  $method,
?string  $type,
?string  $hash,
?int  $timestamp 
)
private

Add the OAuth 1 signature to an array of message parameters or to a header string.

Parameters
string$endpointURL to which message is being sent
mixed$dataData to be passed
string$methodHTTP method
string | null$typeContent type of data being passed
string | null$hashOAuth body hash value
int | null$timestampTimestamp
Returns
string[]|string Array of signed message parameters or header string

Definition at line 1166 of file System.php.

1167 {
1168 $params = array();
1169 if (is_array($data)) {
1170 $params = $data;
1171 $params['oauth_callback'] = 'about:blank';
1172 }
1173 // Check for query parameters which need to be included in the signature
1174 $queryString = parse_url($endpoint, PHP_URL_QUERY);
1175// $queryParams = OAuth\OAuthUtil::parse_parameters($queryString);
1176 $queryParams = LTIOAuth\OAuthUtil::parse_parameters($queryString);
1177 $params = array_merge_recursive($queryParams, $params);
1178
1179 if (!is_array($data)) {
1180 if (empty($hash)) { // Calculate body hash
1181 switch ($this->signatureMethod) {
1182 case 'HMAC-SHA224':
1183 $hash = base64_encode(hash('sha224', $data, true));
1184 break;
1185 case 'HMAC-SHA256':
1186 $hash = base64_encode(hash('sha256', $data, true));
1187 break;
1188 case 'HMAC-SHA384':
1189 $hash = base64_encode(hash('sha384', $data, true));
1190 break;
1191 case 'HMAC-SHA512':
1192 $hash = base64_encode(hash('sha512', $data, true));
1193 break;
1194 default:
1195 $hash = base64_encode(sha1($data, true));
1196 break;
1197 }
1198 }
1199 $params['oauth_body_hash'] = $hash;
1200 }
1201 if (!empty($timestamp)) {
1202 $params['oauth_timestamp'] = $timestamp;
1203 }
1204
1205 // Add OAuth signature
1206 switch ($this->signatureMethod) {
1207 //UK: ToDo
1208// case 'HMAC-SHA224':
1209// $hmacMethod = new OAuth\OAuthSignatureMethod_HMAC_SHA224();
1210// break;
1211// case 'HMAC-SHA256':
1212// $hmacMethod = new OAuth\OAuthSignatureMethod_HMAC_SHA256();
1213// break;
1214// case 'HMAC-SHA384':
1215// $hmacMethod = new OAuth\OAuthSignatureMethod_HMAC_SHA384();
1216// break;
1217// case 'HMAC-SHA512':
1218// $hmacMethod = new OAuth\OAuthSignatureMethod_HMAC_SHA512();
1219// break;
1220 default:
1221// $hmacMethod = new OAuth\OAuthSignatureMethod_HMAC_SHA1();
1222 $hmacMethod = new LTIOAuth\OAuthSignatureMethod_HMAC_SHA1();
1223 break;
1224 }
1225 $key = $this->key;
1227 if (empty($key)) {
1228 if (($this instanceof Tool) && !empty($this->platform)) {
1229 $key = $this->platform->getKey();
1230 $secret = $this->platform->secret;
1231 } elseif (($this instanceof Platform) && !empty(Tool::$defaultTool)) {
1232 $key = Tool::$defaultTool->getKey();
1233 $secret = Tool::$defaultTool->secret;
1234 }
1235 }
1236// $oauthConsumer = new OAuth\OAuthConsumer($key, $secret, null);
1237 $oauthConsumer = new LTIOAuth\OAuthConsumer($key, $secret, null);
1238// $oauthReq = OAuth\OAuthRequest::from_consumer_and_token($oauthConsumer, null, $method, $endpoint, $params);
1239 $oauthReq = LTIOAuth\OAuthRequest::from_consumer_and_token($oauthConsumer, null, $method, $endpoint, $params);
1240 $oauthReq->sign_request($hmacMethod, $oauthConsumer, null);
1241 if (!is_array($data)) {
1242 $header = $oauthReq->to_header();
1243 if (empty($data)) {
1244 if (!empty($type)) {
1245 $header .= "\nAccept: {$type}";
1246 }
1247 } elseif (isset($type)) {
1248 $header .= "\nContent-Type: {$type}";
1249 $header .= "\nContent-Length: " . strlen($data);
1250 }
1251 return $header;
1252 } else {
1253 // Remove parameters from query string
1254 $params = $oauthReq->get_parameters();
1255 foreach ($queryParams as $key => $value) {
1256 if (!is_array($value)) {
1257 if (!is_array($params[$key])) {
1258 if ($params[$key] === $value) {
1259 unset($params[$key]);
1260 }
1261 } else {
1262 $params[$key] = array_diff($params[$key], array($value));
1263 }
1264 } else {
1265 foreach ($value as $element) {
1266 $params[$key] = array_diff($params[$key], array($value));
1267 }
1268 }
1269 }
1270 // Remove any parameters comprising an empty array of values
1271 foreach ($params as $key => $value) {
1272 if (is_array($value)) {
1273 if (count($value) <= 0) {
1274 unset($params[$key]);
1275 } elseif (count($value) === 1) {
1276 $params[$key] = reset($value);
1277 }
1278 }
1279 }
1280 return $params;
1281 }
1282 }
string $key
Consumer key/client ID value.
Definition: System.php:193
string $secret
Shared secret.
Definition: System.php:43

References $data, ILIAS\LTI\ToolProvider\Tool\$defaultTool, ILIAS\LTI\ToolProvider\$key, $params, ILIAS\LTI\ToolProvider\$secret, $timestamp, and $type.

Referenced by ILIAS\LTI\ToolProvider\addSignature().

+ Here is the caller graph for this function:

◆ addSignature()

ILIAS\LTI\ToolProvider\addSignature ( string  $endpoint,
  $data,
string  $method = 'POST',
?string  $type = null,
?string  $nonce = '',
?string  $hash = null,
?int  $timestamp = null 
)

Add the signature to an array of message parameters or to a header string.

Parameters
string$endpointURL to which message is being sent
mixed$dataData to be passed
string$methodHTTP method
string | null$typeContent type of data being passed
string | null$nonceNonce value for JWT
string | null$hashOAuth body hash value
int | null$timestampTimestamp
Returns
mixed Array of signed message parameters or header string

Definition at line 714 of file System.php.

715 {
716 if ($this->useOAuth1()) {
717 return $this->addOAuth1Signature($endpoint, $data, $method, $type, $hash, $timestamp);
718 } else {
719 return $this->addJWTSignature($endpoint, $data, $method, $type, $nonce, $timestamp);
720 }
721 }
useOAuth1()
Determine whether this consumer is using the OAuth 1 security model.
Definition: System.php:698
addJWTSignature(string $endpoint, $data, string $method, ?string $type, ?string $nonce, ?int $timestamp)
Add the JWT signature to an array of message parameters or to a header string.
Definition: System.php:1294
addOAuth1Signature(string $endpoint, $data, string $method, ?string $type, ?string $hash, ?int $timestamp)
Add the OAuth 1 signature to an array of message parameters or to a header string.
Definition: System.php:1166

References $data, $timestamp, $type, ILIAS\LTI\ToolProvider\addJWTSignature(), ILIAS\LTI\ToolProvider\addOAuth1Signature(), and ILIAS\LTI\ToolProvider\useOAuth1().

Referenced by ILIAS\LTI\ToolProvider\doServiceRequest(), ILIAS\LTI\ToolProvider\Platform\handleAuthenticationRequest(), ILIAS\LTI\ToolProvider\signParameters(), and ILIAS\LTI\ToolProvider\signServiceRequest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkMessage()

ILIAS\LTI\ToolProvider\checkMessage ( )

Verify the required properties of an LTI message.

Returns
bool True if it is a valid LTI message

Definition at line 728 of file System.php.

728 : bool
729 {
730 $this->ok = $_SERVER['REQUEST_METHOD'] === 'POST';
731 if (!$this->ok) {
732 $this->reason = 'LTI messages must use HTTP POST';
733 } elseif (!empty($this->jwt) && !empty($this->jwt->hasJwt())) {
734 $this->ok = false;
735 if (is_null($this->messageParameters['oauth_consumer_key']) || (strlen($this->messageParameters['oauth_consumer_key']) <= 0)) {
736 $this->reason = 'Missing iss claim';
737 } elseif (empty($this->jwt->getClaim('iat', ''))) {
738 $this->reason = 'Missing iat claim';
739 } elseif (empty($this->jwt->getClaim('exp', ''))) {
740 $this->reason = 'Missing exp claim';
741 } elseif (intval($this->jwt->getClaim('iat')) > intval($this->jwt->getClaim('exp'))) {
742 $this->reason = 'iat claim must not have a value greater than exp claim';
743 } elseif (empty($this->jwt->getClaim('nonce', ''))) {
744 $this->reason = 'Missing nonce claim';
745 } else {
746 $this->ok = true;
747 }
748 }
749 // Set signature method from request
750 if (isset($this->messageParameters['oauth_signature_method'])) {
751 $this->signatureMethod = $this->messageParameters['oauth_signature_method'];
752 if (($this instanceof Tool) && !empty($this->platform)) {
753 $this->platform->signatureMethod = $this->signatureMethod;
754 }
755 }
756 // Check all required launch parameters
757 if ($this->ok) {
758 $this->ok = isset($this->messageParameters['lti_message_type']);
759 if (!$this->ok) {
760 $this->reason = 'Missing lti_message_type parameter.';
761 }
762 }
763 if ($this->ok) {
764 $this->ok = isset($this->messageParameters['lti_version']) && in_array(
765 $this->messageParameters['lti_version'],
766 Util::$LTI_VERSIONS
767 );
768 if (!$this->ok) {
769 $this->reason = 'Invalid or missing lti_version parameter.';
770 }
771 }
772
773 return $this->ok;
774 }
string $signatureMethod
Method used for signing messages.
Definition: System.php:50
$_SERVER['HTTP_HOST']
Definition: raiseError.php:10

References $_SERVER, ILIAS\LTI\ToolProvider\Util\$LTI_VERSIONS, and ILIAS\LTI\ToolProvider\$signatureMethod.

Referenced by ILIAS\LTI\ToolProvider\Platform\authenticate(), and ILIAS\LTI\ToolProvider\Tool\authenticate().

+ Here is the caller graph for this function:

◆ doCallback()

ILIAS\LTI\ToolProvider\doCallback ( )
private

Call any callback function for the requested action.

This function may set the redirect_url and output properties.

Definition at line 1141 of file System.php.

1142 {
1143 if (array_key_exists($this->messageParameters['lti_message_type'], Util::$METHOD_NAMES)) {
1144 $callback = Util::$METHOD_NAMES[$this->messageParameters['lti_message_type']];
1145 } else {
1146 $callback = "on{$this->messageParameters['lti_message_type']}";
1147 }
1148 if (method_exists($this, $callback)) {
1149 $this->$callback();
1150 } elseif ($this->ok) {
1151 $this->ok = false;
1152 $this->reason = "Message type not supported: {$this->messageParameters['lti_message_type']}";
1153 }
1154 }

References ILIAS\LTI\ToolProvider\Util\$METHOD_NAMES.

Referenced by ILIAS\LTI\ToolProvider\Platform\handleRequest(), and ILIAS\LTI\ToolProvider\Tool\handleRequest().

+ Here is the caller graph for this function:

◆ doServiceRequest()

ILIAS\LTI\ToolProvider\doServiceRequest ( object  $service,
string  $method,
string  $format,
  $data 
)

Perform a service request.

Parameters
object$serviceService object to be executed
string$methodHTTP action
string$formatMedia type
mixed$dataArray of parameters or body string
Returns
HttpMessage HTTP object containing request and response details

Definition at line 678 of file System.php.

678 : HTTPMessage
679 {
680 $header = $this->addSignature($service->endpoint, $data, $method, $format);
681
682 // Connect to platform
683 $http = new HttpMessage($service->endpoint, $method, $data, $header);
684 // Parse JSON response
685 if ($http->send() && !empty($http->response)) {
686 $http->responseJson = json_decode($http->response);
687 $http->ok = !is_null($http->responseJson);
688 }
689
690 return $http;
691 }
$service
Definition: ltiservices.php:43
$format
Definition: metadata.php:235
addSignature(string $endpoint, $data, string $method='POST', ?string $type=null, ?string $nonce='', ?string $hash=null, ?int $timestamp=null)
Add the signature to an array of message parameters or to a header string.
Definition: System.php:714
$http
Definition: raiseError.php:7

References $data, $format, $http, $service, and ILIAS\LTI\ToolProvider\addSignature().

+ Here is the call graph for this function:

◆ fullyQualifyClaim()

static ILIAS\LTI\ToolProvider\fullyQualifyClaim ( string  $claim,
string  $value 
)
staticprivate

Expand a claim into an array of individual fully-qualified claims.

Parameters
string$claimName of claim
string$valueValue of claim
Returns
string[] Array of individual claims and values

Definition at line 1423 of file System.php.

1423 : array
1424 {
1425 $claims = array();
1426 $empty = true;
1427 if (is_object($value)) {
1428 foreach ($value as $c => $v) {
1429 $empty = false;
1430 $claims = array_merge($claims, static::fullyQualifyClaim("{$claim}/{$c}", $v));
1431 }
1432 }
1433 if ($empty) {
1434 $claims[$claim] = $value;
1435 }
1436
1437 return $claims;
1438 }
$c
Definition: cli.php:38
$claims
Definition: ltitoken.php:71
static fullyQualifyClaim(string $claim, string $value)
Expand a claim into an array of individual fully-qualified claims.
Definition: System.php:1423

References $c, $claims, and ILIAS\LTI\ToolProvider\fullyQualifyClaim().

Referenced by ILIAS\LTI\ToolProvider\fullyQualifyClaim(), and ILIAS\LTI\ToolProvider\getMessageClaims().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getJwt()

ILIAS\LTI\ToolProvider\getJwt ( )

Get the JWT.

Returns
ClientInterface The JWT

Definition at line 332 of file System.php.

333 {
334 return $this->jwt;
335 }
Interface to represent an HWT client.

References ILIAS\LTI\ToolProvider\$jwt.

◆ getKey()

ILIAS\LTI\ToolProvider\getKey ( )

Get the consumer key.

Returns
string|null Consumer key value //UK: added |null

Definition at line 233 of file System.php.

233 : ?string
234 {
235 return $this->key;
236 }

References ILIAS\LTI\ToolProvider\$key.

◆ getMessageClaims()

ILIAS\LTI\ToolProvider\getMessageClaims ( bool  $fullyQualified = false)

Get the message claims.

Parameters
bool$fullyQualifiedTrue if claims should be fully qualified rather than grouped (default is false)
Returns
array The message claim array

Definition at line 357 of file System.php.

357 : array
358 {
359 $messageClaims = null;
360 if (!is_null($this->messageParameters)) {
362 $messageType = '';
363 if (!empty($messageParameters['lti_message_type'])) {
364 if (array_key_exists($messageParameters['lti_message_type'], Util::MESSAGE_TYPE_MAPPING)) {
365 $messageParameters['lti_message_type'] = Util::MESSAGE_TYPE_MAPPING[$messageParameters['lti_message_type']];
366 }
367 $messageType = $messageParameters['lti_message_type'];
368 }
369 if (!empty($messageParameters['accept_media_types'])) {
370 $mediaTypes = array_filter(explode(',', str_replace(' ', '', $messageParameters['accept_media_types'])), 'strlen');
371 $types = array();
372 if (!empty($messageParameters['accept_types'])) {
373 $types = array_filter(explode(',', str_replace(' ', '', $messageParameters['accept_types'])), 'strlen');
374 foreach ($mediaTypes as $mediaType) {
375 if (strpos($mediaType, 'application/vnd.ims.lti.') === 0) {
376 unset($mediaTypes[array_search($mediaType, $mediaTypes)]);
377 }
378 }
379 $messageParameters['accept_media_types'] = implode(',', $mediaTypes);
380 } else {
381 foreach ($mediaTypes as $mediaType) {
382 if ($mediaType === Item::LTI_LINK_MEDIA_TYPE) {
383 unset($mediaTypes[array_search(Item::LTI_LINK_MEDIA_TYPE, $mediaTypes)]);
384 $messageParameters['accept_media_types'] = implode(',', $mediaTypes);
385 $types[] = Item::TYPE_LTI_LINK;
386 } elseif ($mediaType === Item::LTI_ASSIGNMENT_MEDIA_TYPE) {
387 unset($mediaTypes[array_search(Item::LTI_ASSIGNMENT_MEDIA_TYPE, $mediaTypes)]);
388 $messageParameters['accept_media_types'] = implode(',', $mediaTypes);
389 $types[] = Item::TYPE_LTI_ASSIGNMENT;
390 } elseif (substr($mediaType, 0, 6) === 'image/') {
391 $types[] = 'image';
392 $types[] = 'link';
393 $types[] = 'file';
394 } elseif ($mediaType === 'text/html') {
395 $types[] = 'html';
396 $types[] = 'link';
397 $types[] = 'file';
398 } elseif ($mediaType === '*/*') {
399 $types[] = 'html';
400 $types[] = 'image';
401 $types[] = 'file';
402 $types[] = 'link';
403 } else {
404 $types[] = 'file';
405 }
406 }
407 $types = array_unique($types);
408 $messageParameters['accept_types'] = implode(',', $types);
409 }
410 }
411 if (!empty($messageParameters['accept_presentation_document_targets'])) {
412 $documentTargets = array_filter(explode(
413 ',',
414 str_replace(' ', '', $messageParameters['accept_presentation_document_targets'])
415 ), 'strlen');
416 $targets = array();
417 foreach ($documentTargets as $documentTarget) {
418 switch ($documentTarget) {
419 case 'frame':
420 case 'popup':
421 case 'overlay':
422 case 'none':
423 break;
424 default:
425 $targets[] = $documentTarget;
426 break;
427 }
428 }
429 $targets = array_unique($targets);
430 $messageParameters['accept_presentation_document_targets'] = implode(',', $targets);
431 }
432 $messageClaims = array();
433 if (!empty($messageParameters['oauth_consumer_key'])) {
434 $messageClaims['aud'] = array($messageParameters['oauth_consumer_key']);
435 }
436 foreach ($messageParameters as $key => $value) {
437 $ok = true;
438 if (array_key_exists($key, Util::JWT_CLAIM_MAPPING)) {
439 if (array_key_exists("{$key}.{$messageType}", Util::JWT_CLAIM_MAPPING)) {
440 $mapping = Util::JWT_CLAIM_MAPPING["{$key}.{$messageType}"];
441 } else {
442 $mapping = Util::JWT_CLAIM_MAPPING[$key];
443 }
444 if (isset($mapping['isObject']) && $mapping['isObject']) {
445 $value = json_decode($value);
446 } elseif (isset($mapping['isArray']) && $mapping['isArray']) {
447 $value = array_filter(explode(',', str_replace(' ', '', $value)), 'strlen');
448 sort($value);
449 } elseif (isset($mapping['isBoolean']) && $mapping['isBoolean']) {
450 $value = (is_bool($value)) ? $value : $value === 'true';
451 } elseif (isset($mapping['isInteger']) && $mapping['isInteger']) {
452 $value = intval($value);
453 } elseif (is_bool($value)) {
454 $value = ($value) ? 'true' : 'false';
455 } else {
456 $value = strval($value);
457 }
458 $group = '';
459 $claim = Util::JWT_CLAIM_PREFIX;
460 if (!empty($mapping['suffix'])) {
461 $claim .= "-{$mapping['suffix']}";
462 }
463 $claim .= '/claim/';
464 if (is_null($mapping['group'])) {
465 $claim = $mapping['claim'];
466 } elseif (empty($mapping['group'])) {
467 $claim .= $mapping['claim'];
468 } else {
469 $group = $claim . $mapping['group'];
470 $claim = $mapping['claim'];
471 }
472 } elseif (substr($key, 0, 7) === 'custom_') {
473 $group = Util::JWT_CLAIM_PREFIX . '/claim/custom';
474 $claim = substr($key, 7);
475 } elseif (substr($key, 0, 4) === 'ext_') {
476 $group = Util::JWT_CLAIM_PREFIX . '/claim/ext';
477 $claim = substr($key, 4);
478 } elseif (substr($key, 0, 7) === 'lti1p1_') {
479 $group = Util::JWT_CLAIM_PREFIX . '/claim/lti1p1';
480 $claim = substr($key, 7);
481 if (empty($value)) {
482 $value = null;
483 } else {
484 $json = json_decode($value);
485 if (!is_null($json)) {
486 $value = $json;
487 }
488 }
489 } else {
490 $ok = false;
491 }
492 if ($ok) {
493 if ($fullyQualified) {
494 if (empty($group)) {
495 $messageClaims = array_merge($messageClaims, self::fullyQualifyClaim($claim, $value));
496 } else {
497 $messageClaims = array_merge($messageClaims, self::fullyQualifyClaim("{$group}/{$claim}", $value));
498 }
499 } elseif (empty($group)) {
500 $messageClaims[$claim] = $value;
501 } else {
502 $messageClaims[$group][$claim] = $value;
503 }
504 }
505 }
506 if (!empty($messageParameters['unmapped_claims'])) {
507 $claims = json_decode($messageParameters['unmapped_claims']);
508 foreach ($claims as $claim => $value) {
509 if ($fullyQualified) {
510 $messageClaims = array_merge($messageClaims, self::fullyQualifyClaim($claim, $value));
511 } elseif (!is_object($value)) {
512 $messageClaims[$claim] = $value;
513 } elseif (!isset($messageClaims[$claim])) {
514 $messageClaims[$claim] = $value;
515 } else {
516 $objVars = get_object_vars($value);
517 foreach ($objVars as $attrName => $attrValue) {
518 if (is_object($messageClaims[$claim])) {
519 $messageClaims[$claim]->{$attrName} = $attrValue;
520 } else {
521 $messageClaims[$claim][$attrName] = $attrValue;
522 }
523 }
524 }
525 }
526 }
527 }
528
529 return $messageClaims;
530 }
array $messageParameters
LTI message parameters.
Definition: System.php:179

References $claims, ILIAS\LTI\ToolProvider\$key, ILIAS\LTI\ToolProvider\$messageParameters, ILIAS\LTI\ToolProvider\fullyQualifyClaim(), ILIAS\LTI\ToolProvider\Util\JWT_CLAIM_MAPPING, ILIAS\LTI\ToolProvider\Util\JWT_CLAIM_PREFIX, ILIAS\LTI\ToolProvider\Content\Item\LTI_ASSIGNMENT_MEDIA_TYPE, ILIAS\LTI\ToolProvider\Content\Item\LTI_LINK_MEDIA_TYPE, ILIAS\LTI\ToolProvider\Util\MESSAGE_TYPE_MAPPING, ILIAS\LTI\ToolProvider\Content\Item\TYPE_LTI_ASSIGNMENT, and ILIAS\LTI\ToolProvider\Content\Item\TYPE_LTI_LINK.

Referenced by ILIAS\LTI\ToolProvider\addJWTSignature().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRawParameters()

ILIAS\LTI\ToolProvider\getRawParameters ( )

Get the raw POST parameters.

Returns
array The POST parameter array

Definition at line 342 of file System.php.

342 : array
343 {
344 if (is_null($this->rawParameters)) {
345 $this->rawParameters = LTIOAuth\OAuthUtil::parse_parameters(file_get_contents(LTIOAuth\OAuthRequest::$POST_INPUT));
346// $this->rawParameters = OAuth\OAuthUtil::parse_parameters(file_get_contents(OAuth\OAuthRequest::$POST_INPUT));
347 }
348
350 }
array $rawParameters
Raw message parameters.
Definition: System.php:172

References ILIAS\LTI\ToolProvider\$rawParameters.

Referenced by ILIAS\LTI\ToolProvider\parseMessage().

+ Here is the caller graph for this function:

◆ getRecordId()

◆ getSetting()

ILIAS\LTI\ToolProvider\getSetting ( string  $name,
string  $default = '' 
)

Get a setting value.

Parameters
string$nameName of setting
string$defaultValue to return if the setting does not exist (optional, default is an empty string)
Returns
string Setting value

Definition at line 253 of file System.php.

253 : string
254 {
255 if (array_key_exists($name, $this->settings)) {
256 $value = $this->settings[$name];
257 } else {
258 $value = $default;
259 }
260
261 return $value;
262 }
if($format !==null) $name
Definition: metadata.php:247

References $name, and ILIAS\Repository\settings().

Referenced by ilChatroom\getTitle(), and ilObjContactAdministrationGUI\showConfigurationForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSettings()

ILIAS\LTI\ToolProvider\getSettings ( )

Get an array of all setting values.

Returns
array Associative array of setting values

Definition at line 287 of file System.php.

287 : array
288 {
289 return $this->settings;
290 }
array $settings
Setting values (LTI parameters, custom parameters and local parameters).
Definition: System.php:200

References ILIAS\LTI\ToolProvider\$settings.

Referenced by ilSettingsTemplateGUI\getSettingsTemplateValues(), ilObjSearchLuceneSettingsFormGUI\initForm(), ilObjSearchSettingsFormGUI\initForm(), ilSettingsTemplate\insertSettings(), ilGlobalCache\log(), ilSettingsTemplateGUI\setValuesFromForm(), ilObjSearchLuceneSettingsFormGUI\update(), ilObjSearchSettingsFormGUI\update(), and ilObjStudyProgramme\updateLastChange().

+ Here is the caller graph for this function:

◆ hasJwt()

ILIAS\LTI\ToolProvider\hasJwt ( )

Check whether a JWT exists.

Returns
bool True if a JWT exists

Definition at line 322 of file System.php.

322 : bool
323 {
324 return !empty($this->jwt) && $this->jwt->hasJwt();
325 }

◆ parseClaims()

ILIAS\LTI\ToolProvider\parseClaims ( )
private

Parse the claims.

Definition at line 997 of file System.php.

998 {
999 $payload = Util::cloneObject((object) $this->jwt->getPayload()); //UK: added object
1000 $errors = array();
1001 foreach (Util::JWT_CLAIM_MAPPING as $key => $mapping) {
1002 $claim = Util::JWT_CLAIM_PREFIX;
1003 if (!empty($mapping['suffix'])) {
1004 $claim .= "-{$mapping['suffix']}";
1005 }
1006 $claim .= '/claim/';
1007 if (is_null($mapping['group'])) {
1008 $claim = $mapping['claim'];
1009 } elseif (empty($mapping['group'])) {
1010 $claim .= $mapping['claim'];
1011 } else {
1012 $claim .= $mapping['group'];
1013 }
1014 if ($this->jwt->hasClaim($claim)) {
1015 $value = null;
1016 if (empty($mapping['group'])) {
1017 unset($payload->{$claim});
1018 $value = $this->jwt->getClaim($claim);
1019 } else {
1020 $group = $this->jwt->getClaim($claim);
1021 if (is_array($group) && array_key_exists($mapping['claim'], $group)) {
1022 unset($payload->{$claim}[$mapping['claim']]);
1023 $value = $group[$mapping['claim']];
1024 } elseif (is_object($group) && isset($group->{$mapping['claim']})) {
1025 unset($payload->{$claim}->{$mapping['claim']});
1026 $value = $group->{$mapping['claim']};
1027 }
1028 }
1029 if (!is_null($value)) {
1030 if (isset($mapping['isArray']) && $mapping['isArray']) {
1031 if (!is_array($value)) {
1032 $errors[] = "'{$claim}' claim must be an array";
1033 } else {
1034 $value = implode(',', $value);
1035 }
1036 } elseif (isset($mapping['isObject']) && $mapping['isObject']) {
1037 $value = json_encode($value);
1038 } elseif (isset($mapping['isBoolean']) && $mapping['isBoolean']) {
1039 $value = $value ? 'true' : 'false';
1040 } elseif (isset($mapping['isInteger']) && $mapping['isInteger']) {
1041 $value = strval($value);
1042 }
1043 }
1044 if (!is_null($value) && is_string($value)) {
1045 $this->messageParameters[$key] = $value;
1046 }
1047 }
1048 }
1049 if (!empty($this->messageParameters['lti_message_type']) &&
1050 in_array($this->messageParameters['lti_message_type'], array_values(Util::MESSAGE_TYPE_MAPPING))) {
1051 $this->messageParameters['lti_message_type'] = array_search(
1052 $this->messageParameters['lti_message_type'],
1053 Util::MESSAGE_TYPE_MAPPING
1054 );
1055 }
1056 if (!empty($this->messageParameters['accept_types'])) {
1057 $types = array_filter(explode(',', str_replace(' ', '', $this->messageParameters['accept_types'])), 'strlen');
1058 $mediaTypes = array();
1059 if (!empty($this->messageParameters['accept_media_types'])) {
1060 $mediaTypes = array_filter(
1061 explode(',', str_replace(' ', '', $this->messageParameters['accept_media_types'])),
1062 'strlen'
1063 );
1064 }
1065 if (in_array(Item::TYPE_LTI_LINK, $types)) {
1066 $mediaTypes[] = Item::LTI_LINK_MEDIA_TYPE;
1067 }
1068 if (in_array(Item::TYPE_LTI_ASSIGNMENT, $types)) {
1069 $mediaTypes[] = Item::LTI_ASSIGNMENT_MEDIA_TYPE;
1070 }
1071 if (in_array('html', $types) && !in_array('*/*', $mediaTypes)) {
1072 $mediaTypes[] = 'text/html';
1073 }
1074 if (in_array('image', $types) && !in_array('*/*', $mediaTypes)) {
1075 $mediaTypes[] = 'image/*';
1076 }
1077 $mediaTypes = array_unique($mediaTypes);
1078 $this->messageParameters['accept_media_types'] = implode(',', $mediaTypes);
1079 }
1080 $claim = Util::JWT_CLAIM_PREFIX . '/claim/custom';
1081 if ($this->jwt->hasClaim($claim)) {
1082 unset($payload->{$claim});
1083 $custom = $this->jwt->getClaim($claim);
1084 if (!is_array($custom) && !is_object($custom)) {
1085 $errors[] = "'{$claim}' claim must be an object";
1086 } else {
1087 foreach ($custom as $key => $value) {
1088 $this->messageParameters["custom_{$key}"] = $value;
1089 }
1090 }
1091 }
1092 $claim = Util::JWT_CLAIM_PREFIX . '/claim/ext';
1093 if ($this->jwt->hasClaim($claim)) {
1094 unset($payload->{$claim});
1095 $ext = $this->jwt->getClaim($claim);
1096 if (!is_array($ext) && !is_object($ext)) {
1097 $errors[] = "'{$claim}' claim must be an object";
1098 } else {
1099 foreach ($ext as $key => $value) {
1100 $this->messageParameters["ext_{$key}"] = $value;
1101 }
1102 }
1103 }
1104 $claim = Util::JWT_CLAIM_PREFIX . '/claim/lti1p1';
1105 if ($this->jwt->hasClaim($claim)) {
1106 unset($payload->{$claim});
1107 $lti1p1 = $this->jwt->getClaim($claim);
1108 if (!is_array($lti1p1) && !is_object($lti1p1)) {
1109 $errors[] = "'{$claim}' claim must be an object";
1110 } else {
1111 foreach ($lti1p1 as $key => $value) {
1112 if (is_null($value)) {
1113 $value = '';
1114 } elseif (is_object($value)) {
1115 $value = json_encode($value);
1116 }
1117 $this->messageParameters["lti1p1_{$key}"] = $value;
1118 }
1119 }
1120 }
1121 if (!empty($payload)) {
1122 $objVars = get_object_vars($payload);
1123 foreach ($objVars as $attrName => $attrValue) {
1124 if (empty((array) $attrValue)) {
1125 unset($payload->{$attrName});
1126 }
1127 }
1128 $this->messageParameters['unmapped_claims'] = json_encode($payload);
1129 }
1130 if (!empty($errors)) {
1131 $this->ok = false;
1132 $this->reason = 'Invalid JWT: ' . implode(', ', $errors);
1133 }
1134 }
$errors
Definition: imgupload.php:65

References $errors, ILIAS\LTI\ToolProvider\$key, $payload, ILIAS\LTI\ToolProvider\Util\cloneObject(), ILIAS\LTI\ToolProvider\Util\JWT_CLAIM_MAPPING, and ILIAS\LTI\ToolProvider\Util\JWT_CLAIM_PREFIX.

Referenced by ILIAS\LTI\ToolProvider\parseMessage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseMessage()

ILIAS\LTI\ToolProvider\parseMessage ( )
private

Parse the message.

Definition at line 885 of file System.php.

886 {
887 if (is_null($this->messageParameters)) {
888 $this->getRawParameters();
889 if (isset($this->rawParameters['id_token']) || isset($this->rawParameters['JWT'])) { // JWT-signed message
890 try {
891 $this->jwt = Jwt::getJwtClient();
892 if (isset($this->rawParameters['id_token'])) {
893 $this->ok = $this->jwt->load($this->rawParameters['id_token'], $this->rsaKey);
894 } else {
895 $this->ok = $this->jwt->load($this->rawParameters['JWT'], $this->rsaKey);
896 }
897 if (!$this->ok) {
898 $this->reason = 'Message does not contain a valid JWT';
899 } else {
900 $this->ok = $this->jwt->hasClaim('iss') && $this->jwt->hasClaim('aud') &&
901 $this->jwt->hasClaim(Util::JWT_CLAIM_PREFIX . '/claim/deployment_id');
902 if ($this->ok) {
903 $iss = $this->jwt->getClaim('iss');
904 $aud = $this->jwt->getClaim('aud');
905 $deploymentId = $this->jwt->getClaim(Util::JWT_CLAIM_PREFIX . '/claim/deployment_id');
906 $this->ok = !empty($iss) && !empty($aud) && !empty($deploymentId);
907 if (!$this->ok) {
908 $this->reason = 'iss, aud and/or deployment_id claim is empty';
909 } elseif (is_array($aud)) {
910 if ($this->jwt->hasClaim('azp')) {
911 $this->ok = !empty($this->jwt->getClaim('azp'));
912 if (!$this->ok) {
913 $this->reason = 'azp claim is empty';
914 } else {
915 $this->ok = in_array($this->jwt->getClaim('azp'), $aud);
916 if ($this->ok) {
917 $aud = $this->jwt->getClaim('azp');
918 } else {
919 $this->reason = 'azp claim value is not included in aud claim';
920 }
921 }
922 } else {
923 $aud = $aud[0];
924 $this->ok = !empty($aud);
925 if (!$this->ok) {
926 $this->reason = 'First element of aud claim is empty';
927 }
928 }
929 } elseif ($this->jwt->hasClaim('azp')) {
930 $this->ok = $this->jwt->getClaim('azp') === $aud;
931 if (!$this->ok) {
932 $this->reason = 'aud claim does not match the azp claim';
933 }
934 }
935 if ($this->ok) {
936 if ($this instanceof Tool) {
937 $this->platform = \ilLTIPlatform::fromPlatformId($iss, $aud, $deploymentId, $this->dataConnector);
938 $this->platform->platformId = $iss;
939 if (isset($this->rawParameters['id_token'])) {
940 $this->ok = !empty($this->rawParameters['state']);
941 if ($this->ok) {
942 $nonce = new PlatformNonce($this->platform, $this->rawParameters['state']);
943 $this->ok = $nonce->load();
944 if (!$this->ok) {
945 $platform = \ilLTIPlatform::fromPlatformId($iss, $aud, null, $this->dataConnector);
946 $nonce = new PlatformNonce($platform, $this->rawParameters['state']);
947 $this->ok = $nonce->load();
948 }
949 if (!$this->ok) {
950 $platform = \ilLTIPlatform::fromPlatformId($iss, null, null, $this->dataConnector);
951 $nonce = new PlatformNonce($platform, $this->rawParameters['state']);
952 $this->ok = $nonce->load();
953 }
954 if ($this->ok) {
955 $this->ok = $nonce->delete();
956 }
957 }
958 }
959 }
960 if ($this->ok) {
961 $this->messageParameters = array();
962 $this->messageParameters['oauth_consumer_key'] = $aud;
963 $this->messageParameters['oauth_signature_method'] = $this->jwt->getHeader('alg');
964 $this->parseClaims();
965 } else {
966 $this->reason = 'state parameter is invalid or missing';
967 }
968 }
969 } else {
970 $this->reason = 'iss, aud and/or deployment_id claim not found';
971 }
972 }
973 } catch (\Exception $e) {
974 $this->ok = false;
975 $this->reason = 'Message does not contain a valid JWT';
976 }
977 } elseif (isset($this->rawParameters['error'])) { // Error with JWT-signed message
978 $this->ok = false;
979 $this->reason = $this->rawParameters['error'];
980 if (!empty($this->rawParameters['error_description'])) {
981 $this->reason .= ": {$this->rawParameters['error_description']}";
982 }
983 } else { // OAuth
984 if (isset($this->rawParameters['oauth_consumer_key']) && ($this instanceof Tool)) {
985 //changed UK temporary
986// $this->platform = Platform::fromConsumerKey($this->rawParameters['oauth_consumer_key'], $this->dataConnector);
987 $this->platform = \ilLTIPlatform::fromConsumerKey($this->rawParameters['oauth_consumer_key'], $this->dataConnector);
988 }
989 $this->messageParameters = $this->rawParameters;
990 }
991 }
992 }
static fromConsumerKey(?string $key=null, $dataConnector=null, bool $autoEnable=false)
Load the platform from the database by its consumer key.
static fromPlatformId(string $platformId, string $clientId, string $deploymentId, ilLTIDataConnector $dataConnector=null, bool $autoEnable=false)
Load the platform from the database by its platform, client and deployment IDs.
parseClaims()
Parse the claims.
Definition: System.php:997
getRawParameters()
Get the raw POST parameters.
Definition: System.php:342

References Vendor\Package\$e, ILIAS\LTI\ToolProvider\$rawParameters, ilLTIPlatform\fromConsumerKey(), ilLTIPlatform\fromPlatformId(), ILIAS\LTI\ToolProvider\Jwt\Jwt\getJwtClient(), ILIAS\LTI\ToolProvider\getRawParameters(), ILIAS\LTI\ToolProvider\Util\JWT_CLAIM_PREFIX, and ILIAS\LTI\ToolProvider\parseClaims().

Referenced by ILIAS\LTI\ToolProvider\Platform\getMessageParameters(), and ILIAS\LTI\ToolProvider\Tool\getMessageParameters().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseRoles()

static ILIAS\LTI\ToolProvider\parseRoles (   $roles,
string  $ltiVersion = Util::LTI_VERSION1 
)
static

Get an array of fully qualified user roles.

Parameters
mixed$rolesComma-separated list of roles or array of roles
string$ltiVersionLTI version (default is LTI-1p0)
Returns
array Array of roles

Definition at line 538 of file System.php.

538 : array
539 {
540 if (!is_array($roles)) {
541 $roles = array_filter(explode(',', str_replace(' ', '', $roles)), 'strlen');
542 }
543 $parsedRoles = array();
544 foreach ($roles as $role) {
545 $role = trim($role);
546 if (!empty($role)) {
547 if ($ltiVersion === Util::LTI_VERSION1) {
548 if ((substr($role, 0, 4) !== 'urn:') &&
549 (substr($role, 0, 7) !== 'http://') && (substr($role, 0, 8) !== 'https://')) {
550 $role = 'urn:lti:role:ims/lis/' . $role;
551 }
552 } elseif ((substr($role, 0, 7) !== 'http://') && (substr($role, 0, 8) !== 'https://')) {
553 $role = 'http://purl.imsglobal.org/vocab/lis/v2/membership#' . $role;
554 }
555 $parsedRoles[] = $role;
556 }
557 }
558
559 return $parsedRoles;
560 }

References ILIAS\LTI\ToolProvider\Util\LTI_VERSION1.

Referenced by ILIAS\LTI\ToolProvider\Tool\authenticate(), ILIAS\LTI\ToolProvider\Service\Membership\getMembers(), and ILIAS\LTI\ToolProvider\ResourceLink\getMemberships().

+ Here is the caller graph for this function:

◆ saveSettings()

ILIAS\LTI\ToolProvider\saveSettings ( )

Save setting values.

Returns
bool True if the settings were successfully saved

Definition at line 306 of file System.php.

306 : bool
307 {
308 if ($this->settingsChanged) {
309 $ok = $this->save();
310 } else {
311 $ok = true;
312 }
313
314 return $ok;
315 }

◆ sendMessage()

ILIAS\LTI\ToolProvider\sendMessage ( string  $url,
string  $type,
array  $messageParams,
string  $target = '',
?string  $userId = null,
string  $hint = '' 
)

Generate a web page containing an auto-submitted form of LTI message parameters.

Parameters
string$urlURL to which the form should be submitted
string$typeLTI message type
array$messageParamsArray of form parameters
string$targetName of target (optional)
string | null$userIdID of user (optional)
string$hintLTI message hint (optional, use null for none)
Returns
string

Definition at line 644 of file System.php.

644 : string
645 {
646 $sendParams = $this->signMessage($url, $type, $this->ltiVersion, $messageParams, $userId, $hint);
647 $html = Util::sendForm($url, $sendParams, $target);
648
649 return $html;
650 }
signMessage(string &$url, string $type, string $version, array $params, string $loginHint=null, string $ltiMessageHint=null)
Add the signature to an LTI message.
Definition: System.php:595
$url

References $type, $url, ILIAS\LTI\ToolProvider\Util\sendForm(), and ILIAS\LTI\ToolProvider\signMessage().

Referenced by ILIAS\LTI\ToolProvider\Tool\result().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setKey()

ILIAS\LTI\ToolProvider\setKey ( string  $key)

Set the consumer key.

Parameters
string$keyConsumer key value

Definition at line 242 of file System.php.

243 {
244 $this->key = $key;
245 }

References ILIAS\LTI\ToolProvider\$key.

◆ setRecordId()

ILIAS\LTI\ToolProvider\setRecordId ( int  $id)

Sets the system record ID.

Parameters
int$idSystem record ID value

Definition at line 223 of file System.php.

224 {
225 $this->id = $id;
226 }

References ILIAS\LTI\ToolProvider\$id.

Referenced by ilAdvancedMDFieldDefinition\import().

+ Here is the caller graph for this function:

◆ setSetting()

ILIAS\LTI\ToolProvider\setSetting ( string  $name,
string  $value = null 
)

Set a setting value.

Parameters
string$nameName of setting
string | null$valueValue to set, use an empty value to delete a setting (optional, default is null)

Definition at line 269 of file System.php.

270 {
271 $old_value = $this->getSetting($name);
272 if ($value !== $old_value) {
273 if (!empty($value)) {
274 $this->settings[$name] = $value;
275 } else {
276 unset($this->settings[$name]);
277 }
278 $this->settingsChanged = true;
279 }
280 }
getSetting(string $name, string $default='')
Get a setting value.
Definition: System.php:253

References $name, ILIAS\getSetting(), and ILIAS\Repository\settings().

Referenced by ilSettingsTemplate\read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSettings()

ILIAS\LTI\ToolProvider\setSettings ( array  $settings)

Set an array of all setting values.

Parameters
array$settingsAssociative array of setting values

Definition at line 296 of file System.php.

297 {
298 $this->settings = $settings;
299 }

References ILIAS\LTI\ToolProvider\$settings, and ILIAS\Repository\settings().

+ Here is the call graph for this function:

◆ signMessage()

ILIAS\LTI\ToolProvider\signMessage ( string &  $url,
string  $type,
string  $version,
array  $params,
string  $loginHint = null,
string  $ltiMessageHint = null 
)

Add the signature to an LTI message.

If the message is being sent from a platform using LTI 1.3, then the parameters and URL will be saved and replaced with an initiate login request.

Parameters
string$urlURL for message request
string$typeLTI message type
string$versionLTI version
array$paramsMessage parameters
string | null$loginHintID of user (optional)
string | null$ltiMessageHintLTI message hint (optional, use null for none)
Returns
array|string Array of signed message parameters or request headers

Definition at line 595 of file System.php.

596 {
597 if (($this instanceof Platform) && ($this->ltiVersion === Util::LTI_VERSION1P3)) {
598 if (!isset($loginHint) || (strlen($loginHint) <= 0)) {
599 if (isset($params['user_id']) && (strlen($params['user_id']) > 0)) {
600 $loginHint = $params['user_id'];
601 } else {
602 $loginHint = 'Anonymous';
603 }
604 }
605 // Add standard parameters
606 $params['lti_version'] = $version;
607 $params['lti_message_type'] = $type;
608 $this->onInitiateLogin($url, $loginHint, $ltiMessageHint, $params);
609
610 $params = array(
611 'iss' => $this->platformId,
612 'target_link_uri' => $url,
613 'login_hint' => $loginHint
614 );
615 if (!is_null($ltiMessageHint)) {
616 $params['lti_message_hint'] = $ltiMessageHint;
617 }
618 if (!empty($this->clientId)) {
619 $params['client_id'] = $this->clientId;
620 }
621 if (!empty($this->deploymentId)) {
622 $params['lti_deployment_id'] = $this->deploymentId;
623 }
624 if (!empty(Tool::$defaultTool)) {
625 $url = Tool::$defaultTool->initiateLoginUrl;
626 }
627 } else {
629 }
630
631 return $params;
632 }
$version
Definition: plugin.php:24
Class to represent a platform.
Definition: Platform.php:36
$ltiMessageHint
Definition: ltiauth.php:51
signParameters(string $url, string $type, string $version, array $params)
Add the signature to an LTI message.
Definition: System.php:570

References $clientId, ILIAS\LTI\ToolProvider\Tool\$defaultTool, $ltiMessageHint, $params, $type, $url, $version, ILIAS\LTI\ToolProvider\Util\LTI_VERSION1P3, and ILIAS\LTI\ToolProvider\signParameters().

Referenced by ILIAS\LTI\ToolProvider\sendMessage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ signParameters()

ILIAS\LTI\ToolProvider\signParameters ( string  $url,
string  $type,
string  $version,
array  $params 
)

Add the signature to an LTI message.

Parameters
string$urlURL for message request
string$typeLTI message type
string$versionLTI version
array$paramsMessage parameters
Returns
array|string Array of signed message parameters or request headers

Definition at line 570 of file System.php.

571 {
572 if (!empty($url)) {
573 // Add standard parameters
574 $params['lti_version'] = $version;
575 $params['lti_message_type'] = $type;
576 // Add signature
577 $params = $this->addSignature($url, $params, 'POST', 'application/x-www-form-urlencoded');
578 }
579
580 return $params;
581 }

References $params, $type, $url, $version, and ILIAS\LTI\ToolProvider\addSignature().

Referenced by ILIAS\LTI\ToolProvider\signMessage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ signServiceRequest()

ILIAS\LTI\ToolProvider\signServiceRequest ( string  $url,
string  $method,
string  $type,
  $data = null 
)

Generates the headers for an LTI service request.

Parameters
string$urlURL for message request
string$methodHTTP method
string$typeMedia type
string | array | null$dataData being passed in request body (optional) //UK: added array
Returns
string Headers to include with service request

Definition at line 660 of file System.php.

660 : string
661 {
662 $header = '';
663 if (!empty($url)) {
664 $header = $this->addSignature($url, $data, $method, $type);
665 }
666
667 return $header;
668 }

References $data, $type, $url, and ILIAS\LTI\ToolProvider\addSignature().

+ Here is the call graph for this function:

◆ useOAuth1()

ILIAS\LTI\ToolProvider\useOAuth1 ( )

Determine whether this consumer is using the OAuth 1 security model.

Returns
bool True if OAuth 1 security model should be used

Definition at line 698 of file System.php.

698 : bool
699 {
700 return empty($this->signatureMethod) || (substr($this->signatureMethod, 0, 2) !== 'RS');
701 }

Referenced by ILIAS\LTI\ToolProvider\addSignature(), ILIAS\LTI\ToolProvider\ResourceLink\doLTI11Service(), and ILIAS\LTI\ToolProvider\ResourceLink\doService().

+ Here is the caller graph for this function:

◆ verifySignature()

ILIAS\LTI\ToolProvider\verifySignature ( )

Verify the signature of a message.

Returns
bool True if the signature is valid

Definition at line 781 of file System.php.

781 : bool
782 {
783 $ok = false;
785 $publicKey = ''; //changed
786 if (!empty($key)) {
788 } elseif (($this instanceof Tool) && !empty($this->platform)) {
789 $key = $this->platform->getKey();
790 $secret = $this->platform->secret;
791 } elseif (($this instanceof Platform) && !empty(Tool::$defaultTool)) {
792 $key = Tool::$defaultTool->getKey();
793 $secret = Tool::$defaultTool->secret;
794 }
795 if ($this instanceof Tool) {
796 $platform = $this->platform;
797 $publicKey = $this->platform->rsaKey;
798 $jku = $this->platform->jku;
799 } else {
800 $platform = $this;
801 if (!empty(Tool::$defaultTool)) {
802 $publicKey = Tool::$defaultTool->rsaKey;
803 $jku = Tool::$defaultTool->jku;
804 } else {
805 $publicKey = $this->rsaKey;
807 }
808 }
809
810 if (empty($this->jwt) || empty($this->jwt->hasJwt())) { // OAuth-signed message
811 try {
812 $store = new OAuthDataStore($this);
813// $server = new OAuth\OAuthServer($store);
814 $server = new LTIOAuth\OAuthServer($store);
815 //ToDo OAuthSignatureMethod
816// $method = new OAuth\OAuthSignatureMethod_HMAC_SHA224();
817// $server->add_signature_method($method);
818// $method = new OAuth\OAuthSignatureMethod_HMAC_SHA256();
819// $server->add_signature_method($method);
820// $method = new OAuth\OAuthSignatureMethod_HMAC_SHA384();
821// $server->add_signature_method($method);
822// $method = new OAuth\OAuthSignatureMethod_HMAC_SHA512();
823// $server->add_signature_method($method);
824// $method = new OAuth\OAuthSignatureMethod_HMAC_SHA1();
825 $method = new LTIOAuth\OAuthSignatureMethod_HMAC_SHA1();
826 $server->add_signature_method($method);
827// $request = OAuth\OAuthRequest::from_request();
828 $request = LTIOAuth\OAuthRequest::from_request();
829 $server->verify_request($request);
830 $ok = true;
831 } catch (\Exception $e) {
832 if (empty($this->reason)) {
833// $oauthConsumer = new OAuth\OAuthConsumer($key, $secret);
834 $oauthConsumer = new LTIOAuth\OAuthConsumer($key, $secret);
835// $signature = $request->build_signature($method, $oauthConsumer, false);
836 $signature = $request->build_signature($method, $oauthConsumer, null);
837 if ($this->debugMode) {
838 $this->reason = $e->getMessage();
839 }
840 if (empty($this->reason)) {
841 $this->reason = 'OAuth signature check failed - perhaps an incorrect secret or timestamp.';
842 }
843 $this->details[] = "Shared secret: '{$secret}'";
844 $this->details[] = 'Current timestamp: ' . time();
845 $this->details[] = "Expected signature: {$signature}";
846 $this->details[] = "Base string: {$request->base_string}";
847 }
848 }
849 } else { // JWT-signed message
850 $nonce = new PlatformNonce($platform, $this->jwt->getClaim('nonce'));
851
852 $ok = !$nonce->load();
853 if ($ok) {
854 $ok = $nonce->save();
855 }
856 if (!$ok) {
857 $this->reason = 'Invalid nonce.';
858 } elseif (!empty($publicKey) || !empty($jku) || Jwt::$allowJkuHeader) {
859 if (empty($publicKey)) { //added
860 $publicKey = "";
861 }
862 if (empty($jku)) { //added
863 $jku = "";
864 }
865 $ok = $this->jwt->verify($publicKey, $jku);
866 if (!$ok) {
867 $this->reason = 'JWT signature check failed - perhaps an invalid public key or timestamp';
868 }
869 } else {
870 $ok = false;
871 $this->reason = 'Unable to verify JWT signature as neither a public key nor a JSON Web Key URL is specified';
872 }
873 }
874
875 return $ok;
876 }
$server
$store
Definition: metadata.php:107

References ILIAS\LTI\ToolProvider\Jwt\Jwt\$allowJkuHeader, ILIAS\LTI\ToolProvider\Tool\$defaultTool, Vendor\Package\$e, ILIAS\LTI\ToolProvider\$jku, ILIAS\LTI\ToolProvider\$key, ILIAS\LTI\ToolProvider\$rsaKey, ILIAS\LTI\ToolProvider\$secret, $server, and $store.

Referenced by ILIAS\LTI\ToolProvider\Platform\authenticate(), and ILIAS\LTI\ToolProvider\Tool\authenticate().

+ Here is the caller graph for this function:

Variable Documentation

◆ $created

◆ $dataConnector

◆ $debugMode

bool ILIAS::LTI::ToolProvider::$debugMode = false

Whether debug level messages are to be reported.

Definition at line 116 of file System.php.

◆ $details

◆ $enabled

◆ $enableFrom

int null ILIAS::LTI::ToolProvider::$enableFrom = null

Timestamp from which the the system instance is enabled to accept connection requests.

Definition at line 130 of file System.php.

◆ $enableUntil

int null ILIAS::LTI::ToolProvider::$enableUntil = null

Timestamp until which the system instance is enabled to accept connection requests.

Definition at line 137 of file System.php.

◆ $encryptionMethod

string ILIAS::LTI::ToolProvider::$encryptionMethod = ''

Algorithm used for encrypting messages.

Definition at line 57 of file System.php.

◆ $id

◆ $jku

◆ $jwt

ClientInterface null ILIAS::LTI::ToolProvider::$jwt = null
protected

◆ $key

string null ILIAS::LTI::ToolProvider::$key = null
private

Consumer key/client ID value.

Definition at line 193 of file System.php.

Referenced by ilAssOrderingElementList\__clone(), ActiveRecord\__construct(), ilScormAiccDataSet\__construct(), ilPageConfig\__construct(), ILIAS\Notifications\ilNotificationSettingsTable\__construct(), ilBcryptPasswordEncoder\__construct(), ilBcryptPhpPasswordEncoder\__construct(), ilUserPasswordEncoderFactory\__construct(), ilUserPasswordManager\__construct(), ILIAS\Refinery\KindlyTo\Transformation\RecordTransformation\__construct(), ILIAS\Refinery\To\Transformation\RecordTransformation\__construct(), ilAssQuestionHintsTableGUI\__construct(), FormMailCodesGUI\__construct(), ilLDAPSettingsGUI\__construct(), ilAsyncPropertyFormGUI\__construct(), ILIAS\Style\Content\CharacteristicCopyPasteSessionRepo\__construct(), ilSearchGUI\__getFilter(), ilUserXMLWriter\__handlePreferences(), assQuestion\__isset(), assQuestion\__set(), ilSurveyCategory\__set(), ilSurveyPhrases\__set(), SurveyQuestion\__set(), ilRbacReview\__setRoleType(), ilMDEditorGUI\__setTabs(), ilTree\__validateSubtrees(), PEAR\_checkDelExpect(), ilObjLanguageExt\_deleteValues(), ilObjSCORM2004LearningModule\_getCourseCompletionForUser(), ilNewsItem\_getDefaultVisibilityForRefId(), ilMDUtilSelect\_getDifficultySelect(), ilMDUtilSelect\_getDurationSelect(), ilMDFactory\_getInstance(), ilMDUtilSelect\_getInteractivityLevelSelect(), ilObjAssessmentFolder\_getLog(), ilMailBoxQuery\_getMailBoxListData(), ilMDUtilSelect\_getSemanticDensitySelect(), ilObjSCORMLearningModule\_getStatusForUser(), assQuestion\_getTotalRightAnswers(), ILIAS\UI\Implementation\Component\Input\_isClientSideValueOk(), ilBlockSetting\_lookup(), ilObjLanguageExt\_saveValues(), ilHierarchyFormGUI\_str(), ILIAS\Refinery\To\Transformation\DictionaryTransformation\accepts(), ILIAS\Refinery\To\Transformation\RecordTransformation\accepts(), ILIAS\Refinery\To\Transformation\TupleTransformation\accepts(), ILIAS\GlobalScreen\ScreenContext\AdditionalData\Collection\add(), ILIAS\GlobalScreen\ScreenContext\BasicScreenContext\addAdditionalData(), ilLocatorGUI\addAdministrationItems(), ilObjOrgUnitGUI\addAdminLocatorItems(), ilDclLinkButton\addAttribute(), ilLocatorGUI\addContextItems(), ilDclGenericMultiInputGUI\addCustomAttribute(), ilOrgUnitGenericMultiInputGUI\addCustomAttribute(), ilOrgUnitMultiLineInputGUI\addCustomAttribute(), ILIAS\Notes\FilterAdapterGUI\addField(), ILIAS\Repository\Form\FormAdapterGUI\addField(), ilDclBaseRecordFieldModel\addHiddenItemsToConfirmation(), ilDclFileuploadRecordFieldModel\addHiddenItemsToConfirmation(), ilDclMobRecordFieldModel\addHiddenItemsToConfirmation(), ilDclGenericMultiInputGUI\addHook(), ilOrgUnitGenericMultiInputGUI\addHook(), ilOrgUnitMultiLineInputGUI\addHook(), ilObjStudyProgrammeTreeExplorerGUI\addJsConf(), ilAsyncContainerSelectionExplorer\addJsConf(), ilAsyncNotifications\addJsConfig(), ilUserQuestionResult\addKeyValue(), ilMDClassification\addKeyword(), ilMDGeneral\addKeyword(), ILIAS\GlobalScreen\Scope\Layout\MetaContent\MetaContent\addMetaDatum(), ILIAS\LTI\ToolProvider\addOAuth1Signature(), ILIAS\UI\Implementation\Component\Signal\addOption(), ilTestExpressPageObjectGUI\addQuestion(), ilObjTestGUI\addQuestionObject(), ilLocatorGUI\addRepositoryItems(), ilMDEditorGUI\addSection(), ilObjRoleGUI\adoptPermObject(), assOrderingQuestionGUI\aggregateAnswers(), ilTestExport\aggregatedResultsToCSV(), ilTestExport\aggregatedResultsToExcel(), ilCtrl\appendParameterStringsByClass(), ilFormatMail\appendSearchResult(), ilObjFileAbstractProcessor\applyOptions(), ilFormPropertyGUI\arrayArray(), ILIAS\Repository\arrayArray(), ILIAS\UI\examples\Table\Data\base(), ILIAS\Skill\Service\SkillGUIRequest\bool(), ILIAS\Skill\Service\SkillGUIRequest\boolArray(), ilForumNotificationEventsFormGUI\build(), ilLanguageFile\build(), ActiveRecordList\buildArray(), ilObjLTIConsumer\buildContentSelectionParameters(), ilObjLTIConsumer\buildLaunchParametersLTI13(), ilCmiXapiDataSet\buildManifest(), ilScormAiccDataSet\buildManifest(), ilCmiXapiDataSet\buildProperties(), ilScormAiccDataSet\buildProperties(), ActiveRecordList\buildRow(), ilLSStateDB\buildStates(), ilvCard\buildVCard(), ilPageQuestionProcessor\calculatePoints(), assSingleChoice\calculateReachedPoints(), assImagemapQuestion\calculateReachedPointsForSolution(), assKprimChoice\calculateReachedPointsForSolution(), assLongMenu\calculateReachedPointsForSolution(), assMultipleChoice\calculateReachedPointsForSolution(), assClozeTest\calculateReachedPointsFromPreviewSession(), assSingleChoice\calculateReachedPointsFromPreviewSession(), ilObjSystemFolderGUI\changeHeaderTitleObject(), ilObjLanguage\check(), ilObjLanguageFolder\checkAllLanguages(), ilOrgUnitGenericMultiInputGUI\checkInput(), ilClozeGapInputBuilderGUI\checkInput(), ilMultiSelectInputGUI\checkInput(), ilSetupLanguage\checkLanguage(), assLongMenu\checkQuestionCustomPart(), ilWkhtmlToPdfRenderer\checkReturnValueFromCommandLine(), ilLDAPSettingsGUI\chooseMapping(), ilTestFixedQuestionSetConfig\cloneQuestionSetRelatedData(), ilObjLearningSequence\cloneSettings(), ilObjUserFolderGUI\collectChangedFields(), ilChatroomMetricsCollectedObjective\collectFrom(), assClozeTestGUI\completeAddAnswerAction(), assTextSubsetGUI\completeAddAnswerAction(), ilTestSkillLevelThresholdsTableGUI\completeCompetenceTitles(), assErrorText\completeParsedErrorTextFromErrorData(), ilObjPDFGenerationGUI\configForm(), ilObjQuestionPoolGUI\confirmDeleteQuestionsObject(), ilObjTestGUI\confirmRemoveQuestionsObject(), ilSurveyConstraintsGUI\constraintsAddObject(), ilSurveyConstraintsGUI\constraintStep1Object(), ilBuddySystemArrayCollection\containsKey(), ilObjSurveyQuestionPoolGUI\copyObject(), ilObjQuestionPoolGUI\copyObject(), assLongMenu\correctAnswerDoesNotExistInAnswerOptions(), assErrorText\correctDataAfterParserUpdate(), ilAssLacCompositeBuilder\create(), ilNotificationOSDTest\createDBFunctionCalls(), ilMailbox\createDefaultFolder(), assLongMenu\createFileFromArray(), assClozeTest\createGapsFromQuestiontext(), ILIAS\LTI\ToolProvider\Service\LineItem\createLineItem(), ILIAS\Certificate\API\Repository\UserDataRepository\createOrderByClause(), ilSCORMExplorer\createOutput(), ilSCORMExplorer\createOutputArray(), ilObjectCustomUserFieldsPlaceholderDescription\createPlaceholderHtmlDescription(), ilUserDefinedFieldsPlaceholderDescription\createPlaceholderHtmlDescription(), ilObjTestGUI\createQuestionObject(), ilSCORM13PlayerGUI\createSummary(), ilObjLanguage\cut_header(), ilSetupLanguage\cut_header(), ilSCORM13Package\dbImport(), ilLDAPRoleGroupMapping\deassignFromGroup(), ilMDClassification\delete(), ilMDGeneral\delete(), arConnectorCache\delete(), ilGlobalCache\delete(), ilShm\delete(), ilCalendarCategoryAssignments\deleteAssignment(), ilGeoLocationFileMockRepository\deleteExpiredGeoLocations(), ilGeoLocationFileMockRepository\deleteGeoLocation(), ilGeoLocationFileMockRepository\deleteGeoLocationsByCoordinates(), assClozeGap\deleteItem(), ASS_MarkSchema\deleteMarkSteps(), SurveyQuestion\deleteMaterial(), ilAssQuestionSkillAssignmentRegistry\deleteStringifiedImports(), PEAR\delExpect(), ilPublicUserProfileGUI\deliverVCard(), ilUserSearchFilter\disableField(), ilObjTypeDefinitionGUI\displayList(), ilBookingProcessGUI\displayPostInfo(), ilMailSearchObjectGUI\doesExposeMembers(), ilObjForumGUI\doHistoryCheck(), ILIAS\Setup\Metrics\ArrayStorage\doStore(), ilObjLanguageFolderGUI\downloadDeprecatedObject(), ilObjMediaObject\duplicate(), ilPCResourcesGUI\edit(), ilObjTypeDefinitionGUI\editObject(), assSingleChoiceGUI\editQuestion(), ilUserSearchFilter\enableField(), ilAccountMail\ensureValidMailDataShape(), ilADTLocalizedText\equals(), ilDataCollectionDataSet\escapeArray(), ilObjTest\evalStatistical(), ilObjTest\evalTotalStartedAverageTime(), ILIAS\OrgUnit\Webservices\SOAP\Base\execute(), ilMailGUI\executeCommand(), ilGlobalCache\exists(), ilShm\exists(), ILIAS\GlobalScreen\ScreenContext\AdditionalData\Collection\exists(), ilObjAssessmentFolderGUI\exportLogObject(), ilMultipleNestedOrderingElementsAdditionalIndexLevelRemover\fetchIndentationsFromSubmitValues(), ilTree\fetchNodeData(), assOrderingQuestion\fetchSolutionSubmit(), ilMailFolderTableGUI\fetchTableData(), ilTestSequenceDynamicQuestionSet\fetchTrackedCorrectAnsweredSequence(), ilQuestionBrowserTableGUI\fillHeader(), ilBookingObjectsTableGUI\fillRow(), ilBookingReservationsTableGUI\fillRow(), ilStudyProgrammeMailMemberSearchTableGUI\fillRow(), ilAdvancedMDFieldTableGUI\fillRow(), ilBlockGUI\fillRow(), ilMailMemberSearchTableGUI\fillRow(), ilMailSearchObjectMembershipsTableGUI\fillRow(), ilMailSearchObjectsTableGUI\fillRow(), ilMailFolderTableGUI\fillRow(), ilTable2GUI\fillRow(), ilTable2GUI\fillRowCSV(), ilTemplate\fillVars(), ilSessionMaterialsTableGUI\filterData(), ilCtrlStructureHelper\filterUnnecessaryEntries(), ilCalendarVisibility\forceVisibility(), ilObjLearningSequenceGUI\forwardByClass(), ILIAS\LTI\ToolProvider\Platform\fromConsumerKey(), ILIAS\LTI\ToolProvider\Tool\fromConsumerKey(), assKprimChoiceImport\fromXML(), assMultipleChoiceImport\fromXML(), assSingleChoiceImport\fromXML(), ilBuddySystemArrayCollection\get(), ilGlobalCache\get(), ilStaticCache\get(), ILIAS\MediaObjects\ImageMap\ImageMapEditSessionRepository\get(), ILIAS\FileUpload\Collection\EntryLockingStringMap\get(), ILIAS\FileUpload\Collection\ImmutableMapWrapper\get(), ILIAS\GlobalScreen\ScreenContext\AdditionalData\Collection\get(), ilBadgeGUIRequest\get(), ILIAS\Repository\get(), ILIAS\Skill\Service\SkillGUIRequest\get(), ILIAS\Setup\AgentCollection\getAgent(), assErrorTextGUI\getAggregatedAnswersView(), assLongMenuGUI\getAggregatedAnswersView(), ilBuddySystemRelationRepository\getAll(), assErrorTextGUI\getAnswersFrequency(), assMatchingQuestionGUI\getAnswersFrequency(), assOrderingQuestionGUI\getAnswersFrequency(), ilPageQuestionProcessor\getAnswerStatus(), ActiveRecord\getArray(), ActiveRecordList\getArray(), ILIAS\Setup\AgentCollection\getArrayToConfigTransformation(), ilPasswordAssistanceGUI\getAssignPasswordForm(), ilDclLinkButton\getAttribute(), ilLDAPSettingsGUI\getAttributeMappingKeys(), ilAdvancedMDTranslationGUI\getAvailableLanguagesOptions(), assClozeGap\getBestSolutionIndexes(), assClozeGapCombination\getCleanCombinationArray(), ilDclCache\getCloneOf(), ilSCORM13PlayerGUI\getCMIData(), ILIAS\Survey\Editing\EditingGUIRequest\getCodeMailPart(), ILIAS\Survey\Editing\EditingGUIRequest\getCodesPar(), ilContainer\getCompleteDescriptions(), ILIAS\Setup\ConfigCollection\getConfig(), ilDclSelectionFieldModel\getConfirmationGUI(), ILIAS\Survey\Editing\EditingGUIRequest\getConstraintPar(), ilFeedWriter\getContextPath(), ILIAS\Awareness\AwarenessSessionRepository\getCount(), ILIAS\Repository\Form\FormAdapterGUI\getData(), ilSCORM13PlayerGUI\getDebugValues(), DifferenceEngine\getDiffBody(), ilPublicUserProfileGUI\getEmbeddable(), ilOnScreenChatGUI\getEmoticons(), ilObjUserFolder\getExportSettings(), ilHtmlPurifierCompositeTest\getFakePurifier(), ilTimingsCronReminder\getFreshlyStartedObjectsForUser(), ilObjectRequestRetriever\getFromRequest(), ilConsultationHourGroups\getGroupSelectOptions(), ILIAS\Survey\Editing\EditingGUIRequest\getHForm(), ILIAS\Awareness\AwarenessSessionRepository\getHighlightCount(), ilDclGenericMultiInputGUI\getHook(), ilOrgUnitGenericMultiInputGUI\getHook(), ilOrgUnitMultiLineInputGUI\getHook(), ILIAS\LTI\ToolProvider\Platform\getId(), ILIAS\LTI\ToolProvider\UserResult\getId(), ilDclContentImporter\getImportFieldsFromTitles(), ilExplorer\getIndex(), ilApc\getInfo(), ilMemcache\getInfo(), ilLTIConsumerAdministrationGUI\getInput(), ilDclReferenceFieldRepresentation\getInputField(), ILIAS\UI\Implementation\Component\Input\Field\SwitchableGroup\getInputsWithOperationForKey(), ilCachedLanguage\getInstance(), assQuestion\getInstances(), ilGlossaryTermGUI\getInternalLinks(), ilPageObject\getInternalLinks(), Title\getInterwikiCached(), Title\getInterwikiLink(), ilAdminSubItemsTableGUI\getItems(), ilTrObjectUsersPropsTableGUI\getItems(), ilBookingReservationsTableGUI\getItems(), ilObjStudyProgrammeTreeExplorerGUI\getJsConf(), ilAsyncContainerSelectionExplorer\getJsConf(), ilAsyncNotifications\getJsConfig(), ILIAS\LTI\ToolProvider\Jwt\FirebaseClient\getJWKS(), ILIAS\LTI\ToolProvider\getKey(), ilMDClassification\getKeyword(), ilMDGeneral\getKeyword(), ILIAS\Glossary\Term\TermSessionRepository\getLang(), ILIAS\Awareness\AwarenessSessionRepository\getLastUpdate(), ilObjAssessmentFolder\getLog(), ilObjAssessmentFolderGUI\getLogDataOutputForm(), ilLTIConsumerContentGUI\getLoginLTI13Form(), assLongMenuGUI\getLongMenuTextWithInputFieldsInsteadOfGaps(), ilLSViewLayoutProvider\getMainBarModification(), ilObjExternalToolsSettingsGUI\getMapsForm(), assImagemapQuestion\getMaximumPoints(), assMultipleChoice\getMaximumPoints(), assSingleChoice\getMaximumPoints(), ILIAS\LTI\ToolProvider\getMessageClaims(), ILIAS\Filesystem\Stream\Stream\getMetadata(), ilQuestionExporter\getMobs(), ilTimingsCronReminder\getNewExceededObjectForUser(), ilAssQuestionSkillAssignmentRegistry\getNumberOfChunksByKey(), ILIAS\UI\Implementation\Component\Signal\getOption(), ilExplorer\getOutput(), ilSimpleSAMLphpWrapper\getParam(), ilCtrl\getParameterArrayByClass(), ilAdvancedMDSettingsGUI\getParsedRecordObjects(), ilTestResultsToolbarGUI\getParticipantSelectorOptionsWithHintOption(), ILIAS\Exercise\PeerReview\ExcPeerReviewDistribution\getPeersOfRater(), ilObjectCustomUserFieldsPlaceholderValues\getPlaceholderValuesForPreview(), ilSCORM13PlayerGUI\getPlayer(), ILIAS\UI\Implementation\Crawler\Entry\ComponentEntryDescription\getProperty(), ILIAS\Container\Content\BlockSessionRepository\getProperty(), ilDclSelectionFieldModel\getProperty(), ilDclBaseFieldModel\getPropertyInstance(), ilObjSurveyQuestionPool\getQuestionsData(), ilTestService\getQuestionSummaryData(), assMatchingQuestion\getRandomId(), ilMailFormCall\getRecipients(), ILIAS\UI\Implementation\Render\LoaderCachingWrapper\getRendererFor(), ilExerciseManagementGUI\getReportPanel(), ILIAS\Repository\Form\FormAdapterGUI\getRepoStandardUploadHandlerGUI(), ilFormPropertyGUI\getRequestParam(), ilObjLTIConsumerGUI\getRequestValue(), ilObjLTIConsumerVerificationGUI\getRequestValue(), ilObjCmiXapiVerificationGUI\getRequestValue(), ilObjCourseVerificationGUI\getRequestValue(), ilObjExerciseVerificationGUI\getRequestValue(), ilLTIConsumerContentGUI\getRequestValue(), ilObjSCORMVerificationGUI\getRequestValue(), ilObjTestVerificationGUI\getRequestValue(), ilCronManagerGUI\getRequestValue(), ilEvaluationAllTableGUI\getSelectedColumns(), assLongMenuGUI\getSelectGapTemplate(), ilTestSequence\getSequenceSummary(), ilTestSequenceDynamicQuestionSet\getSequenceSummary(), ilECSSetting\getServerURI(), ILIAS\Portfolio\Access\AccessSessionRepository\getSharedSessionPassword(), ilUserQuestionResult\getSolutionForKey(), assFormulaQuestion\getSolutionSubmit(), assLongMenu\getSolutionSubmit(), assClozeTest\getSolutionSubmitValidation(), ilObjSCORMLearningModule\getStatusForUser(), ilAssQuestionSkillAssignmentRegistry\getStringifiedImports(), ilMailbox\getSubFolders(), ilObjectDefinition\getSubobjectsToFilter(), SurveyQuestionEvaluation\getSumScores(), ilDBPdoReverse\getTableFieldDefinition(), ilObjQuestionPoolGUI\getTabs(), ilObjTestGUI\getTargetQuestionpoolForm(), ilMailFormCall\getTargetUrl(), ilMailTemplateGUI\getTemplateForm(), assLongMenuGUI\getTextGapTemplate(), ILIAS\OrgUnit\Provider\OrgUnitToolProvider\getToolsForContextStack(), ilCmiXapiDataSet\getTypes(), ilScormAiccDataSet\getTypes(), ilAssQuestionSkillAssignmentList\getUniqueAssignedSkills(), ilChatroomFormFactory\getUserChatNameSelectionForm(), ilDclGenericMultiInputGUI\getValue(), ilOrgUnitGenericMultiInputGUI\getValue(), ilOrgUnitMultiLineInputGUI\getValue(), ILIAS\UI\Implementation\Component\Input\Field\HasDynamicInputsBase\getValue(), ILIAS\UI\Implementation\Component\Input\Field\SwitchableGroup\getValue(), shibConfig\getValueByKey(), ILIAS\KioskMode\State\getValueFor(), ilTestService\getVirtualSequenceUserResults(), SurveyMatrixQuestion\getWorkingDataFromUserInput(), ilRbacAdmin\grantPermission(), ilPDSelectedItemsBlockViewGUI\groupItemsByLocation(), ilPDSelectedItemsBlockViewGUI\groupItemsByStartDate(), assKprimChoiceGUI\handleAnswerTextsSubmit(), ilPCAMDForm\handleCopiedContent(), SurveyImportParser\handlerBeginTag(), SurveyImportParser\handlerEndTag(), ilObjUserFolderGUI\handleUploadedFiles(), ilObjectRequestRetriever\has(), ILIAS\FileUpload\Collection\EntryLockingStringMap\has(), ILIAS\FileUpload\Collection\ImmutableMapWrapper\has(), ILIAS\HTTP\Wrapper\ArrayBasedRequestWrapper\has(), ilMMItemTranslationStorage\hasDefaultTranslation(), ilDclBaseFieldModel\hasProperty(), ilDelegatingHandler\hideSensitiveData(), ilLMPresentationGUI\ilLocator(), SurveyMatrixQuestion\importAdditionalMetadata(), SurveyMultipleChoiceQuestion\importAdditionalMetadata(), SurveySingleChoiceQuestion\importAdditionalMetadata(), SurveyMatrixQuestionGUI\importEditFormValues(), SurveyMultipleChoiceQuestionGUI\importEditFormValues(), SurveySingleChoiceQuestionGUI\importEditFormValues(), ilUserImportParser\importEndTag(), ilSurveyParticipantsGUI\importExternalRecipientsFromFileObject(), ilSurveyParticipantsGUI\importExternalRecipientsFromTextObject(), assClozeGapCombination\importGapCombinationToDb(), ilTaggingClassificationProvider\importPostData(), ilAssQuestionSkillAssignmentList\incrementMaxPointsBySkill(), ilAssQuestionSkillAssignmentList\incrementNumAssignsBySkill(), ilPageLayoutAdministrationGUI\initAddPageLayoutForm(), ilObjUserGUI\initCreate(), ilMarkSchemaTableGUI\initData(), ilObjItemGroupGUI\initEditCustomForm(), ilMMTopItemFormGUI\initForm(), ilObjTestGUI\initImportForm(), ilContainerGUI\initListPresentationForm(), ilObjWorkflowEngineGUI\initLocator(), ilMailFolderTableGUI\initMultiCommands(), ilLTIProviderObjectSettingGUI\initObjectSettingsForm(), ilPermissionGUI\initRoleForm(), ILIAS\MyStaff\ListUsers\ilMStListUsersTableGUI\initSelectableColumns(), ilECSSettingsGUI\initSettingsForm(), ilSettingsTemplateGUI\initSettingsTemplateForm(), ilStartUpGUI\initStandardLoginForm(), ilCmiXapiHighscoreReport\initTableData(), ilTestSkillEvaluation\initTestResultData(), ilInitialisation\initUIFramework(), ilObjUserFolderGUI\initUserRoleAssignmentForm(), ilDBPdo\insert(), ilSetupLanguage\insertLanguage(), ilTestExpressPageObjectGUI\insertQuestions(), ilTestQuestionBrowserTableGUI\insertQuestionsCmd(), ilObjTestGUI\insertQuestionsObject(), ilObjTestGUI\insertRandomSelectionObject(), ilSetupLanguage\installLanguages(), ilObjLanguageFolderGUI\installLocalObject(), ilObjLanguageFolderGUI\installObject(), ilFormPropertyGUI\int(), ilBadgeGUIRequest\int(), ILIAS\Repository\int(), ILIAS\Skill\Service\SkillGUIRequest\int(), ilFormPropertyGUI\intArray(), ilBadgeGUIRequest\intArray(), ILIAS\Repository\intArray(), ILIAS\Skill\Service\SkillGUIRequest\intArray(), ilObjSurvey\isAnonymizedParticipant(), assTextSubset\isAnswerCorrect(), ilAccessCustomRBACOperationAddedObjective\isApplicable(), ilBadgeGUIRequest\isArray(), ILIAS\Repository\isArray(), ILIAS\Skill\Service\SkillGUIRequest\isArray(), ilUserXMLWriter\isPrefExportable(), ilFormPropertyGUI\isRequestParamArray(), ilBuddySystemGUI\isRequestParameterGiven(), ilGlobalCache\isValid(), ilGlobalCacheService\isValid(), ilIdentifiedMultiValuesJsPositionIndexRemover\isValueIdentifier(), ILIAS\Data\Order\join(), assTextSubset\joinAnswers(), ilContainer\legacyOnlineFilter(), ilObjLanguageFolderGUI\listDeprecatedObject(), arField\loadFromArray(), ilLanguage\loadLanguageModule(), ilLTIDataConnector\loadPlatform(), ILIAS\LTI\ToolProvider\OAuthDataStore\lookup_consumer(), ilObjLTIConsumer\LTISignJWT(), ilFileUtils\makeDirParents(), arFieldList\mapKey(), ilObjStudyProgrammeMembersGUI\markAccreditedMulti(), ilObjStudyProgrammeMembersGUI\markNotRelevantMulti(), ilObjStudyProgrammeMembersGUI\markRelevantMulti(), ilDBPdoFieldDefinition\matchPattern(), ILIAS\Setup\ConfigCollection\maybeGetConfig(), XapiProxy\XapiProxy\modifyBody(), ILIAS\FileUpload\FileUploadImpl\moveFilesTo(), ilObjSurveyQuestionPoolGUI\moveObject(), ilObjQuestionPoolGUI\moveObject(), ILIAS\UI\Implementation\Component\Input\nameInputs(), Title\newFromDBkey(), ilObjFileVersion\offsetExists(), ilTestExport\orderQuestions(), ILIAS\LTI\ToolProvider\parseClaims(), ilBiblTexFileReader\parseContent(), ilBiblFileReaderBase\parseContentToEntries(), ILIAS\LTI\ToolProvider\Service\Service\parseContextsInArray(), ilDclTableViewEditFieldsTableGUI\parseData(), ILIAS\LTI\ToolProvider\Jwt\FirebaseClient\parseKeySet(), Firebase\JWT\JWK\parseKeySet(), ilCmiXapiImporter\parseXmlFileProperties(), ilContainerGUI\pasteObject(), ilObjTest\pcArrayShuffle(), ilTestSequence\pcArrayShuffle(), ilContainerGUI\performPasteIntoMultipleObjectsObject(), ilLegacyFormElementsUtil\period2String(), ilObjRoleTemplateGUI\permSaveObject(), ilObjRoleGUI\permSaveObject(), ilSimpleSAMLphpWrapper\popParam(), ilAccessibilityTableGUI\populate(), ilTermsOfServiceTableGUI\populate(), ilTestSettingsChangeConfirmationGUI\populateParametersFromPost(), ilTestSettingsChangeConfirmationGUI\populateParametersFromPropertyForm(), ilSCORM13PlayerGUI\postLogEntry(), ilForumExplorerGUI\preloadChilds(), ilBlockSetting\preloadPDBlockSettings(), ilCourseDefinedFieldDefinition\prepareSelectBox(), ilWebDAVMountInstructionsDocumentTableGUI\preProcessData(), ilQuestionPageParser\processPagesToParse(), ilCronFinishUnfinishedTestPasses\processPasses(), ilUtilTest\provideGotoLinkData(), ilAccessibilityTrimmedDocumentPurifier\purifyArray(), ilHtmlPurifierAbstractLibWrapper\purifyArray(), ilHtmlPurifierComposite\purifyArray(), ilSamlIdpMetadataPurifier\purifyArray(), ilTermsOfServiceTrimmedDocumentPurifier\purifyArray(), ILIAS\FileUpload\Collection\EntryLockingStringMap\put(), ilQuestionExporter\questionsJS(), ilObjQuestionPool\questionsToXML(), ilObjTestGUI\randomselectObject(), ilFormPropertyGUI\raw(), ILIAS\Test\InternalRequestService\raw(), ILIAS\TestQuestionPool\InternalRequestService\raw(), ILIAS\Repository\raw(), ilShibbolethSettings\read(), ilLanguageFile\read(), ilExportFieldsInfo\read(), arConnectorCache\read(), ilADTActiveRecordByType\read(), readGroups(), ilSCORM13PlayerGUI\readSharedData(), ILIAS\LTI\ToolProvider\Util\redirect(), ilBuddySystemArrayCollection\remove(), ilTestSequenceFixedQuestionSet\removeArrayValue(), ilDclLinkButton\removeAttribute(), ilRTE\removeButton(), ilDateList\removeByDAY(), ilUserQuestionResult\removeByKey(), ilObjSurvey\removeConstraintsConcerningQuestion(), ilBuddySystemArrayCollection\removeElement(), ilDclGenericMultiInputGUI\removeHook(), ilOrgUnitGenericMultiInputGUI\removeHook(), ilOrgUnitMultiLineInputGUI\removeHook(), ilIdentifiedMultiValuesJsPositionIndexRemover\removeIdentifierIndicator(), ilPropertyFormGUI\removeItemByPostVar(), ilObjMediaObject\removeMediaItem(), ilSplitButtonGUI\removeMenuItem(), ilRTE\removePlugin(), ilIdentifiedMultiValuesJsPositionIndexRemover\removePositionIndexLevels(), ilHtmlPurifierComposite\removePurifier(), ilTestSequenceFixedQuestionSet\removeQuestion(), ilTabsGUI\removeTab(), ilTaggingSlateContentGUI\removeTagsWithoutAccess(), ilObjTestListGUI\removeUserResultsCommand(), ilBiblEntryTablePresentationGUI\render(), ilTableGUI\render(), ilDclGenericMultiInputGUI\render(), ilOrgUnitGenericMultiInputGUI\render(), ilOrgUnitMultiLineInputGUI\render(), ILIAS\UI\Implementation\Component\Listing\Renderer\render_descriptive(), assNumericGUI\renderAggregateView(), assOrderingHorizontalGUI\renderAggregateView(), assOrderingQuestionGUI\renderAggregateView(), assTextSubsetGUI\renderAggregateView(), ilTableGUI\renderHeader(), ilTaggingSlateContentGUI\renderResourcesForTag(), ILIAS\UI\Implementation\Component\Input\ViewControl\Renderer\renderSortation(), ILIAS\GlobalScreen\ScreenContext\AdditionalData\Collection\replace(), ilPCParagraph\replaceBBTagByMatching(), ilExplorer\requestStr(), ilMailTemplatePlaceholderResolver\resolve(), assErrorTextGUI\restructurePostDataForSaving(), ILIAS\HTTP\Wrapper\ArrayBasedRequestWrapper\retrieve(), ilPasswordAssistanceGUI\retrieveRequestedKey(), ilGlobalCacheService\returnKey(), ilEMailInputGUI\sanitize(), ilSettingsPermissionGUI\save(), assClozeTest\saveAnswerSpecificDataToDb(), assImagemapQuestion\saveAnswerSpecificDataToDb(), assMatchingQuestion\saveAnswerSpecificDataToDb(), assClozeTest\saveClozeGapItemsToDb(), assClozeTest\saveClozeNumericGapRecordToDb(), assClozeTest\saveClozeSelectGapRecordToDb(), assClozeTest\saveClozeTextGapRecordToDb(), ilObjLTIConsumerGUI\saveContentSelection(), ilObjSystemFolderGUI\saveHeaderTitleObject(), ILIAS\LTI\ToolProvider\Service\LineItem\saveLineItem(), ilLDAPSettingsGUI\saveMapping(), ilMarkSchemaGUI\saveMarkSchemaFormData(), ilObjLanguageExtGUI\saveObject(), ilContainerSorting\savePost(), assFormulaQuestion\savePreviewData(), ilPersonalProfileGUI\savePublicProfile(), ilObjTest\saveQuestionsToDb(), ilOpenIdConnectSettingsGUI\saveSettings(), ilObjTest\saveToDb(), ASS_MarkSchema\saveToDb(), ilLTIDataConnector\saveToolConsumerILIAS(), assClozeTest\saveWorkingData(), assFormulaQuestion\saveWorkingData(), ilAdvancedSearchGUI\searchAdvancedMD(), ilSoapObjectAdministration\searchObjects(), ilSoapFunctions\searchObjects(), ilSoapRBACAdministration\searchRoles(), ilSoapFunctions\searchRoles(), ILIAS\LTI\ToolProvider\Util\sendForm(), soap_transport_http\sendRequest(), ILIAS\HTTP\Response\Sender\DefaultResponseSenderStrategy\sendResponse(), ilBuddySystemArrayCollection\set(), ilShm\set(), ilStaticCache\set(), ILIAS\MediaObjects\ImageMap\ImageMapEditSessionRepository\set(), ilGlobalCache\set(), ILIAS\LearningModule\Export\LMHtmlExport\setAdditionalContextData(), Firebase\JWT\CachedKeySet\setCacheKeys(), ilPCLearningHistory\setClasses(), ILIAS\Awareness\AwarenessSessionRepository\setCount(), ILIAS\UI\Implementation\Crawler\Entry\ComponentEntryDescription\setDescription(), ilExplorer\setExpand(), ilTableGUI\setHeaderVars(), ILIAS\Awareness\AwarenessSessionRepository\setHighlightCount(), assClozeGap\setItemLowerBound(), assClozeGap\setItemPoints(), assClozeGap\setItemUpperBound(), ILIAS\LTI\ToolProvider\setKey(), ilvCard\setKey(), ilWkhtmlToPdfConfig\setKeyIfExists(), ILIAS\Glossary\Term\TermSessionRepository\setLang(), ILIAS\Awareness\AwarenessSessionRepository\setLastUpdate(), ilOrgUnitExtensionGUI\setLocator(), ilAccordionPropertiesStorageGUI\setOpenedTab(), ilCheckboxGroupInputGUI\setOptions(), ilADTEnumDefinition\setOptions(), ilADTMultiEnumDefinition\setOptions(), ilTable2GUI\setOrderLink(), ilTableGUI\setOrderLink(), ilExplorer\setParamsGet(), ilPCPlugged\setProperties(), ilDclBaseFieldModel\setProperty(), ilDclSelectionFieldModel\setProperty(), ilQuestionBrowserTableGUI\setQuestionData(), ilFormPropertyGUI\setRequestParam(), ILIAS\Portfolio\Access\AccessSessionRepository\setSharedSessionPassword(), ilAssQuestionSkillAssignmentRegistry\setStringifiedImports(), ilTabsGUI\setTabActive(), ilMailErrorFormatterTest\setUp(), ilCtrlContextTest\setUp(), ilGlobalCacheService\setValid(), ilErrorTextWizardInputGUI\setValue(), ilKVPWizardInputGUI\setValue(), ilAssErrorTextCorrectionsInputGUI\setValue(), ilDclGenericMultiInputGUI\setValue(), ilOrgUnitGenericMultiInputGUI\setValue(), ilOrgUnitMultiLineInputGUI\setValue(), ilPlainTextHandler\shortenPHPSessionId(), ilLoggingErrorFileStorage\shortenPHPSessionId(), show(), ilObjOrgUnitGUI\showAdministrationPanel(), ilMailFormGUI\showForm(), ilLMPresentationGUI\showPrintView(), ilMailSearchGUI\showResults(), ilChatroomViewGUI\showRoom(), ilExportFieldsInfo\sortExportFields(), ilContainerSorting\sortItems(), ilExplorer\sortNodes(), ilContainerSorting\sortOrderDefault(), ilContainerSorting\sortSubItems(), assOrderingHorizontal\splitAndTrimOrderElementText(), nusoap_parser\start_element(), ilShibbolethSettings\store(), ilForumNotificationCache\store(), ILIAS\Setup\Metrics\ArrayStorage\store(), arConnectorCache\storeActiveRecordInCache(), ILIAS\Setup\Metrics\storeConfigBool(), ILIAS\Setup\Metrics\storeConfigCounter(), ILIAS\Setup\Metrics\storeConfigGauge(), ILIAS\Setup\Metrics\storeConfigText(), ILIAS\Setup\Metrics\storeConfigTimestamp(), ilSimpleSAMLphpWrapper\storeParam(), ilMailFormCall\storeReferer(), ILIAS\Setup\Metrics\storeStableBool(), ILIAS\Setup\Metrics\storeStableCounter(), ILIAS\Setup\Metrics\storeStableGauge(), ILIAS\Setup\Metrics\storeStableText(), ILIAS\Setup\Metrics\storeStableTimestamp(), ILIAS\Setup\Metrics\storeVolatileBool(), ILIAS\Setup\Metrics\storeVolatileCounter(), ILIAS\Setup\Metrics\storeVolatileGauge(), ILIAS\Setup\Metrics\storeVolatileText(), ILIAS\Setup\Metrics\storeVolatileTimestamp(), ilFormPropertyGUI\str(), ilHierarchyFormGUI\str(), ilBadgeGUIRequest\strArray(), ilFormPropertyGUI\strArray(), ILIAS\Repository\strArray(), ILIAS\Skill\Service\SkillGUIRequest\strArray(), ilPlainTextHandler\tablesContent(), ilLoggingErrorFileStorage\tablesContent(), ilCertificateCronTest\testActivation(), ILIAS\GlobalScreen\Scope\Layout\MetaDataTest\testAddMetaDatum(), ilTestQuestionRelatedObjectivesListTest\testAddQuestionRelatedObjectives(), ILIAS\Modules\Test\test\AccessFileUploadAnswerTest\testAnonymousWithInvalidAccessCode(), ILIAS\Modules\Test\test\AccessFileUploadAnswerTest\testAnonymousWithoutAccessCode(), ILIAS\Modules\Test\test\AccessFileUploadAnswerTest\testAnonymousWithValidAccessCode(), ForumNotificationCacheTest\testCacheKeyCouldBeGeneratedByArray(), ilMailOptionsTest\testConstructor(), ilMailOptionsTest\testConstructorWithUserSettings(), ilObjLanguageDBAccessTest\testCreate(), ilBuddySystemRelationCollectionTest\testElementsCanBeAddedAndRemoved(), ilBuddySystemRelationCollectionTest\testElementsCanBeInitiallyAdded(), ForumNotificationCacheTest\testExceptionIsRaisedWhenKeyShouldBeBuiltWithNonScalarValues(), ilCertificateCronTest\testFlexibleActivation(), ILIAS\Tests\GlobalCache\Setup\ilGlobalCacheSetupAgentTest\testGetArrayToConfigTransformationWithDataServices(), ilCertificateCronTest\testGetDefaultScheduleType(), ilCertificateCronTest\testGetDefaultScheduleValue(), ilCertificateCronTest\testGetDescription(), ilCertificateCronTest\testGetId(), ilCertificateCronTest\testGetTitle(), ILIAS\FileUpload\Collection\EntryLockingStringMapTest\testGetWhichShouldSucceed(), ILIAS\FileUpload\Collection\EntryLockingStringMapTest\testGetWithoutPutTheValueWhichShouldFail(), ilTestQuestionRelatedObjectivesListTest\testHasQuestionRelatedObjectives(), ilObjLanguageDBAccessTest\testInsertLangEntriesLocalChangesAreNotOverwritten(), ilObjLanguageDBAccessTest\testInsertLangEntriesManipulateCalledNeverWhenEveryContentHasALocalChange(), ilObjLanguageDBAccessTest\testInsertLangEntriesManipulateCalledOnce(), ilObjLanguageDBAccessTest\testInsertLangEntriesReturnedArrayHasValuesFromContent(), ilObjLanguageDBAccessTest\testInsertLangEntriesReturnsArray(), ilBuddySystemRelationCollectionTest\testIterator(), ilMailOptionsGUITest\testMailOptionsAreAccessibleIfGlobalAccessIsNotDenied(), ilMailOptionsGUITest\testMailOptionsAreNotAccessibleIfGlobalAccessIsDeniedAndUserWillBeRedirectedToMailSystem(), ilMailOptionsGUITest\testMailOptionsAreNotAccessibleIfGlobalAccessIsDeniedAndUserWillBeRedirectedToPersonalSettings(), ILIAS\FileUpload\Collection\EntryLockingStringMapTest\testPutValueTwiceWhichShouldFail(), ILIAS\FileUpload\Collection\EntryLockingStringMapTest\testPutValueWhichShouldSucceed(), ilBuddySystemStateFactoryTest\testRelationsCanBeFilteredByState(), ilAssQuestionSkillAssignmentRegistryTest\testSkillAssignmentsCanBetStoredAndFetchedBySerializationStrategy(), ilBuddySystemStateFactoryTest\testStatesCanBeReceivedAsOptionMap(), ILIAS\Tests\Setup\Metrics\StorageOnPathWrapperTest\testStoresToPath(), ilMailMimeTest\testTransportFactoryWillReturnNullTransportIfExternalEmailDeliveryIsDisabled(), ilMailMimeTest\testTransportFactoryWillReturnSendmailTransportIfSmtpTransportIsDisabled(), ilMailMimeTest\testTransportFactoryWillReturnSmtpTransportIfEnabled(), ILIAS\Modules\Test\test\AccessFileUploadAnswerTest\testUserWhichCanAccessTheTestResults(), StateTest\testValue(), ILIAS\Setup\Metrics\Metric\toArray(), ilTreeExplorerGUI\toggleExplorerNodeState(), ILIAS\UI\Implementation\Render\AbstractComponentRenderer\toJS(), assClozeTest\toJSON(), assImagemapQuestion\toJSON(), assKprimChoice\toJSON(), assMultipleChoice\toJSON(), assSingleChoice\toJSON(), assTextSubset\toJSON(), ilLDAPResult\toSimpleArray(), assClozeTestExport\toXML(), assLongMenuExport\toXML(), assLongMenuExportQti21\toXML(), ilObjSurveyQuestionPool\toXML(), ilMDClassification\toXML(), ilMDEducational\toXML(), ilMDGeneral\toXML(), ILIAS\Refinery\KindlyTo\Transformation\DictionaryTransformation\transform(), ILIAS\Refinery\KindlyTo\Transformation\RecordTransformation\transform(), ILIAS\Refinery\KindlyTo\Transformation\TupleTransformation\transform(), ILIAS\Refinery\To\Transformation\DictionaryTransformation\transform(), ILIAS\Refinery\To\Transformation\RecordTransformation\transform(), ILIAS\Refinery\To\Transformation\TupleTransformation\transform(), ilObjLanguageFolderGUI\uninstallObject(), ilObjStudyProgrammeMembersGUI\unmarkAccreditedMulti(), ilObjMediaObject\update(), ilHierarchyFormGUI\updateExpanded(), ilGeoLocationFileMockRepository\updateGeoLocation(), ilGeoLocationFileMockRepository\updateGeoLocationTimestampByCoordinates(), ilTestArchiver\updateTestArchive(), ilCtrlArrayIterator\valid(), ilStatistics\validate(), SurveyMultipleChoiceQuestionGUI\validateEditForm(), assFormulaQuestion\validateSolutionSubmit(), ilUserImportParser\verifyPref(), ilObjLTIConsumer\verifyPrivateKey(), ILIAS\LTI\ToolProvider\verifySignature(), ilObjObjectFolderGUI\viewObject(), ilObjTypeDefinitionGUI\viewObject(), ilDclTableViewFieldSetting\wakeUp(), ILIAS\Setup\AgentCollection\withAdditionalAgent(), ILIAS\UI\Implementation\Component\Layout\Page\Standard\withAdditionalMetaDatum(), ILIAS\UI\Implementation\Component\Input\Field\HasDynamicInputsBase\withDisabled(), ILIAS\UI\Implementation\Component\Input\withInput(), ILIAS\UI\Implementation\Component\Input\Field\HasDynamicInputsBase\withNameFrom(), ILIAS\KioskMode\State\withoutKey(), ILIAS\Data\URI\withParameter(), ILIAS\Setup\AgentCollection\withRemovedAgent(), ILIAS\KioskMode\State\withValueFor(), ilIniFile\write(), ilADTActiveRecordByType\write(), ilObjSystemFolderGUI\writeCheckParams(), ilScormAiccDataSet\writeData(), ilSCORM2004StoreData\writeGObjective(), ilSurveyPhrasesGUI\writePostData(), assFormulaQuestionGUI\writePostData(), and ilNewsForContextBlockGUI\writeSettings().

◆ $kid

◆ $lastAccess

int null ILIAS::LTI::ToolProvider::$lastAccess = null

Timestamp for date of last connection to this system.

Definition at line 144 of file System.php.

◆ $messageParameters

array null ILIAS::LTI::ToolProvider::$messageParameters = null
protected

◆ $rawParameters

array ILIAS::LTI::ToolProvider::$rawParameters = null
protected

Raw message parameters.

Definition at line 172 of file System.php.

Referenced by ILIAS\LTI\ToolProvider\getRawParameters(), and ILIAS\LTI\ToolProvider\parseMessage().

◆ $reason

◆ $requiredScopes

array ILIAS::LTI::ToolProvider::$requiredScopes = array()

Scopes to request when obtaining an access token.

Definition at line 81 of file System.php.

◆ $rsaKey

string null ILIAS::LTI::ToolProvider::$rsaKey = null

RSA key in PEM or JSON format.

Set to the private key for signing outgoing messages and service requests, and to the public key for verifying incoming messages and service requests.

Definition at line 74 of file System.php.

Referenced by ILIAS\LTI\ToolProvider\addJWTSignature(), and ILIAS\LTI\ToolProvider\verifySignature().

◆ $secret

◆ $settings

array ILIAS::LTI::ToolProvider::$settings = []
private

Setting values (LTI parameters, custom parameters and local parameters).

Definition at line 200 of file System.php.

Referenced by ilQuestionpoolExport\__construct(), ilFavouritesListGUI\__construct(), ilFileServicesFilenameSanitizer\__construct(), ilNewsService\__construct(), ILIAS\Mail\Cron\ExpiredOrOrphanedMails\NotificationsCollector\__construct(), ilObjForum\__construct(), ilObjUserAccess\_checkGoto(), ilContainer\_exportContainerSettings(), ilContainerSortingSettings\_exportContainerSortingSettings(), ilObjChatroom\_getPublicRefId(), ilECSObjectSettings\_handleDelete(), ilContainerSortingSettings\_importContainerSortingSettings(), ilDAVActivationChecker\_isActive(), ilUserSearchOptions\_isEnabled(), ilMDUtils\_parseCopyright(), ilIndividualAssessmentDataSet\_readData(), ilChatroomServerConfigStoredObjective\achieve(), ilInstallationInformationStoredObjective\achieve(), ilHttpConfigStoredObjective\achieve(), ilDefaultLanguageSetObjective\achieve(), ilWebServicesConfigStoredObjective\achieve(), ilInstIdDefaultStoredObjective\achieve(), ilMakeInstallationAccessibleObjective\achieve(), ilNICKeyRegisteredObjective\achieve(), ilNICKeyStoredObjective\achieve(), ilNoMajorVersionSkippedConditionObjective\achieve(), ilNoVersionDowngradeConditionObjective\achieve(), ilVersionWrittenToSettingsObjective\achieve(), ilSCCronTrash\addCustomSettingsToForm(), ilChatroom\addPrivateRoom(), ilCalendarViewGUI\addToolbarFileDownload(), ilObjAuthSettingsGUI\apacheAuthSettingsObject(), ilObjTest\applyDefaults(), ilSoapCourseAdministration\assignCourseMember(), ilIndividualAssessmentSettingsGUI\buildForm(), ilObjLearningSequenceSettingsGUI\buildForm(), ilObjTestSettingsScoringResultsGUI\buildForm(), ilObjStudyProgrammeSettingsGUI\buildForm(), ilLearningSequenceImporter\buildLPSettings(), ilLearningSequenceImporter\buildSettings(), ilObjAuthSettings\checkAuthLDAP(), ilObjAuthSettings\checkAuthScript(), ilObjAuthSettings\checkAuthSHIB(), ilObjChatroom\cloneObject(), ilLOSettings\cloneSettings(), ilTreeMetricsCollectedObjective\collectFrom(), ilChatroomMetricsCollectedObjective\collectFrom(), ilSystemFolderMetricsCollectedObjective\collectFrom(), ilGlobalCacheMetricsCollectedObjective\collectFrom(), ilHttpMetricsCollectedObjective\collectFrom(), ilAppointmentPresentationCourseGUI\collectPropertiesAndActions(), ilAppointmentPresentationGroupGUI\collectPropertiesAndActions(), ILIAS\GlobalScreen\Scope\Layout\Collector\MainLayoutCollector\collectStructure(), ilObjPortfolioGUI\createPortfolioFromAssignment(), ilIndividualAssessmentSettingsStorageDB\createSettings(), ilECSMappingSettingsGUI\cUpdateSettings(), ilStudyProgrammeSettingsDBRepository\delete(), ilLearningSequenceSettingsDB\delete(), ilLearningSequenceFilesystem\delete_image(), ilShibbolethRoleAssignmentRules\doAssignments(), ilAuthProviderShibboleth\doAuthentication(), ilObjTestScoreSettingsDatabaseRepository\doSelect(), ilECSMappingSettingsGUI\dUpdateSettings(), ilObjAuthSettingsGUI\editScriptObject(), ilObjTestSettingsScoringResultsGUI\executeCommand(), ilObjLearningSequenceSettingsGUI\fillForm(), ilECSExportedContentTableGUI\fillRow(), ilECSImportedContentTableGUI\fillRow(), ilDidacticTemplateSettingsTableFilter\filter(), ilRbacLog\garbageCollection(), ilChatroomSettingsGUI\general(), ilObjUserFolderGUI\generalSettingsObject(), ILIAS\Survey\Settings\SettingsDBRepository\getAccessSettings(), ilLearningSequenceActivationDB\getActivationForRefId(), ilChatroomTabGUIFactory\getAdminTabsForCommand(), ilGlobalCacheSetupAgent\getArrayToConfigTransformation(), ILIAS\Notifications\ilNotificationDatabaseHandler\getAvailableChannels(), ilChatroomConfigFileHandler\getClientFileContent(), ilWkhtmlToPdfConfig\getCommandLineConfig(), ilLOUserResults\getCompletedObjectiveIds(), ilPropertyFormGUI\getContent(), ilObjAccessibilitySettings\getControlConceptStatus(), ilLOUserResults\getCourseResultsForUserPresentation(), ilObjUser\getDateFormat(), ilDclTableView\getFieldSettings(), ilAppointmentPresentationGUI\getHTML(), ilInfoScreenGUI\getHTML(), ilBiblEntryDetailPresentationGUI\getLibrariesDeck(), ilSearchAutoComplete\getList(), ilContainerStartObjectsContentGUI\getPageHTML(), ilCalendarAgendaListGUI\getPeriod(), ilUserUtil\getPossibleStartingPoints(), ilWkhtmlToPdfConfig\getSavedDefaultBinaryPath(), ilChatroomConfigFileHandler\getServerFileContent(), ILIAS\ContentPage\GlobalSettings\StorageImpl\getSettings(), ilLOTestQuestionAdapter\getSettings(), ilGlobalCache\getSettings(), ilServicesGlobalCacheTest\getSettings(), ILIAS\LTI\ToolProvider\getSettings(), ilLearningSequenceSettingsDB\getSettingsFor(), ILIAS\Calendar\Provider\CalendarMainBarProvider\getStaticSubItems(), ILIAS\LearningHistory\LearningHistoryMainBarProvider\getStaticSubItems(), ilStudyProgrammeTypeDBRepository\getStudyProgrammeIdsByTypeId(), ilObjUser\getTimeFormat(), ilObjUser\getTimeZone(), ILIAS\Notifications\Provider\AwarenessToastProvider\getToasts(), ILIAS\Notifications\Provider\NotificationsToastProvider\getToasts(), ilLTIDataConnector\getToolConsumers(), ILIAS\LTI\ToolProvider\Platform\getToolSettings(), ilNICKeyRegisteredObjective\getURLStringForNIC(), ilUserAutoComplete\getWherePart(), ILIAS\BookingManager\saveObjectSettingsCommandHandler\handle(), ilCertificateAppEventListener\handleCompletedStudyProgramme(), ilOnScreenChatAppEventListener\handleEvent(), ilMemberExportGUI\handleIncoming(), ilCertificateAppEventListener\handleLPUpdate(), ilObjFolderAccess\hasDownloadAction(), ilWorkspaceAccessHandler\hasGlobalPasswordPermission(), ilWorkspaceAccessHandler\hasGlobalPermission(), ilLMPresentationGUI\ilLMNotes(), ilIndividualAssessmentDataSet\importRecord(), ilDidacticTemplateSettingsGUI\importTemplate(), ilObjPortfolioGUI\initCreateForm(), ilObjSearchLuceneSettingsFormGUI\initForm(), ilObjSearchSettingsFormGUI\initForm(), ilAttendanceList\initForm(), ilPageLayoutGUI\initForm(), ilObjUserGUI\initForm(), ilMemberExportSettingsGUI\initForm(), ilAttendanceList\initFromSettings(), ilOnScreenChatGUI\initializeFrontend(), ilObjFileInfoRepository\initInlineSuffixes(), ilRbacSystem\initMemberView(), ilSettingsTemplateGUI\initSettingsTemplateForm(), ilObjectContentStyleSettingsGUI\initStylePropertiesForm(), ilBiblLibraryGUI\initTable(), ilLearningSequenceActivationDB\insert(), ilLearningSequenceSettingsDB\insert(), ilSurveyParticipantsGUI\insertSavedMessageObject(), ilInstallationInformationStoredObjective\isApplicable(), ilHttpConfigStoredObjective\isApplicable(), ilDefaultLanguageSetObjective\isApplicable(), ilInstIdDefaultStoredObjective\isApplicable(), ilMakeInstallationAccessibleObjective\isApplicable(), ilNICKeyStoredObjective\isApplicable(), ilTestSettingsGUI\isHiddenFormItem(), ilObjUserGUI\isSettingChangeable(), ilLTIDataConnector\loadContext(), ilChatroomServerSettings\loadDefault(), ilLTIDataConnector\loadPlatform(), ilLTIDataConnector\loadResourceLink(), ilCalendarSettings\lookupCalendarContentPresentationEnabled(), ilECSNodeMappingAssignments\lookupSettings(), ilContainerSortingSettings\lookupSortModeFromParentContainer(), ilLuceneAdvancedSearchActivationTableGUI\parse(), ilLOXmlParser\parseSettings(), ilBlockSetting\preloadPDBlockSettings(), ilObjCourseGUI\prepareOutput(), ilWikiPageGUI\preview(), ilObjWebDAV\read(), ilXapiResultsCronjob\readLastRunTS(), ilCalendarCategories\readSelectedCategories(), ilContainerContentGUI\renderItem(), ilSCCronTrash\run(), ilObjAuthSettingsGUI\saveApacheSettingsObject(), ilChatroomAdminViewGUI\saveClientSettings(), ilObjAccessibilitySettings\saveControlConceptStatus(), ilSCCronTrash\saveCustomSettings(), ilObjTestSettingsScoringResultsGUI\saveForm(), ilWkhtmlToPdfConfigFormGUI\saveNewDefaultBinaryPath(), ilObjAdvancedEditingGUI\savePageEditorSettingsObject(), ilMemberExportSettingsGUI\savePrintViewSettings(), ilUserProfilePromptDataGateway\saveSettings(), ilContainerGUI\saveSortingSettings(), ilObjectContentStyleSettingsGUI\saveStyleSettings(), ilRemoteObjectBase\sendNewContentNotification(), ilPortfolioRepositoryGUI\setDefaultConfirmation(), ilPCFileListGUI\setItemTabs(), ilObjStudyProgramme\setPoints(), ilSettingsTemplate\setSetting(), ILIAS\LTI\ToolProvider\setSettings(), ilUserXMLWriter\setSettings(), ilGlobalCache\setSettings(), ilObjStudyProgramme\setStatus(), ilObjContentObjectGUI\setSubTabs(), ilPCFileListGUI\setTabs(), ilSettingsFactory\settingsFor(), ILIAS\LTI\ToolProvider\Platform\setToolSettings(), LSControlBuilderTest\setUp(), ilStudyProgrammeAssignmentActionsTest\setUp(), ilCalendarDayGUI\show(), ilCalendarMonthGUI\show(), ilObjLearningSequenceSettingsGUI\showLegacyPage(), ilMemberViewGUI\showMemberViewSwitch(), ilInfoScreenGUI\showNotesSection(), ilChatroomViewGUI\showRoom(), ilLearningSequenceActivationDB\store(), ilLearningSequenceSettingsDB\store(), ilObjTestScoreSettingsDatabaseRepository\store(), ILIAS\ContentPage\GlobalSettings\StorageImpl\store(), ilLSGlobalSettingsDB\storeSettings(), ilIndividualAssessmentSettingsTest\test_create_settings(), ilIndividualAssessmentSettingsStorageDBTest\test_createSettings(), ilIndividualAssessmentMemberTest\test_mayBeFinalized_already_finalized(), ilIndividualAssessmentMemberTest\test_mayBeFinalized_file_required_filename_empty(), ilIndividualAssessmentMemberTest\test_mayBeFinalized_with_negative_lp_status(), ilIndividualAssessmentMemberTest\test_mayBeFinalized_with_positive_lp_status(), ilIndividualAssessmentInfoSettingsTest\test_to_form_input(), ilIndividualAssessmentSettingsTest\test_to_form_input(), ilIndividualAssessmentSettingsStorageDBTest\test_updateInfoSettings(), ilIndividualAssessmentSettingsStorageDBTest\test_updateSettings(), ilServicesFileServicesTest\testActualWhitelist(), ilServicesFileServicesTest\testBlacklistedUpload(), ilServicesFileServicesTest\testBlacklistedUploadWithPermission(), ilCertificateActiveValidatorTest\testCertificatesAreActiveAndJavaServerIsActive(), ilXlsFoParserTest\testCommasWillBeConvertedToPointInDecimalSepartor(), ilSOAPAuth\testConnection(), ilPrivacySettingsTest\testConstruct(), GlobalSettingsTest\testConstruction(), ilMailOptionsTest\testConstructor(), ilMailOptionsTest\testConstructorWithUserSettings(), ilMailMimeSubjectBuilderTest\testDefaultPrefixMustBePrependedWhenNoGlobalPrefixIsDefinedAndPrefixShouldBeAppended(), ilServicesFileServicesTest\testDisabledASCIISetting(), DashboardViewSettingsTest\testDisableMemberships(), DashboardViewSettingsTest\testDisableSelectedItems(), ilMailTest\testExternalMailDeliveryToLocalRecipientsWorksAsExpected(), ilMailMimeTest\testFactoryWillReturnSystemSenderForAnonymousUserId(), ilMailMimeTest\testFactoryWillReturnSystemSenderWhenExplicitlyRequested(), ilMailMimeTest\testFactoryWillReturnUserSenderForExistingUserId(), ilMailMimeTest\testFactoryWillReturnUserSenderWhenExplicitlyRequested(), ilServicesFileServicesTest\testFileNamePolicyOnDownloading(), ilLearningSequenceActivationDBTest\testGetActivationForRefIdWithData(), ilLearningSequenceActivationDBTest\testGetActivationForRefIdWithoutData(), ILIAS\Tests\GlobalCache\Setup\ilGlobalCacheSetupAgentTest\testGetArrayToConfigTransformationWithDataServices(), ILIAS\Tests\GlobalCache\Setup\ilGlobalCacheSetupAgentTest\testGetArrayToConfigTransformationWithEmptyDataArray(), ILIAS\Tests\GlobalCache\Setup\ilGlobalCacheSetupAgentTest\testGetArrayToConfigTransformationWithEmptyMemcachedDataArray(), ILIAS\Tests\GlobalCache\Setup\ilGlobalCacheSetupAgentTest\testGetArrayToConfigTransformationWithMemcachedNode(), ILIAS\Tests\GlobalCache\Setup\ilGlobalCacheSetupAgentTest\testGetArrayToConfigTransformationWithNullComponents(), ILIAS\Tests\GlobalCache\Setup\ilGlobalCacheSetupAgentTest\testGetArrayToConfigTransformationWithNullData(), ILIAS\Tests\GlobalCache\Setup\ilGlobalCacheSetupAgentTest\testGetArrayToConfigTransformationWithNullMemcachedData(), ILIAS\Tests\GlobalCache\Setup\ilGlobalCacheSetupAgentTest\testGetArrayToConfigTransformationWithNullMemcachedDataArray(), ILIAS\ContentPage\GlobalSettingsStorageTest\testGlobalSettings(), GlobalSettingsTest\testIntervalAttribute(), ilMailOptionsGUITest\testMailOptionsAreAccessibleIfGlobalAccessIsNotDenied(), ilMailOptionsGUITest\testMailOptionsAreNotAccessibleIfGlobalAccessIsDeniedAndUserWillBeRedirectedToMailSystem(), ilMailOptionsGUITest\testMailOptionsAreNotAccessibleIfGlobalAccessIsDeniedAndUserWillBeRedirectedToPersonalSettings(), DashboardViewSettingsTest\testMembershipsEnabledPerDefault(), ilMailMimeTest\testMimMailDelegatesEmailDeliveryToDefaultTransport(), ilMailMimeTest\testMimMailDelegatesEmailDeliveryToThePassedTransporter(), ilServicesFileServicesTest\testNoASCIISetting(), ilXlsFoParserTest\testParseButXmlCheckerFindsAnError(), ilXlsFoParserTest\testParseWithCustomPageFormatting(), ilXlsFoParserTest\testParseWithNonCustomPageFormatting(), ilObjSearchRpcClientCoordinatorTest\testRefreshLuceneSettings(), ilObjSearchRpcClientCoordinatorTest\testRefreshLuceneSettingsException(), ilServicesFileServicesTest\testRenamingNonWhitelistedFile(), ilPrgRestartAssignmentsCronJobTest\testRestartAssignmentsForRelevantProgrammes(), ilServicesFileServicesTest\testSanitizing(), DashboardViewSettingsTest\testSelectedItemsEnabledPerDefault(), ilServicesGlobalCacheTest\testService(), ilLearningSequenceActivationDBTest\testStore(), ilLearningSequenceSettingsDBTest\testStoreWithoutUploadsAndDeletionsAndEmptySettings(), ilLearningSequenceSettingsDBTest\testStoreWithoutUploadsAndDeletionsAndWithSettings(), ilLearningSequenceSettingsDBTest\testStoreWithoutUploadsAndWithDeletionsAndWithSettings(), ilLearningSequenceSettingsDBTest\testStoreWithUploadsAndWithoutDeletionsAndWithSettings(), ilMailMimeSubjectBuilderTest\testSubjectMustNotBeChangedWhenNoPrefixShouldBeAdded(), ilMailMimeTest\testTransportFactoryWillReturnNullTransportIfExternalEmailDeliveryIsDisabled(), ilMailMimeTest\testTransportFactoryWillReturnSendmailTransportIfSmtpTransportIsDisabled(), ilMailMimeTest\testTransportFactoryWillReturnSmtpTransportIfEnabled(), ilCertificateActiveValidatorTest\testValidationReturnFalseBecauseGlobalCertificatesAreInactive(), ilCertificateActiveValidatorTest\testValidationReturnFalseBecauseJavaServerIsInactive(), ilServicesGlobalCacheTest\testValues(), ilIndividualAssessmentSettingsGUI\update(), ilObjLearningSequenceSettingsGUI\update(), ilObjSearchLuceneSettingsFormGUI\update(), ilObjSearchSettingsFormGUI\update(), ilStudyProgrammeSettingsDBRepository\update(), ilObjLearningSequence\updateActivation(), ilShibbolethRoleAssignmentRules\updateAssignments(), ilIndividualAssessmentSettingsStorageDB\updateInfoSettings(), ilIndividualAssessmentSettingsStorageDB\updateSettings(), ilObjLearningSequence\updateSettings(), ilObjStudyProgramme\updateSettings(), ilObjPortfolioBaseGUI\view(), ilObjTestScoreSettings\withGamificationSettings(), ilObjTestScoreSettings\withResultDetailsSettings(), ilObjTestScoreSettings\withResultSummarySettings(), ilObjTestScoreSettings\withScoringSettings(), ilLOXmlWriter\write(), ilObjWebDAV\write(), and ilXapiResultsCronjob\writeThisAsLastRunTS().

◆ $settingsChanged

bool ILIAS::LTI::ToolProvider::$settingsChanged = false
private

Whether the settings value have changed since last saved.

Definition at line 207 of file System.php.

◆ $signatureMethod

string ILIAS::LTI::ToolProvider::$signatureMethod = 'HMAC-SHA1'

◆ $updated

int null ILIAS::LTI::ToolProvider::$updated = null

Timestamp for when the object was last updated.

Definition at line 158 of file System.php.

Referenced by ilPageEditorGUI\activate(), ilPageEditorGUI\assignCharacteristic(), ilQuestionpoolExport\buildExportFileXLS(), ILIAS\COPage\Editor\Components\Paragraph\ParagraphCommandActionHandler\cancelCommand(), ilPageEditorGUI\confirmedDeleteSelected(), ilPageEditorGUI\cut(), ILIAS\COPage\Editor\Components\Paragraph\ParagraphCommandActionHandler\deleteCommand(), ilLearningModuleImporter\finalProcessing(), ILIAS\COPage\Editor\Components\Paragraph\ParagraphResponseFactory\getResponseObject(), ILIAS\COPage\Editor\Components\Paragraph\ParagraphResponseFactory\getResponseObjectMulti(), ilPCParagraph\insert(), ILIAS\COPage\Editor\Components\Grid\GridCommandActionHandler\insertCommand(), ILIAS\COPage\Editor\Components\MediaObject\MediaObjectCommandActionHandler\insertCommand(), ILIAS\COPage\Editor\Components\Section\SectionCommandActionHandler\insertCommand(), ILIAS\COPage\Editor\Components\Paragraph\ParagraphCommandActionHandler\mergePrevious(), ilPageObject\resolveQuestionReferences(), ilObjLearningSequenceContentGUI\save(), ilPCParagraph\saveJS(), ILIAS\COPage\Editor\Server\UIWrapper\sendPage(), ILIAS\COPage\Editor\Components\Table\TableCommandActionHandler\sendUpdateResponse(), ilWikiPage\update(), ILIAS\COPage\Editor\Components\Section\SectionCommandActionHandler\updateCommand(), ILIAS\COPage\Editor\Components\Table\TableCommandActionHandler\updateData(), and ILIAS\COPage\Editor\Components\Table\TableCommandActionHandler\updateDataCommand().

◆ System

trait ILIAS::LTI::ToolProvider\System
Initial value:
{
public bool $ok = true

Definition at line 29 of file System.php.