Rev 1 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>.namespace enrol_lti\local\ltiadvantage\entity;/*** Class user, instances of which represent a specific lti user in the tool.** A user is always associated with a resource, as lti users cannot exist without a tool-published-resource. A user will* always come from either:* - a resource link launch or* - a membership sync* Both of which required a published resource.** Additionally, a user may be associated with a given resource_link instance, to signify that the user originated from* that resource_link. If a user is not associated with a resource_link, such as when creating a user during a member* sync, that param is nullable. This can be achieved via the factory method user::create_from_resource_link() or set* after instantiation via the user::set_resource_link_id() method.** @package enrol_lti* @copyright 2021 Jake Dallimore <jrhdallimore@gmail.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */class user {/** @var int the id of the published resource to which this user belongs. */private $resourceid;/** @var int the local id of the deployment instance to which this user belongs. */private $deploymentid;/** @var string the id of the user in the platform site. */private $sourceid;/** @var int|null the id of this user instance, or null if not stored yet. */private $id;/** @var int|null the id of the user in the tool site, or null if the instance hasn't been stored yet. */private $localid;/** @var string city of the user. */private $city;/** @var string country of the user. */private $country;/** @var string institution of the user.*/private $institution;/** @var string timezone of the user. */private $timezone;/** @var int maildisplay of the user. */private $maildisplay;/** @var string language code of the user. */private $lang;/** @var float the user's last grade value. */private $lastgrade;/** @var int|null the user's last access unix timestamp, or null if they have not accessed the resource yet.*/private $lastaccess;/** @var int|null the id of the resource_link instance, or null if the user doesn't originate from one. */private $resourcelinkid;/*** Private constructor.** @param int $resourceid the id of the published resource to which this user belongs.* @param int $userid the id of the Moodle user to which this LTI user relates.* @param int $deploymentid the local id of the deployment instance to which this user belongs.* @param string $sourceid the id of the user in the platform site.* @param string $lang the user's language code.* @param string $city the user's city.* @param string $country the user's country.* @param string $institution the user's institution.* @param string $timezone the user's timezone.* @param int|null $maildisplay the user's maildisplay, or null to select defaults.* @param float|null $lastgrade the user's last grade value.* @param int|null $lastaccess the user's last access time, or null if they haven't accessed the resource.* @param int|null $resourcelinkid the id of the resource link to link to the user, or null if not applicable.* @param int|null $id the id of this object instance, or null if it's a not-yet-persisted object.* @throws \coding_exception*/private function __construct(int $resourceid, int $userid, int $deploymentid, string $sourceid,string $lang, string $city, string $country,string $institution, string $timezone, ?int $maildisplay, ?float $lastgrade, ?int $lastaccess,?int $resourcelinkid = null, ?int $id = null) {global $CFG;$this->resourceid = $resourceid;$this->localid = $userid;$this->deploymentid = $deploymentid;if (empty($sourceid)) {throw new \coding_exception('Invalid sourceid value. Cannot be an empty string.');}$this->sourceid = $sourceid;$this->set_lang($lang);$this->set_city($city);$this->set_country($country);$this->set_institution($institution);$this->set_timezone($timezone);$maildisplay = $maildisplay ?? ($CFG->defaultpreference_maildisplay ?? 2);$this->set_maildisplay($maildisplay);$this->lastgrade = $lastgrade ?? 0.0;$this->lastaccess = $lastaccess;$this->resourcelinkid = $resourcelinkid;$this->id = $id;}/*** Factory method for creating a user instance associated with a given resource_link instance.** @param int $resourcelinkid the local id of the resource link instance to link to the user.* @param int $resourceid the id of the published resource to which this user belongs.* @param int $userid the id of the Moodle user to which this LTI user relates.* @param int $deploymentid the local id of the deployment instance to which this user belongs.* @param string $sourceid the id of the user in the platform site.* @param string $lang the user's language code.* @param string $timezone the user's timezone.* @param string $city the user's city.* @param string $country the user's country.* @param string $institution the user's institution.* @param int|null $maildisplay the user's maildisplay, or null to select defaults.* @return user the user instance.*/public static function create_from_resource_link(int $resourcelinkid, int $resourceid, int $userid,int $deploymentid, string $sourceid, string $lang, string $timezone,string $city = '', string $country = '', string $institution = '',?int $maildisplay = null): user {return new self($resourceid, $userid, $deploymentid, $sourceid, $lang, $city,$country, $institution, $timezone, $maildisplay, null, null, $resourcelinkid);}/*** Factory method for creating a user.** @param int $resourceid the id of the published resource to which this user belongs.* @param int $userid the id of the Moodle user to which this LTI user relates.* @param int $deploymentid the local id of the deployment instance to which this user belongs.* @param string $sourceid the id of the user in the platform site.* @param string $lang the user's language code.* @param string $timezone the user's timezone.* @param string $city the user's city.* @param string $country the user's country.* @param string $institution the user's institution.* @param int|null $maildisplay the user's maildisplay, or null to select defaults.* @param float|null $lastgrade the user's last grade value.* @param int|null $lastaccess the user's last access time, or null if they haven't accessed the resource.* @param int|null $resourcelinkid the local id of the resource link instance associated with the user.* @param int|null $id the id of this lti user instance, or null if it's a not-yet-persisted object.* @return user the user instance.*/public static function create(int $resourceid, int $userid, int $deploymentid, string $sourceid,string $lang, string $timezone, string $city = '',string $country = '', string $institution = '', ?int $maildisplay = null, ?float $lastgrade = null,?int $lastaccess = null, ?int $resourcelinkid = null, ?int $id = null): user {return new self($resourceid, $userid, $deploymentid, $sourceid, $lang, $city,$country, $institution, $timezone, $maildisplay, $lastgrade, $lastaccess, $resourcelinkid, $id);}/*** Get the id of this user instance.** @return int|null the object id, or null if not yet persisted.*/public function get_id(): ?int {return $this->id;}/*** Get the id of the resource_link instance to which this user is associated.** @return int|null the object id, or null if the user isn't associated with one.*/public function get_resourcelinkid(): ?int {return $this->resourcelinkid;}/*** Associate this user with the given resource_link instance, denoting that this user launched from the instance.** @param int $resourcelinkid the id of the resource_link instance.*/public function set_resourcelinkid(int $resourcelinkid): void {if ($resourcelinkid <= 0) {throw new \coding_exception("Invalid resourcelinkid '$resourcelinkid' provided. Must be > 0.");}$this->resourcelinkid = $resourcelinkid;}/*** Get the id of the published resource to which this user is associated.** @return int the resource id.*/public function get_resourceid(): int {return $this->resourceid;}/*** Get the id of the deployment instance to which this user belongs.** @return int id of the deployment instance.*/public function get_deploymentid(): int {return $this->deploymentid;}/*** Get the id of the user in the platform.** @return string the source id.*/public function get_sourceid(): string {return $this->sourceid;}/*** Get the id of the user in the tool.** @return int|null the id, or null if the object instance hasn't yet been persisted.*/public function get_localid(): ?int {return $this->localid;}/*** Get the user's city.** @return string the city.*/public function get_city(): string {return $this->city;}/*** Set the user's city.** @param string $city the city string.*/public function set_city(string $city): void {$this->city = $city;}/*** Get the user's country code.** @return string the country code.*/public function get_country(): string {return $this->country;}/*** Set the user's country.** @param string $countrycode the 2 digit country code representing the country, or '' to denote none.*/public function set_country(string $countrycode): void {global $CFG;require_once($CFG->libdir . '/moodlelib.php');$validcountrycodes = array_merge([''], array_keys(get_string_manager()->get_list_of_countries(true)));if (!in_array($countrycode, $validcountrycodes)) {throw new \coding_exception("Invalid country code '$countrycode'.");}$this->country = $countrycode;}/*** Get the instituation of the user.** @return string the institution.*/public function get_institution(): string {return $this->institution;}/*** Set the user's institution.** @param string $institution the name of the institution.*/public function set_institution(string $institution): void {$this->institution = $institution;}/*** Get the timezone of the user.** @return string the user timezone.*/public function get_timezone(): string {return $this->timezone;}/*** Set the user's timezone, or set '99' to specify server timezone.** @param string $timezone the timezone string, or '99' to use server timezone.*/public function set_timezone(string $timezone): void {if (empty($timezone)) {throw new \coding_exception('Invalid timezone value. Cannot be an empty string.');}$validtimezones = array_keys(\core_date::get_list_of_timezones(null, true));if (!in_array($timezone, $validtimezones)) {throw new \coding_exception("Invalid timezone '$timezone' provided.");}$this->timezone = $timezone;}/*** Get the maildisplay of the user.** @return int the maildisplay.*/public function get_maildisplay(): int {return $this->maildisplay;}/*** Set the user's mail display preference from a range of supported options.** 0 - hide from non privileged users* 1 - allow everyone to see* 2 - allow only course participants to see** @param int $maildisplay the maildisplay preference to set.*/public function set_maildisplay(int $maildisplay): void {if (!in_array($maildisplay, range(0, 2))) {throw new \coding_exception("Invalid maildisplay value '$maildisplay'. Must be in the range {0..2}.");}$this->maildisplay = $maildisplay;}/*** Get the lang code of the user.** @return string the user's language code.*/public function get_lang(): string {return $this->lang;}/*** Set the user's language.** @param string $langcode the language code representing the user's language.*/public function set_lang(string $langcode): void {if (empty($langcode)) {throw new \coding_exception('Invalid lang value. Cannot be an empty string.');}$validlangcodes = array_keys(get_string_manager()->get_list_of_translations());if (!in_array($langcode, $validlangcodes)) {throw new \coding_exception("Invalid lang '$langcode' provided.");}$this->lang = $langcode;}/*** Get the last grade value for this user.** @return float the float grade.*/public function get_lastgrade(): float {return $this->lastgrade;}/*** Set the last grade for the user.** @param float $lastgrade the last grade the user received.*/public function set_lastgrade(float $lastgrade): void {global $CFG;require_once($CFG->libdir . '/gradelib.php');$this->lastgrade = grade_floatval($lastgrade);}/*** Get the last access timestamp for this user.** @return int|null the last access timestampt, or null if the user hasn't accessed the resource.*/public function get_lastaccess(): ?int {return $this->lastaccess;}/*** Set the last access time for the user.** @param int $time unix timestamp representing the last time the user accessed the published resource.* @throws \coding_exception if $time is not a positive int.*/public function set_lastaccess(int $time): void {if ($time < 0) {throw new \coding_exception('Cannot set negative access time');}$this->lastaccess = $time;}}