░▒▓████████████████████████████████▓▒░ ░▒▓█ ▓▒░ ░▒▓█ ~ S W A M P ~ ▓▒░ ░▒▓█ ▓▒░ ░▒▓████████████████████████████████▓▒░
pplmvsvm
LOCATION:
/var/www/moodle/public/enrol/lti/classes/local/ltiadvantage/service
☗ ROOT
↻ REFRESH
✎ CARVE FLESH
EDITING: application_registration_service.php
<?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\service; use enrol_lti\local\ltiadvantage\entity\application_registration; use enrol_lti\local\ltiadvantage\repository\application_registration_repository; use enrol_lti\local\ltiadvantage\repository\context_repository; use enrol_lti\local\ltiadvantage\repository\deployment_repository; use enrol_lti\local\ltiadvantage\repository\resource_link_repository; use enrol_lti\local\ltiadvantage\repository\user_repository; /** * Class application_registration_service. * * @package enrol_lti * @copyright 2021 Jake Dallimore <jrhdallimore@gmail.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class application_registration_service { /** @var application_registration_repository repository to work with application_registration instances. */ private $appregistrationrepo; /** @var deployment_repository repository to work with deployment instances. */ private $deploymentrepo; /** @var resource_link_repository repository to work with resource link instances. */ private $resourcelinkrepo; /** @var context_repository repository to work with context instances. */ private $contextrepo; /** @var user_repository repository to work with user instances. */ private $userrepo; /** * The application_registration_service constructor. * * @param application_registration_repository $appregistrationrepo an application registration repository instance. * @param deployment_repository $deploymentrepo a deployment repository instance. * @param resource_link_repository $resourcelinkrepo a resource_link_repository instance. * @param context_repository $contextrepo a context_repository instance. * @param user_repository $userrepo a user_repository instance. */ public function __construct(application_registration_repository $appregistrationrepo, deployment_repository $deploymentrepo, resource_link_repository $resourcelinkrepo, context_repository $contextrepo, user_repository $userrepo) { $this->appregistrationrepo = $appregistrationrepo; $this->deploymentrepo = $deploymentrepo; $this->resourcelinkrepo = $resourcelinkrepo; $this->contextrepo = $contextrepo; $this->userrepo = $userrepo; } /** * Convert a DTO into a new application_registration domain object. * * @param \stdClass $dto the object containing information needed to register an application. * @return application_registration the application_registration object */ private function registration_from_dto(\stdClass $dto): application_registration { $registration = $this->appregistrationrepo->find($dto->id); $registration->set_name($dto->name); $registration->set_platformid(new \moodle_url($dto->platformid)); $registration->set_clientid($dto->clientid); $registration->set_accesstokenurl(new \moodle_url($dto->accesstokenurl)); $registration->set_jwksurl(new \moodle_url($dto->jwksurl)); $registration->set_authenticationrequesturl(new \moodle_url($dto->authenticationrequesturl)); $registration->complete_registration(); return $registration; } /** * Gets a unique id for the registration, with uniqueness guaranteed with a lookup. * * @return string the unique id. */ private function get_unique_id(): string { global $DB; do { $bytes = random_bytes(30); $uniqueid = bin2hex($bytes); } while ($DB->record_exists('enrol_lti_app_registration', ['uniqueid' => $uniqueid])); return $uniqueid; } /** * Convert a DTO into a new DRAFT application_registration domain object. * * @param \stdClass $dto the object containing information needed to create the draft registration. * @return application_registration the draft application_registration object */ private function draft_registration_from_dto(\stdClass $dto): application_registration { return application_registration::create_draft( $dto->name, $this->get_unique_id() ); } /** * Application service handling the use case "As an admin I can create a draft platform registration". * * @param \stdClass $appregdto details of the draft application to create. * @return application_registration the application_registration domain object. * @throws \coding_exception if the DTO doesn't contain required fields. */ public function create_draft_application_registration(\stdClass $appregdto): application_registration { if (empty($appregdto->name)) { throw new \coding_exception('Cannot create draft registration. Name is missing.'); } $draftregistration = $this->draft_registration_from_dto($appregdto); return $this->appregistrationrepo->save($draftregistration); } /** * Application service handling the use case "As an admin I can update the registration of an LTI platform". * * @param \stdClass $appregdto details of the registration to update. * @return application_registration the application_registration domain object. */ public function update_application_registration(\stdClass $appregdto): application_registration { if (empty($appregdto->id)) { throw new \coding_exception('Cannot update registration. Id is missing.'); } return $this->appregistrationrepo->save($this->registration_from_dto($appregdto)); } /** * Application service handling the use case "As an admin I can delete a registration of an LTI platform". * * @param int $registrationid id of the registration to delete. */ public function delete_application_registration(int $registrationid): void { $deployments = $this->deploymentrepo->find_all_by_registration($registrationid); if ($deployments) { $deploymentservice = new tool_deployment_service( $this->appregistrationrepo, $this->deploymentrepo, $this->resourcelinkrepo, $this->contextrepo, $this->userrepo ); foreach ($deployments as $deployment) { $deploymentservice->delete_tool_deployment($deployment->get_id()); } } $this->appregistrationrepo->delete($registrationid); } }
CANCEL
Name
Type
Size
Modified
Actions
↩ ..
DIR
—
—
📄 application_registration_service.php
PHP
7 KB
2026-02-11 01:44
EDIT
📄 tool_deployment_service.php
PHP
5.5 KB
2026-02-11 01:44
EDIT
📄 tool_launch_service.php
PHP
17.5 KB
2026-02-11 01:44
EDIT