ILIAS  release_8 Revision v8.23
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

 ApiHook
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
 Content
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
 DataConnector
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
 Http
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
 Jwt
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
 MediaType
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
 Profile
 This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.
 
 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.

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, 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().

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,
1373  $privateKey,
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  }
$type
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:33
if(count($parts) !=3) $payload
Definition: ltitoken.php:70
$clientId
Definition: ltiregend.php:27
ClientInterface $jwt
JWT object, if any.
Definition: System.php:165
string $kid
Key ID.
Definition: System.php:88
string $jku
Endpoint for public key.
Definition: System.php:95
$privateKey
Definition: ltiregstart.php:68
foreach($mandatory_scripts as $file) $timestamp
Definition: buildRTE.php:70
getMessageClaims(bool $fullyQualified=false)
Get the message claims.
Definition: System.php:357
string $rsaKey
RSA key in PEM or JSON format.
Definition: System.php:74
+ 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.

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

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

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  }
$type
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:33
string $secret
Shared secret.
Definition: System.php:43
string $key
Consumer key/client ID value.
Definition: System.php:193
foreach($mandatory_scripts as $file) $timestamp
Definition: buildRTE.php:70
+ 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.

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().

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  }
$type
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
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
foreach($mandatory_scripts as $file) $timestamp
Definition: buildRTE.php:70
useOAuth1()
Determine whether this consumer is using the OAuth 1 security model.
Definition: System.php:698
+ 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.

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().

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
+ 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.

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

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

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  }
+ 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.

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

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  }
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
$format
Definition: metadata.php:235
$http
Definition: raiseError.php:7
$service
Definition: ltiservices.php:43
+ 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.

References $c, and $claims.

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

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
static fullyQualifyClaim(string $claim, string $value)
Expand a claim into an array of individual fully-qualified claims.
Definition: System.php:1423
$claims
Definition: ltitoken.php:71
+ 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.

References ILIAS\LTI\ToolProvider\$jwt.

332  : ClientInterface
333  {
334  return $this->jwt;
335  }
ClientInterface $jwt
JWT object, if any.
Definition: System.php:165

◆ 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.

References ILIAS\LTI\ToolProvider\$key.

Referenced by Firebase\JWT\JWT\decode().

233  : ?string
234  {
235  return $this->key;
236  }
string $key
Consumer key/client ID value.
Definition: System.php:193
+ Here is the caller graph for this function:

◆ 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.

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().

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  }
static fullyQualifyClaim(string $claim, string $value)
Expand a claim into an array of individual fully-qualified claims.
Definition: System.php:1423
$claims
Definition: ltitoken.php:71
array $messageParameters
LTI message parameters.
Definition: System.php:179
string $key
Consumer key/client ID value.
Definition: System.php:193
+ 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.

References ILIAS\LTI\ToolProvider\$rawParameters.

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

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 
349  return $this->rawParameters;
350  }
array $rawParameters
Raw message parameters.
Definition: System.php:172
+ Here is the caller graph for this function:

◆ getRecordId()

ILIAS\LTI\ToolProvider\getRecordId ( )

Get the system record ID.

Returns
int|null System record ID value

Definition at line 214 of file System.php.

References ILIAS\LTI\ToolProvider\$id.

Referenced by ilObjectMetaDataBlockGUI\getLegacyContent(), and ilAdvancedMDRecordParser\storeRecords().

214  : ?int
215  {
216  return $this->id;
217  }
int $id
System ID value.
Definition: System.php:186
+ Here is the caller graph for this function:

◆ 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.

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

Referenced by ilObjContactAdministrationGUI\showConfigurationForm().

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
+ 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.

References ILIAS\LTI\ToolProvider\$settings.

Referenced by ilGlobalCache\getInstance(), ilSettingsTemplateGUI\getSettingsTemplateValues(), ilOnScreenChatGUI\initializeFrontend(), ilGlobalCache\log(), and ilSettingsTemplateGUI\setValuesFromForm().

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

References $errors, ILIAS\LTI\ToolProvider\$key, $payload, ILIAS\LTI\ToolProvider\Util\cloneObject(), 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\parseMessage().

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
if(count($parts) !=3) $payload
Definition: ltitoken.php:70
string $key
Consumer key/client ID value.
Definition: System.php:193
+ 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.

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\Tool\getMessageParameters(), and ILIAS\LTI\ToolProvider\Platform\getMessageParameters().

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  }
array $rawParameters
Raw message parameters.
Definition: System.php:172
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
static fromConsumerKey(?string $key=null, $dataConnector=null, bool $autoEnable=false)
Load the platform from the database by its consumer key.
getRawParameters()
Get the raw POST parameters.
Definition: System.php:342
+ 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.

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().

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  }
+ 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.

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

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

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  }
$type
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
+ 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.

References ILIAS\LTI\ToolProvider\$key.

243  {
244  $this->key = $key;
245  }
string $key
Consumer key/client ID value.
Definition: System.php:193

◆ 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.

References ILIAS\LTI\ToolProvider\$id.

224  {
225  $this->id = $id;
226  }
int $id
System ID value.
Definition: System.php:186

◆ 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.

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

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
if($format !==null) $name
Definition: metadata.php:247
+ Here is the call 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.

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

Referenced by ilGlobalCache\setup().

297  {
298  $this->settings = $settings;
299  }
array $settings
Setting values (LTI parameters, custom parameters and local parameters).
Definition: System.php:200
+ Here is the call graph for this function:
+ Here is the caller 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.

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

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

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  }
$type
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:33
$clientId
Definition: ltiregend.php:27
$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
$url
$version
Definition: plugin.php:24
+ 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.

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

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

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  }
$type
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:33
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
$url
$version
Definition: plugin.php:24
+ 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.

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

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

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

698  : bool
699  {
700  return empty($this->signatureMethod) || (substr($this->signatureMethod, 0, 2) !== 'RS');
701  }
+ 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.

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, $store, ILIAS\LTI\ToolProvider\PlatformNonce\load(), and ILIAS\LTI\ToolProvider\PlatformNonce\save().

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

781  : bool
782  {
783  $ok = false;
784  $key = $this->key;
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;
806  $jku = $this->jku;
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  }
$store
Definition: metadata.php:107
string $secret
Shared secret.
Definition: System.php:43
string $jku
Endpoint for public key.
Definition: System.php:95
string $key
Consumer key/client ID value.
Definition: System.php:193
$server
string $rsaKey
RSA key in PEM or JSON format.
Definition: System.php:74
+ Here is the call graph for this function:
+ 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.

Referenced by ILIAS\LTI\ToolProvider\Jwt\FirebaseClient\sign().

◆ $id

◆ $jku

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

