Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
<?php

namespace IMSGlobal\LTI\ToolProvider;

use IMSGlobal\LTI\ToolProvider\DataConnector\DataConnector;

/**
 * Class to represent a tool consumer resource link share key
 *
 * @author  Stephen P Vickers <svickers@imsglobal.org>
 * @copyright  IMS Global Learning Consortium Inc
 * @date  2016
 * @version 3.0.2
 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
 */
> #[\AllowDynamicProperties]
class ResourceLinkShareKey { /** * Maximum permitted life for a share key value. */ const MAX_SHARE_KEY_LIFE = 168; // in hours (1 week) /** * Default life for a share key value. */ const DEFAULT_SHARE_KEY_LIFE = 24; // in hours /** * Minimum length for a share key value. */ const MIN_SHARE_KEY_LENGTH = 5; /** * Maximum length for a share key value. */ const MAX_SHARE_KEY_LENGTH = 32; /** * ID for resource link being shared. * * @var string $resourceLinkId */ public $resourceLinkId = null; /** * Length of share key. * * @var int $length */ public $length = null; /** * Life of share key. * * @var int $life */ public $life = null; // in hours /** * Whether the sharing arrangement should be automatically approved when first used. * * @var boolean $autoApprove */ public $autoApprove = false; /** * Date/time when the share key expires. * * @var int $expires */ public $expires = null; /** * Share key value. * * @var string $id */ private $id = null; /** * Data connector. * * @var DataConnector $dataConnector */ private $dataConnector = null; /** * Class constructor. * * @param ResourceLink $resourceLink Resource_Link object * @param string $id Value of share key (optional, default is null) */ public function __construct($resourceLink, $id = null) { $this->initialize(); $this->dataConnector = $resourceLink->getDataConnector(); $this->resourceLinkId = $resourceLink->getRecordId(); $this->id = $id; if (!empty($id)) { $this->load(); } } /** * Initialise the resource link share key. */ public function initialize() { $this->length = null; $this->life = null; $this->autoApprove = false; $this->expires = null; } /** * Initialise the resource link share key. * * Pseudonym for initialize(). */ public function initialise() { $this->initialize(); } /** * Save the resource link share key to the database. * * @return boolean True if the share key was successfully saved */ public function save() { if (empty($this->life)) { $this->life = self::DEFAULT_SHARE_KEY_LIFE; } else { $this->life = max(min($this->life, self::MAX_SHARE_KEY_LIFE), 0); } $this->expires = time() + ($this->life * 60 * 60); if (empty($this->id)) { if (empty($this->length) || !is_numeric($this->length)) { $this->length = self::MAX_SHARE_KEY_LENGTH; } else { $this->length = max(min($this->length, self::MAX_SHARE_KEY_LENGTH), self::MIN_SHARE_KEY_LENGTH); } $this->id = DataConnector::getRandomString($this->length); } return $this->dataConnector->saveResourceLinkShareKey($this); } /** * Delete the resource link share key from the database. * * @return boolean True if the share key was successfully deleted */ public function delete() { return $this->dataConnector->deleteResourceLinkShareKey($this); } /** * Get share key value. * * @return string Share key value */ public function getId() { return $this->id; } ### ### PRIVATE METHOD ### /** * Load the resource link share key from the database. */ private function load() { $this->initialize(); $this->dataConnector->loadResourceLinkShareKey($this); if (!is_null($this->id)) { $this->length = strlen($this->id); } if (!is_null($this->expires)) { $this->life = ($this->expires - time()) / 60 / 60; } } }