AutorÃa | Ultima modificación | Ver Log |
<?phpnamespace 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;}}}