◆ $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(), ilScormAiccDataSet\__construct(), ilObjectCustomUserFieldsPlaceholderValues\__construct(), php4XSLTProcessor\__construct(), ilBcryptPhpPasswordEncoder\__construct(), FormMailCodesGUI\__construct(), ILIAS\Style\Content\CharacteristicCopyPasteSessionRepo\__construct(), ilUserPasswordEncoderFactory\__construct(), ilGlobalCacheService\__construct(), ILIAS\Notifications\ilNotificationSettingsTable\__construct(), ILIAS\Refinery\KindlyTo\Transformation\RecordTransformation\__construct(), ilBcryptPasswordEncoder\__construct(), ILIAS\Refinery\To\Transformation\RecordTransformation\__construct(), ilUserPasswordManager\__construct(), ilAsyncPropertyFormGUI\__construct(), ilLDAPSettingsGUI\__construct(), ilAssQuestionHintsTableGUI\__construct(), ilPageConfig\__construct(), ActiveRecord\__construct(), ilSearchGUI\__getFilter(), ilUserXMLWriter\__handlePreferences(), assQuestion\__isset(), ilSurveyCategory\__set(), ilSurveyPhrases\__set(), SurveyQuestion\__set(), assQuestion\__set(), ilRbacReview\__setRoleType(), ilMDEditorGUI\__setTabs(), ilTree\__validateSubtrees(), PEAR\_checkDelExpect(), ilHistory\_createEntry(), ilObjSCORM2004LearningModule\_getCourseCompletionForUser(), ilNewsItem\_getDefaultVisibilityForRefId(), ilMDUtilSelect\_getDifficultySelect(), ilMDUtilSelect\_getDurationSelect(), ilMDFactory\_getInstance(), ilMDUtilSelect\_getInteractivityLevelSelect(), ilObjAssessmentFolder\_getLog(), ilMailBoxQuery\_getMailBoxListData(), ilMediaItem\_getMapAreasIntLinks(), ilMDUtilSelect\_getSemanticDensitySelect(), ilObjSCORMLearningModule\_getStatusForUser(), assQuestion\_getTotalRightAnswers(), ilMDUtilSelect\_getTypicalAgeRangeSelect(), ilMDUtilSelect\_getTypicalLearningTimeSelect(), ILIAS\UI\Implementation\Component\Input\_isClientSideValueOk(), ilBlockSetting\_lookup(), ilHierarchyFormGUI\_str(), ILIAS\Refinery\To\Transformation\DictionaryTransformation\accepts(), ILIAS\Refinery\To\Transformation\TupleTransformation\accepts(), ILIAS\Refinery\To\Transformation\RecordTransformation\accepts(), ILIAS\GlobalScreen\ScreenContext\AdditionalData\Collection\add(), ilLocatorGUI\addAdministrationItems(), ilObjOrgUnitGUI\addAdminLocatorItems(), ilDclLinkButton\addAttribute(), ilLocatorGUI\addContextItems(), ilOrgUnitGenericMultiInputGUI\addCustomAttribute(), ilOrgUnitMultiLineInputGUI\addCustomAttribute(), ilDclGenericMultiInputGUI\addCustomAttribute(), ilMemberAgreementGUI\addCustomFields(), ILIAS\Notes\FilterAdapterGUI\addField(), ILIAS\Repository\Form\FormAdapterGUI\addField(), ilDclFileuploadRecordFieldModel\addHiddenItemsToConfirmation(), ilDclMobRecordFieldModel\addHiddenItemsToConfirmation(), ilDclBaseRecordFieldModel\addHiddenItemsToConfirmation(), ilOrgUnitMultiLineInputGUI\addHook(), ilOrgUnitGenericMultiInputGUI\addHook(), ilDclGenericMultiInputGUI\addHook(), ilNavigationHistory\addItem(), ilAsyncContainerSelectionExplorer\addJsConf(), ilObjStudyProgrammeTreeExplorerGUI\addJsConf(), ilAsyncNotifications\addJsConfig(), ilUserQuestionResult\addKeyValue(), ilMDClassification\addKeyword(), ilMDGeneral\addKeyword(), ilObjContentObjectGUI\addLocations(), 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(), ilContainer\applyContainerUserFilter(), ilObjFileAbstractProcessor\applyOptions(), ILIAS\Repository\arrayArray(), ilFormPropertyGUI\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(), ilScormAiccDataSet\buildManifest(), ilCmiXapiDataSet\buildManifest(), ilScormAiccDataSet\buildProperties(), ilCmiXapiDataSet\buildProperties(), ActiveRecordList\buildRow(), ilLSStateDB\buildStates(), ilvCard\buildVCard(), ilPageQuestionProcessor\calculatePoints(), assSingleChoice\calculateReachedPoints(), assLongMenu\calculateReachedPointsForSolution(), assKprimChoice\calculateReachedPointsForSolution(), assImagemapQuestion\calculateReachedPointsForSolution(), assMultipleChoice\calculateReachedPointsForSolution(), assSingleChoice\calculateReachedPointsFromPreviewSession(), assClozeTest\calculateReachedPointsFromPreviewSession(), ilMailSearchObjectGUI\cancel(), ilObjSystemFolderGUI\changeHeaderTitleObject(), ilObjLanguageFolder\checkAllLanguages(), ilClozeGapInputBuilderGUI\checkInput(), ilMultiSelectInputGUI\checkInput(), ilOrgUnitGenericMultiInputGUI\checkInput(), ilSetupLanguage\checkLanguage(), ilGlobalCacheService\checkMemory(), assLongMenu\checkQuestionCustomPart(), ilWkhtmlToPdfRenderer\checkReturnValueFromCommandLine(), SurveyMatrixQuestion\checkUserInput(), ilLDAPSettingsGUI\chooseMapping(), ilTestFixedQuestionSetConfig\cloneQuestionSetRelatedData(), ilObjLearningSequence\cloneSettings(), ilObjUserFolderGUI\collectChangedFields(), ilChatroomMetricsCollectedObjective\collectFrom(), assTextSubsetGUI\completeAddAnswerAction(), assClozeTestGUI\completeAddAnswerAction(), ilTestSkillLevelThresholdsTableGUI\completeCompetenceTitles(), assErrorText\completeParsedErrorTextFromErrorData(), ilObjPDFGenerationGUI\configForm(), ilMailFolderGUI\confirmDeleteMails(), ilObjQuestionPoolGUI\confirmDeleteQuestionsObject(), ilObjTestGUI\confirmRemoveQuestionsObject(), ilSurveyConstraintsGUI\constraintsAddObject(), ilSurveyConstraintsGUI\constraintStep1Object(), ilBuddySystemArrayCollection\containsKey(), ilObjSurveyQuestionPoolGUI\copyObject(), ilObjQuestionPoolGUI\copyObject(), assLongMenu\correctAnswerDoesNotExistInAnswerOptions(), assErrorText\correctDataAfterParserUpdate(), ilAssLacCompositeBuilder\create(), ilDclTableViewEditGUI\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(), ilParticipantsTestResultsGUI\createUserResults(), ilSetupLanguage\cut_header(), ilSCORM13Package\dbImport(), ilLDAPRoleGroupMapping\deassignFromGroup(), Firebase\JWT\JWT\decode(), arConnectorCache\delete(), ilMDClassification\delete(), ilMDGeneral\delete(), ilCalendarCategoryAssignments\deleteAssignment(), ilGeoLocationFileMockRepository\deleteExpiredGeoLocations(), ilGeoLocationFileMockRepository\deleteGeoLocation(), ilGeoLocationFileMockRepository\deleteGeoLocationsByCoordinates(), assClozeGap\deleteItem(), ASS_MarkSchema\deleteMarkSteps(), SurveyQuestion\deleteMaterial(), ilRepUtil\deleteObjects(), ilAssQuestionSkillAssignmentRegistry\deleteStringifiedImports(), PEAR\delExpect(), ilPublicUserProfileGUI\deliverVCard(), ilUserSearchFilter\disableField(), ilObjTypeDefinitionGUI\displayList(), ilBookingProcessGUI\displayPostInfo(), ilObjForumGUI\doHistoryCheck(), ILIAS\Setup\Metrics\ArrayStorage\doStore(), ilObjLanguageFolderGUI\downloadDeprecatedObject(), ilObjMediaObject\duplicate(), ilPCResourcesGUI\edit(), ilObjTypeDefinitionGUI\editObject(), assSingleChoiceGUI\editQuestion(), ilUserSearchFilter\enableField(), Firebase\JWT\JWT\encode(), ilAccountMail\ensureValidMailDataShape(), ilADTLocalizedText\equals(), ilDataCollectionDataSet\escapeArray(), ilObjTest\evalStatistical(), ilObjTest\evalTotalStartedAverageTime(), ilAssLacCompositeEvaluator\evaluate(), ilSurveyEvaluationGUI\evaluation(), ilCertificateTemplatePreviewAction\exchangeCertificateVariables(), ILIAS\OrgUnit\Webservices\SOAP\Base\execute(), ilTestSignatureGUI\executeCommand(), ilMailGUI\executeCommand(), ilObjAssessmentFolderGUI\exportLogObject(), ilSurveyEvaluationGUI\exportResultsDetailsExcel(), ilMultipleNestedOrderingElementsAdditionalIndexLevelRemover\fetchIndentationsFromSubmitValues(), ilTree\fetchNodeData(), assOrderingQuestion\fetchSolutionSubmit(), ilMailFolderTableGUI\fetchTableData(), ilTestSequenceDynamicQuestionSet\fetchTrackedCorrectAnsweredSequence(), ILIAS\Repository\Form\FormAdapterGUI\file(), ilQuestionBrowserTableGUI\fillHeader(), ilMailMemberSearchTableGUI\fillRow(), ilStudyProgrammeMailMemberSearchTableGUI\fillRow(), ilAdvancedMDFieldTableGUI\fillRow(), ilMailFolderTableGUI\fillRow(), ilMailSearchObjectsTableGUI\fillRow(), ilMailSearchObjectMembershipsTableGUI\fillRow(), ilBookingObjectsTableGUI\fillRow(), ilBlockGUI\fillRow(), ilBookingReservationsTableGUI\fillRow(), ilTable2GUI\fillRow(), ilBookingReservationsTableGUI\fillRowCSV(), ilTable2GUI\fillRowCSV(), ilBookingReservationsTableGUI\fillRowExcel(), ilTemplate\fillVars(), ilSessionMaterialsTableGUI\filterData(), ilCtrlStructureHelper\filterUnnecessaryEntries(), ilCalendarVisibility\forceVisibility(), ilLegacyFormElementsUtil\formSelect(), ilObjLearningSequenceGUI\forwardByClass(), ILIAS\LTI\ToolProvider\Platform\fromConsumerKey(), ILIAS\LTI\ToolProvider\Tool\fromConsumerKey(), assKprimChoiceImport\fromXML(), assMultipleChoiceImport\fromXML(), assSingleChoiceImport\fromXML(), ilSurveyEditorGUI\gatherSelectedTableItems(), ILIAS\MediaObjects\ImageMap\ImageMapEditSessionRepository\get(), ILIAS\FileUpload\Collection\ImmutableMapWrapper\get(), ilStaticCache\get(), ILIAS\GlobalScreen\ScreenContext\AdditionalData\Collection\get(), ILIAS\FileUpload\Collection\EntryLockingStringMap\get(), ilBuddySystemArrayCollection\get(), ILIAS\LTIOAuth\OAuthSignatureMethod_HMAC_SHA1\get_name(), ILIAS\Setup\AgentCollection\getAgent(), assErrorTextGUI\getAggregatedAnswersView(), assLongMenuGUI\getAggregatedAnswersView(), ilBuddySystemRelationRepository\getAll(), assErrorTextGUI\getAnswersFrequency(), assOrderingQuestionGUI\getAnswersFrequency(), assMatchingQuestionGUI\getAnswersFrequency(), ilPageQuestionProcessor\getAnswerStatus(), ActiveRecordList\getArray(), ActiveRecord\getArray(), ILIAS\Setup\AgentCollection\getArrayToConfigTransformation(), ilPasswordAssistanceGUI\getAssignPasswordForm(), ilDclLinkButton\getAttribute(), ilLDAPSettingsGUI\getAttributeMappingKeys(), ilOrgUnitType\getAvailableAdvancedMDRecords(), ilAdvancedMDTranslationGUI\getAvailableLanguagesOptions(), ilPCPlaceHolderGUI\getAvailableTypes(), assClozeGap\getBestSolutionIndexes(), ILIAS\COPage\Editor\Server\UIWrapper\getButton(), ilPCParagraphGUI\getCharStyleSelector(), ilObjMediaPool\getChilds(), assClozeGapCombination\getCleanCombinationArray(), ilDclCache\getCloneOf(), ilSCORM13PlayerGUI\getCMIData(), ILIAS\Survey\Editing\EditingGUIRequest\getCodeMailPart(), ILIAS\Survey\Editing\EditingGUIRequest\getCodesPar(), ilAccessibilityDocumentTableGUI\getColumnDefinition(), ilTermsOfServiceDocumentTableGUI\getColumnDefinition(), ilContainer\getCompleteDescriptions(), ILIAS\Setup\ConfigCollection\getConfig(), ilDclSelectionFieldModel\getConfirmationGUI(), ILIAS\Survey\Editing\EditingGUIRequest\getConstraintPar(), ilContainerFilterUtil\getContainerRecordTitle(), ilFeedWriter\getContextPath(), ILIAS\Awareness\AwarenessSessionRepository\getCount(), ILIAS\Repository\Form\FormAdapterGUI\getData(), ilSCORM13PlayerGUI\getDebugValues(), DifferenceEngine\getDiffBody(), ilPublicUserProfileGUI\getEmbeddable(), ilOnScreenChatGUI\getEmoticons(), ilObjSurvey\getEvaluationByUser(), ilObjUserFolder\getExportSettings(), assOrderingHorizontal\getExpressionTypes(), ilHtmlPurifierCompositeTest\getFakePurifier(), ilTimingsCronReminder\getFreshlyStartedObjectsForUser(), ilConsultationHourGroups\getGroupSelectOptions(), ILIAS\Survey\Editing\EditingGUIRequest\getHForm(), ILIAS\Awareness\AwarenessSessionRepository\getHighlightCount(), ilOrgUnitMultiLineInputGUI\getHook(), ilOrgUnitGenericMultiInputGUI\getHook(), ilDclGenericMultiInputGUI\getHook(), ILIAS\LTI\ToolProvider\UserResult\getId(), ILIAS\LTI\ToolProvider\Platform\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(), ilTrMatrixTableGUI\getItems(), ilBookingReservationsTableGUI\getItems(), ilAsyncContainerSelectionExplorer\getJsConf(), ilObjStudyProgrammeTreeExplorerGUI\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(), ILIAS\COPage\Editor\Server\UIWrapper\getLink(), ilObjAssessmentFolder\getLog(), ilObjAssessmentFolderGUI\getLogDataOutputForm(), ilLTIConsumerContentGUI\getLoginLTI13Form(), assLongMenuGUI\getLongMenuTextWithInputFieldsInsteadOfGaps(), ilLSViewLayoutProvider\getMainBarModification(), ilObjExternalToolsSettingsGUI\getMapsForm(), assSingleChoice\getMaximumPoints(), assMultipleChoice\getMaximumPoints(), assImagemapQuestion\getMaximumPoints(), ILIAS\LTI\ToolProvider\getMessageClaims(), ILIAS\Filesystem\Stream\Stream\getMetadata(), ilQuestionExporter\getMobs(), ilTimingsCronReminder\getNewExceededObjectForUser(), ilObjSurvey\getNextPage(), ilAssQuestionSkillAssignmentRegistry\getNumberOfChunksByKey(), ilSessionStatistics\getNumberOfSessionsByType(), ILIAS\UI\Implementation\Component\Signal\getOption(), ilExplorer\getOutput(), ILIAS\Survey\Mode\AbstractUIModifier\getPanelCard(), ilCtrl\getParameterArrayByClass(), ilAdvancedMDSettingsGUI\getParsedRecordObjects(), ilDclTable\getPartialRecords(), ilTestResultsToolbarGUI\getParticipantSelectorOptionsWithHintOption(), ilTestServiceGUI\getPassDetailsOverviewTableGUI(), ILIAS\Exercise\PeerReview\ExcPeerReviewDistribution\getPeersOfRater(), ilObjectCustomUserFieldsPlaceholderValues\getPlaceholderValuesForPreview(), ilSCORM13PlayerGUI\getPlayer(), ilOrgUnitPositionGUI\getPositionFromRequest(), ILIAS\Setup\Objective\MigrationObjective\getPreconditions(), ILIAS\Container\Content\BlockSessionRepository\getProperty(), ILIAS\UI\Implementation\Crawler\Entry\ComponentEntryDescription\getProperty(), ilDclBaseFieldModel\getPropertyInstance(), ilObjSurvey\getQuestionblocksTable(), ilObjSurveyQuestionPool\getQuestionsData(), ilTestService\getQuestionSummaryData(), assMatchingQuestion\getRandomId(), ilMailFormCall\getRecipients(), ILIAS\UI\Implementation\Render\LoaderCachingWrapper\getRendererFor(), ilExerciseManagementGUI\getReportPanel(), ILIAS\Repository\Form\FormAdapterGUI\getRepoStandardUploadHandlerGUI(), ilFormPropertyGUI\getRequestParam(), ilObjTestVerificationGUI\getRequestValue(), ilObjSCORMVerificationGUI\getRequestValue(), ilObjCmiXapiVerificationGUI\getRequestValue(), ilObjExerciseVerificationGUI\getRequestValue(), ilObjCourseVerificationGUI\getRequestValue(), ilLTIConsumerContentGUI\getRequestValue(), ilDclTableHelper\getRolesIdsWithReadAccessOnDataCollection(), ilEvaluationAllTableGUI\getSelectedColumns(), assLongMenuGUI\getSelectGapTemplate(), ilTestSequence\getSequenceSummary(), ilTestSequenceDynamicQuestionSet\getSequenceSummary(), ilECSSetting\getServerURI(), ILIAS\Portfolio\Access\AccessSessionRepository\getSharedSessionPassword(), ilUserQuestionResult\getSolutionForKey(), assClozeTestGUI\getSolutionOutput(), assLongMenu\getSolutionSubmit(), assFormulaQuestion\getSolutionSubmit(), assClozeTest\getSolutionSubmitValidation(), ilObjSCORMLearningModule\getStatusForUser(), ILIAS\Setup\AgentCollection\getStatusObjective(), ilAssQuestionSkillAssignmentRegistry\getStringifiedImports(), ilMailbox\getSubFolders(), ilContainer\getSubItems(), ilObjectDefinition\getSubobjectsToFilter(), SurveyQuestionEvaluation\getSumScores(), ilObjSurvey\getSurveyQuestions(), ilDBPdoReverse\getTableFieldDefinition(), ilObjQuestionPoolGUI\getTabs(), ilObjTestGUI\getTargetQuestionpoolForm(), ilMailFormCall\getTargetUrl(), ilObjStyleSheet\getTemplateClasses(), ilMailTemplateGUI\getTemplateForm(), ilMathJaxMetricsCollectedObjective\getTentativePreconditions(), ilTestSkillLevelThresholdsGUI\getTestId(), ilTestSignatureGUI\getTestOutputGUI(), ilObjTest\getTestResult(), assLongMenuGUI\getTextGapTemplate(), ilPageObjectGUI\getTinyMenu(), ILIAS\OrgUnit\Provider\OrgUnitToolProvider\getToolsForContextStack(), ilScormAiccDataSet\getTypes(), ilCmiXapiDataSet\getTypes(), ilAssQuestionSkillAssignmentList\getUniqueAssignedSkills(), ilChatroomFormFactory\getUserChatNameSelectionForm(), ILIAS\UI\Implementation\Component\Input\Field\SwitchableGroup\getValue(), ilOrgUnitMultiLineInputGUI\getValue(), ilOrgUnitGenericMultiInputGUI\getValue(), ilDclGenericMultiInputGUI\getValue(), ILIAS\UI\Implementation\Component\Input\Field\HasDynamicInputsBase\getValue(), ILIAS\KioskMode\State\getValueFor(), ilTestService\getVirtualSequenceUserResults(), SurveyMatrixQuestion\getWorkingDataFromUserInput(), ilDataCollectionDataSet\getXmlNamespace(), ilRbacAdmin\grantPermission(), ilPDSelectedItemsBlockViewGUI\groupItemsByLocation(), ilPDSelectedItemsBlockViewGUI\groupItemsByStartDate(), assKprimChoiceGUI\handleAnswerTextsSubmit(), ilPCAMDForm\handleCopiedContent(), SurveyImportParser\handlerBeginTag(), SurveyImportParser\handlerEndTag(), ilObjUserFolderGUI\handleUploadedFiles(), ilMMItemTranslationStorage\hasDefaultTranslation(), ilDelegatingHandler\hideSensitiveData(), ilLMPresentationGUI\ilLocator(), SurveySingleChoiceQuestion\importAdditionalMetadata(), SurveyMultipleChoiceQuestion\importAdditionalMetadata(), SurveyMatrixQuestion\importAdditionalMetadata(), SurveySingleChoiceQuestionGUI\importEditFormValues(), SurveyMultipleChoiceQuestionGUI\importEditFormValues(), SurveyMatrixQuestionGUI\importEditFormValues(), ilUserImportParser\importEndTag(), ilSurveyParticipantsGUI\importExternalRecipientsFromFileObject(), ilSurveyParticipantsGUI\importExternalRecipientsFromTextObject(), assClozeGapCombination\importGapCombinationToDb(), ilObjSurvey\importObject(), ilTaggingClassificationProvider\importPostData(), ilScormAiccImporter\importXmlRepresentation(), ilAssQuestionSkillAssignmentList\incrementMaxPointsBySkill(), ilAssQuestionSkillAssignmentList\incrementNumAssignsBySkill(), ilPageLayoutAdministrationGUI\initAddPageLayoutForm(), ilObjUserGUI\initCreate(), ilMarkSchemaTableGUI\initData(), ilContainerSessionsContentGUI\initDetails(), ilObjItemGroupGUI\initEditCustomForm(), ilMMTopItemFormGUI\initForm(), ilSurveyEditorGUI\initHeadingForm(), ilObjTestGUI\initImportForm(), ilContainerGUI\initListPresentationForm(), ilObjWorkflowEngineGUI\initLocator(), ilSurveyRaterGUI\initMailRatersForm(), ilSurveyParticipantsGUI\initMailRatersForm(), 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(), ilBadgeGUIRequest\int(), ILIAS\Skill\Service\SkillGUIRequest\int(), ILIAS\Repository\int(), ilFormPropertyGUI\int(), ilBadgeGUIRequest\intArray(), ILIAS\Skill\Service\SkillGUIRequest\intArray(), ILIAS\Repository\intArray(), ilFormPropertyGUI\intArray(), assTextSubset\isAnswerCorrect(), ilAccessCustomRBACOperationAddedObjective\isApplicable(), assMultipleChoice\isForcedEmptySolution(), assFormulaQuestionGUI\isSaveCommand(), ilIdentifiedMultiValuesJsPositionIndexRemover\isValueIdentifier(), ILIAS\Data\Order\join(), assTextSubset\joinAnswers(), ilContainer\legacyOnlineFilter(), ilTableGUI\linkbar(), 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(), Firebase\JWT\JWK\parseKeySet(), ILIAS\LTI\ToolProvider\Jwt\FirebaseClient\parseKeySet(), ilSurveyEvaluationGUI\parseResultsToExcel(), ilCmiXapiImporter\parseXmlFileProperties(), ilContainerGUI\pasteObject(), ilTestSequence\pcArrayShuffle(), ilObjTest\pcArrayShuffle(), ilContainerGUI\performPasteIntoMultipleObjectsObject(), ilLegacyFormElementsUtil\period2String(), ilObjRoleTemplateGUI\permSaveObject(), ilObjRoleGUI\permSaveObject(), ilAccessibilityTableGUI\populate(), ilTermsOfServiceTableGUI\populate(), ilTestSettingsChangeConfirmationGUI\populateParametersFromPost(), ilTestSettingsChangeConfirmationGUI\populateParametersFromPropertyForm(), ilSCORM13PlayerGUI\postLogEntry(), ilDclEditViewDefinitionGUI\postOutputProcessing(), ilDclCreateViewDefinitionGUI\postOutputProcessing(), ilForumExplorerGUI\preloadChilds(), ilBlockSetting\preloadPDBlockSettings(), ilCourseDefinedFieldDefinition\prepareSelectBox(), ilWebDAVMountInstructionsDocumentTableGUI\preProcessData(), ilQuestionPageParser\processPagesToParse(), ilCronFinishUnfinishedTestPasses\processPasses(), ilExSubmission\processUploadedZipFile(), ilFileUtils\processZipFile(), ilUtilTest\provideGotoLinkData(), ilAccessibilityTrimmedDocumentPurifier\purifyArray(), ilSamlIdpMetadataPurifier\purifyArray(), ilTermsOfServiceTrimmedDocumentPurifier\purifyArray(), ilHtmlPurifierAbstractLibWrapper\purifyArray(), ilHtmlPurifierComposite\purifyArray(), ilQuestionExporter\questionsJS(), ilObjQuestionPool\questionsToXML(), ilObjTestGUI\randomselectObject(), ilObjTest\randomSelectQuestions(), ILIAS\Test\InternalRequestService\raw(), ILIAS\TestQuestionPool\InternalRequestService\raw(), ILIAS\Repository\raw(), ilFormPropertyGUI\raw(), ilShibbolethSettings\read(), ilLanguageFile\read(), arConnectorCache\read(), ilADTActiveRecordByType\read(), ilExportFieldsInfo\read(), ilIniFile\readGroups(), ilSCORM13PlayerGUI\readSharedData(), ILIAS\LTI\ToolProvider\Util\redirect(), ilBuddySystemArrayCollection\remove(), ilTestSequenceFixedQuestionSet\removeArrayValue(), ilRTE\removeButton(), ilDateList\removeByDAY(), ilUserQuestionResult\removeByKey(), ilObjSurvey\removeConstraintsConcerningQuestion(), ilBuddySystemArrayCollection\removeElement(), ilIdentifiedMultiValuesJsPositionIndexRemover\removeIdentifierIndicator(), ilPropertyFormGUI\removeItemByPostVar(), ilObjMediaObject\removeMediaItem(), ilSplitButtonGUI\removeMenuItem(), ilRTE\removePlugin(), ilIdentifiedMultiValuesJsPositionIndexRemover\removePositionIndexLevels(), ilHtmlPurifierComposite\removePurifier(), ilTestSequenceFixedQuestionSet\removeQuestion(), ilTabsGUI\removeTab(), ilTaggingSlateContentGUI\removeTagsWithoutAccess(), ilObjTestListGUI\removeUserResultsCommand(), ilBiblEntryTablePresentationGUI\render(), ilOrgUnitGenericMultiInputGUI\render(), ilOrgUnitMultiLineInputGUI\render(), ilDclGenericMultiInputGUI\render(), ilTableGUI\render(), ILIAS\UI\Implementation\Component\Listing\Renderer\render_descriptive(), assTextSubsetGUI\renderAggregateView(), assNumericGUI\renderAggregateView(), assOrderingHorizontalGUI\renderAggregateView(), assOrderingQuestionGUI\renderAggregateView(), ILIAS\UI\Implementation\Component\Input\Field\Renderer\renderCheckboxField(), ilChatroomHistoryGUI\renderDateTimeInformation(), ilTableGUI\renderHeader(), ilTaggingSlateContentGUI\renderResourcesForTag(), ILIAS\UI\Implementation\Component\MainControls\Slate\Renderer\renderSlate(), ILIAS\UI\Implementation\Component\Input\ViewControl\Renderer\renderSortation(), ILIAS\GlobalScreen\ScreenContext\AdditionalData\Collection\replace(), ilPCParagraph\replaceBBTagByMatching(), ilMailTemplatePlaceholderResolver\resolve(), ilValidator\restoreDeletedObjects(), ilValidator\restoreSubTrees(), assErrorTextGUI\restructurePostDataForSaving(), ilPasswordAssistanceGUI\retrieveRequestedKey(), ilGlobalCacheService\returnKey(), ilEMailInputGUI\sanitize(), ilSettingsPermissionGUI\save(), assImagemapQuestion\saveAnswerSpecificDataToDb(), assMatchingQuestion\saveAnswerSpecificDataToDb(), assClozeTest\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(), assSingleChoice\savePreviewData(), assFormulaQuestion\savePreviewData(), ilPersonalProfileGUI\savePublicProfile(), ilObjTest\saveQuestionsToDb(), ilOpenIdConnectSettingsGUI\saveSettings(), ASS_MarkSchema\saveToDb(), ilObjTest\saveToDb(), ilLTIDataConnector\saveToolConsumerILIAS(), SurveyMatrixQuestion\saveUserInput(), assTextSubset\saveWorkingData(), assFormulaQuestion\saveWorkingData(), assClozeTest\saveWorkingData(), ilAdvancedSearchGUI\searchAdvancedMD(), ILIAS\Repository\Form\FormAdapterGUI\section(), ilObjSurvey\sendCodes(), ilDclRecordListGUI\sendFile(), ILIAS\LTI\ToolProvider\Util\sendForm(), ilObjSurvey\sendNotificationMail(), soap_transport_http\sendRequest(), ILIAS\HTTP\Response\Sender\DefaultResponseSenderStrategy\sendResponse(), ilStaticCache\set(), ilBuddySystemArrayCollection\set(), 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(), ilADTMultiEnumDefinition\setOptions(), ilADTEnumDefinition\setOptions(), ilCheckboxGroupInputGUI\setOptions(), ilExplorer\setOutput(), ilExplorer\setParamsGet(), ilPCPlugged\setProperties(), ilDclBaseFieldModel\setProperty(), ilQuestionBrowserTableGUI\setQuestionData(), ilFormPropertyGUI\setRequestParam(), ILIAS\Portfolio\Access\AccessSessionRepository\setSharedSessionPassword(), ilUserUtil\setStartingPoint(), ilAssQuestionSkillAssignmentRegistry\setStringifiedImports(), ilTabsGUI\setTabActive(), ilMailErrorFormatterTest\setUp(), ilCtrlContextTest\setUp(), ilGlobalCacheService\setValid(), ilAssErrorTextCorrectionsInputGUI\setValue(), ilErrorTextWizardInputGUI\setValue(), ilKVPWizardInputGUI\setValue(), ilOrgUnitMultiLineInputGUI\setValue(), ilOrgUnitGenericMultiInputGUI\setValue(), ilDclGenericMultiInputGUI\setValue(), ilPlainTextHandler\shortenPHPSessionId(), ilLoggingErrorFileStorage\shortenPHPSessionId(), ilIniFile\show(), ilObjOrgUnitGUI\showAdministrationPanel(), ilMailFormGUI\showForm(), ilTestScoringByQuestionsGUI\showManScoringByQuestionParticipantsTable(), ilLMPresentationGUI\showPrintView(), ilPersonalProfileGUI\showPublicProfileFields(), ilMailSearchGUI\showResults(), ilChatroomViewGUI\showRoom(), Firebase\JWT\JWT\sign(), ilExportFieldsInfo\sortExportFields(), ilContainerSorting\sortItems(), ilExplorer\sortNodes(), ilContainerSorting\sortOrderDefault(), ilContainerSorting\sortSubItems(), assOrderingHorizontal\splitAndTrimOrderElementText(), nusoap_parser\start_element(), ilForumNotificationCache\store(), ilShibbolethSettings\store(), arConnectorCache\storeActiveRecordInCache(), ilMMItemTranslationStorage\storeDefaultTranslation(), ilMailFormCall\storeReferer(), ilHierarchyFormGUI\str(), ilFormPropertyGUI\str(), ilBadgeGUIRequest\strArray(), ILIAS\Skill\Service\SkillGUIRequest\strArray(), ILIAS\Repository\strArray(), ilFormPropertyGUI\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(), ilMailTemplateContextTest\testGlobalPlaceholdersCanBeResolvedWithCorrespondingValues(), 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(), assTextSubset\toJSON(), assImagemapQuestion\toJSON(), assKprimChoice\toJSON(), assSingleChoice\toJSON(), assMultipleChoice\toJSON(), assClozeTest\toJSON(), ilLDAPResult\toSimpleArray(), assLongMenuExport\toXML(), assLongMenuExportQti21\toXML(), assClozeTestExport\toXML(), ilMDClassification\toXML(), ilMDGeneral\toXML(), ilMDEducational\toXML(), ilObjSurveyQuestionPool\toXML(), ilSCORM2004TrackingItems\tracInteractionUserAnswers(), ilSCORM2004TrackingItems\tracInteractionUserAnswersColumns(), ILIAS\Refinery\KindlyTo\Transformation\DictionaryTransformation\transform(), ILIAS\Refinery\To\Transformation\DictionaryTransformation\transform(), ILIAS\Refinery\KindlyTo\Transformation\TupleTransformation\transform(), ILIAS\Refinery\To\Transformation\TupleTransformation\transform(), ILIAS\Refinery\KindlyTo\Transformation\RecordTransformation\transform(), ILIAS\Refinery\To\Transformation\RecordTransformation\transform(), ilObjLanguageFolderGUI\uninstallObject(), ilObjStudyProgrammeMembersGUI\unmarkAccreditedMulti(), ilObjMediaObject\update(), ilStudyProgrammeType\updateAssignedStudyProgrammesIcons(), ilHierarchyFormGUI\updateExpanded(), ilGeoLocationFileMockRepository\updateGeoLocation(), ilGeoLocationFileMockRepository\updateGeoLocationTimestampByCoordinates(), ilTestArchiver\updateTestArchive(), ilCtrlArrayIterator\valid(), ilStatistics\validate(), SurveyMultipleChoiceQuestionGUI\validateEditForm(), assFormulaQuestion\validateSolutionSubmit(), Firebase\JWT\JWT\verify(), ilObjLTIConsumer\verifyPrivateKey(), ILIAS\LTI\ToolProvider\verifySignature(), ilObjTypeDefinitionGUI\viewObject(), ilObjObjectFolderGUI\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\Data\URI\withParameter(), ILIAS\UI\Implementation\Component\Input\Field\SwitchableGroup\withRequired(), ILIAS\KioskMode\State\withValueFor(), ilIniFile\write(), ilADTActiveRecordByType\write(), ilObjSystemFolderGUI\writeCheckParams(), ilScormAiccDataSet\writeData(), ilSCORM2004StoreData\writeGObjective(), assFormulaQuestionGUI\writePostData(), ilSurveyPhrasesGUI\writePostData(), ilNewsForContextBlockGUI\writeSettings(), and ilSCORM13PlayerGUI\writeSharedData().

◆ $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

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

◆ $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 ilFavouritesListGUI\__construct(), ILIAS\Mail\Cron\ExpiredOrOrphanedMails\NotificationsCollector\__construct(), ilObjForum\__construct(), ilQuestionpoolExport\__construct(), ilObjUser\_checkExternalAuthAccount(), ilObjUserAccess\_checkGoto(), ilContainer\_exportContainerSettings(), ilContainerSortingSettings\_exportContainerSortingSettings(), ilSetting\_getLongerSettings(), ilObjChatroom\_getPublicRefId(), ilECSObjectSettings\_handleDelete(), ilContainerSortingSettings\_importContainerSortingSettings(), ilDAVActivationChecker\_isActive(), ilUserSearchOptions\_isEnabled(), ilMDUtils\_parseCopyright(), ilIndividualAssessmentDataSet\_readData(), ilWebServicesConfigStoredObjective\achieve(), ilInstallationInformationStoredObjective\achieve(), ilInstIdDefaultStoredObjective\achieve(), ilNICKeyStoredObjective\achieve(), ilMakeInstallationAccessibleObjective\achieve(), ilHttpConfigStoredObjective\achieve(), ilNICKeyRegisteredObjective\achieve(), ilNoVersionDowngradeConditionObjective\achieve(), ilNoMajorVersionSkippedConditionObjective\achieve(), ilVersionWrittenToSettingsObjective\achieve(), ilChatroomServerConfigStoredObjective\achieve(), ilDefaultLanguageSetObjective\achieve(), ilSCCronTrash\addCustomSettingsToForm(), ilCalendarViewGUI\addToolbarFileDownload(), ilObjTest\applyDefaults(), ilSoapCourseAdministration\assignCourseMember(), ilObjUserFolder\buildExportFile(), ilIndividualAssessmentSettingsGUI\buildForm(), ilObjLearningSequenceSettingsGUI\buildForm(), ilObjTestSettingsScoringResultsGUI\buildForm(), ilObjStudyProgrammeSettingsGUI\buildForm(), ilLearningSequenceImporter\buildLPSettings(), ilLearningSequenceImporter\buildSettings(), ilObjAuthSettings\checkAuthLDAP(), ilObjAuthSettings\checkAuthScript(), ilObjAuthSettings\checkAuthSHIB(), ilObjChatroom\cloneObject(), ilLOSettings\cloneSettings(), ilSystemFolderMetricsCollectedObjective\collectFrom(), ilGlobalCacheMetricsCollectedObjective\collectFrom(), ilHttpMetricsCollectedObjective\collectFrom(), ilChatroomMetricsCollectedObjective\collectFrom(), ilTreeMetricsCollectedObjective\collectFrom(), ilAppointmentPresentationGroupGUI\collectPropertiesAndActions(), ilAppointmentPresentationCourseGUI\collectPropertiesAndActions(), ILIAS\GlobalScreen\Scope\Layout\Collector\MainLayoutCollector\collectStructure(), ilECSMappingSettingsGUI\cUpdateSettings(), ilLearningSequenceSettingsDB\delete(), ilStudyProgrammeSettingsDBRepository\delete(), ilLearningSequenceFilesystem\delete_image(), ilShibbolethRoleAssignmentRules\doAssignments(), ilAuthProviderShibboleth\doAuthentication(), ilObjTestScoreSettingsDatabaseRepository\doSelect(), ilECSMappingSettingsGUI\dUpdateSettings(), ilObjTestSettingsScoringResultsGUI\executeCommand(), ilObjLearningSequenceSettingsGUI\fillForm(), ilECSExportedContentTableGUI\fillRow(), ilECSImportedContentTableGUI\fillRow(), ilRbacLog\garbageCollection(), ilChatroomSettingsGUI\general(), ILIAS\LTI\ToolProvider\Service\ToolSettings\get(), ILIAS\Survey\Settings\SettingsDBRepository\getAccessSettings(), ilLearningSequenceActivationDB\getActivationForRefId(), ilChatroomTabGUIFactory\getAdminTabsForCommand(), ilGlobalCacheSetupAgent\getArrayToConfigTransformation(), ILIAS\Notifications\ilNotificationDatabaseHandler\getAvailableChannels(), ilWkhtmlToPdfConfig\getCommandLineConfig(), ilLOUserResults\getCompletedObjectiveIds(), ilObjAccessibilitySettings\getControlConceptStatus(), ilLOUserResults\getCourseResultsForUserPresentation(), ilObjUser\getDateFormat(), ilObjectDataSet\getDependencies(), ilDclTableView\getFieldSettings(), ilAppointmentPresentationGUI\getHTML(), ilBiblEntryDetailPresentationGUI\getLibrariesDeck(), ilSearchAutoComplete\getList(), ilCalendarAgendaListGUI\getPeriod(), ilUserUtil\getPossibleStartingPoints(), ilRadiusConfigRemovedObjective\getPreconditions(), ilRegistrationConfigUpdateObjective\getPreconditions(), ilPrivacySecurityConfigStoredObjective\getPreconditions(), ilWkhtmlToPdfConfig\getSavedDefaultBinaryPath(), ilServicesGlobalCacheTest\getSettings(), ILIAS\ContentPage\GlobalSettings\StorageImpl\getSettings(), ILIAS\LTI\ToolProvider\getSettings(), ilGlobalCache\getSettings(), ilLearningSequenceSettingsDB\getSettingsFor(), ILIAS\Calendar\Provider\CalendarMainBarProvider\getStaticSubItems(), ILIAS\LearningHistory\LearningHistoryMainBarProvider\getStaticSubItems(), ilStudyProgrammeTypeDBRepository\getStudyProgrammeIdsByTypeId(), ilObjUser\getTimeFormat(), ilObjUser\getTimeZone(), ILIAS\Notifications\Provider\NotificationsToastProvider\getToasts(), ILIAS\Notifications\Provider\AwarenessToastProvider\getToasts(), ilLTIDataConnector\getToolConsumers(), ILIAS\LTI\ToolProvider\Platform\getToolSettings(), ilObjectDataSet\getTypes(), ilNICKeyRegisteredObjective\getURLStringForNIC(), ilUserAutoComplete\getWherePart(), ILIAS\BookingManager\saveObjectSettingsCommandHandler\handle(), ilCertificateAppEventListener\handleCompletedStudyProgramme(), ilOnScreenChatAppEventListener\handleEvent(), ilMemberExportGUI\handleIncoming(), ilCertificateAppEventListener\handleLPUpdate(), ilObjFolderAccess\hasDownloadAction(), ilIndividualAssessmentDataSet\importRecord(), ilDidacticTemplateSettingsGUI\importTemplate(), ilMemberExportSettingsGUI\initForm(), ilObjSearchSettingsFormGUI\initForm(), ilObjSearchLuceneSettingsFormGUI\initForm(), ilAttendanceList\initForm(), ilAttendanceList\initFromSettings(), ilOnScreenChatGUI\initializeFrontend(), ilObjFileInfoRepository\initInlineSuffixes(), ilRbacSystem\initMemberView(), ilObjectServiceSettingsGUI\initServiceSettingsForm(), ilSettingsTemplateGUI\initSettingsTemplateForm(), ilObjectContentStyleSettingsGUI\initStylePropertiesForm(), ilBiblLibraryGUI\initTable(), ilSurveyParticipantsGUI\insertSavedMessageObject(), ilInstIdDefaultStoredObjective\isApplicable(), ilNICKeyStoredObjective\isApplicable(), ilMakeInstallationAccessibleObjective\isApplicable(), ilInstallationInformationStoredObjective\isApplicable(), ilDefaultLanguageSetObjective\isApplicable(), ilHttpConfigStoredObjective\isApplicable(), ilLOUtils\isCompleted(), ilTestSettingsGUI\isHiddenFormItem(), ilLTIDataConnector\loadContext(), ilChatroomServerSettings\loadDefault(), ilLTIDataConnector\loadPlatform(), ilLTIDataConnector\loadResourceLink(), ilCalendarSettings\lookupCalendarContentPresentationEnabled(), ilLOUtils\lookupObjectiveRequiredPercentage(), ilECSNodeMappingAssignments\lookupSettings(), ilContainerSortingSettings\lookupSortModeFromParentContainer(), markAccredited(), ilLearningSequenceFilesystem\moveUploaded(), ilLOXmlParser\parseSettings(), ilBlockSetting\preloadPDBlockSettings(), ilObjWebDAV\read(), ilXapiResultsCronjob\readLastRunTS(), ilCalendarCategories\readSelectedCategories(), resetProgressToSettings(), ilSCCronTrash\run(), ilChatroomAdminViewGUI\saveClientSettings(), ilObjAccessibilitySettings\saveControlConceptStatus(), ilSCCronTrash\saveCustomSettings(), ilObjTestSettingsScoringResultsGUI\saveForm(), ilWkhtmlToPdfConfigFormGUI\saveNewDefaultBinaryPath(), ilMemberExportSettingsGUI\savePrintViewSettings(), ilObjectContentStyleSettingsGUI\saveStyleSettings(), ilRemoteObjectBase\sendNewContentNotification(), ILIAS\LTI\ToolProvider\Service\ToolSettings\set(), ilChatroomInstaller\setChatroomSettings(), ilObjStudyProgramme\setPoints(), ilSettingsTemplate\setSetting(), ILIAS\LTI\ToolProvider\setSettings(), ilGlobalCache\setSettings(), ilObjStudyProgramme\setStatus(), ilSettingsFactory\settingsFor(), ILIAS\LTI\ToolProvider\Platform\setToolSettings(), ilRegistrationSettingsTest\setUp(), ilStudyProgrammeAssignmentActionsTest\setUp(), LSControlBuilderTest\setUp(), ilCalendarDayGUI\show(), ilCalendarMonthGUI\show(), ilObjLearningSequenceSettingsGUI\showLegacyPage(), ilMemberViewGUI\showMemberViewSwitch(), ilChatroomViewGUI\showRoom(), succeed(), 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(), ilIndividualAssessmentSettingsTest\test_to_form_input(), ilIndividualAssessmentInfoSettingsTest\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\testContextPrefixMustBePrependedWhenGivenAndPrefixShouldBeAppended(), 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(), ilMailMimeSubjectBuilderTest\testGlobalPrefixMustBePrependedWhenDefinedAndPrefixShouldBeAppended(), ILIAS\ContentPage\GlobalSettingsStorageTest\testGlobalSettings(), 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(), ilObjTestSettingsResultSummary\toForm(), ilObjTestSettingsGamification\toForm(), ilObjSearchSettingsFormGUI\update(), ilObjSearchLuceneSettingsFormGUI\update(), ilStudyProgrammeSettingsDBRepository\update(), ilIndividualAssessmentSettingsGUI\update(), ilObjLearningSequenceSettingsGUI\update(), ilObjLearningSequence\updateActivation(), ilShibbolethRoleAssignmentRules\updateAssignments(), ilObjLearningSequence\updateSettings(), 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\ParagraphCommandActionHandler\getContentForSaving(), 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\insertCommand(), ILIAS\COPage\Editor\Components\Paragraph\ParagraphCommandActionHandler\mergePrevious(), ilPageObject\resolveQuestionReferences(), ilObjLearningSequenceContentGUI\save(), ilLMObject\saveExportId(), ilPCParagraph\saveJS(), ILIAS\COPage\Editor\Server\UIWrapper\sendPage(), ILIAS\COPage\Editor\Components\Table\TableCommandActionHandler\sendUpdateResponse(), ILIAS\COPage\Editor\Components\Paragraph\ParagraphCommandActionHandler\split(), ilWikiPage\update(), ILIAS\COPage\Editor\Components\Section\SectionCommandActionHandler\updateCommand(), ILIAS\COPage\Editor\Components\Paragraph\ParagraphCommandActionHandler\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 30 of file System.php.