Skip to content

Commit

Permalink
MDL-52709 tool_lp: Create C(R)UD events for competency frameworks
Browse files Browse the repository at this point in the history
  • Loading branch information
gauts authored and Frederic Massart committed Apr 18, 2016
1 parent 5a4ee00 commit a3acafa
Show file tree
Hide file tree
Showing 7 changed files with 465 additions and 3 deletions.
18 changes: 16 additions & 2 deletions admin/tool/lp/classes/api.php
Expand Up @@ -417,7 +417,11 @@ public static function create_framework(stdClass $record) {
$framework->set_taxonomies($record->taxonomies);
}

$id = $framework->create();
$framework = $framework->create();

// Trigger a competency framework created event.
\tool_lp\event\competency_framework_created::create_from_framework($framework)->trigger();

return $framework;
}

Expand All @@ -444,7 +448,7 @@ public static function duplicate_framework($id) {
// Adding the suffix copy to the shortname.
$framework->set_shortname(get_string('duplicateditemname', 'tool_lp', $framework->get_shortname()));
$framework->set_id(0);
$framework->create();
$framework = $framework->create();

// Array that match the old competencies ids with the new one to use when copying related competencies.
$frameworkcompetency = competency::get_framework_tree($id);
Expand Down Expand Up @@ -483,6 +487,9 @@ public static function duplicate_framework($id) {
$transaction->rollback(new moodle_exception('Error while duplicating the competency framework.'));
}

// Trigger a competency framework created event.
\tool_lp\event\competency_framework_created::create_from_framework($framework)->trigger();

return $framework;
}

Expand All @@ -497,6 +504,10 @@ public static function duplicate_framework($id) {
public static function delete_framework($id) {
$framework = new competency_framework($id);
require_capability('tool/lp:competencymanage', $framework->get_context());

// Trigger a competency framework deleted event.
\tool_lp\event\competency_framework_deleted::create_from_framework($framework)->trigger();

return $framework->delete();
}

Expand All @@ -520,6 +531,9 @@ public static function update_framework($record) {
$framework->set_taxonomies($record->taxonomies);
}

// Trigger a competency framework updated event.
\tool_lp\event\competency_framework_updated::create_from_framework($framework)->trigger();

return $framework->update();
}

Expand Down
108 changes: 108 additions & 0 deletions admin/tool/lp/classes/event/competency_framework_created.php
@@ -0,0 +1,108 @@
<?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/>.

/**
* Competency framework created event.
*
* @package tool_lp
* @copyright 2016 Serge Gauthier <serge.gauthier.2@umontreal.ca>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_lp\event;

use core\event\base;
use tool_lp\competency_framework;

defined('MOODLE_INTERNAL') || die();

/**
* Competency framework created event class.
*
* @property-read array $other {
* Extra information about event.
* }
*
* @package tool_lp
* @since Moodle 3.1
* @copyright 2016 Serge Gauthier <serge.gauthier.2@umontreal.ca>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class competency_framework_created extends base {

/**
* Convenience method to instantiate the event.
*
* @param competency_framework $framework The framework.
* @return self
*/
public static final function create_from_framework(competency_framework $framework) {
if (!$framework->get_id()) {
throw new \coding_exception('The competency framework ID must be set.');
}
$event = static::create(array(
'contextid' => $framework->get_contextid(),
'objectid' => $framework->get_id()
));
return $event;
}

/**
* Returns localised general event name.
*
* @return string
*/
public static function get_name() {
return get_string('eventcompetencyframeworkcreated', 'tool_lp');
}

/**
* Returns non-localised description of what happened.
*
* @return string
*/
public function get_description() {
return "The user with id '$this->userid' created the competency framework with id '$this->objectid'.";
}

/**
* Returns relevant URL.
*
* @return \moodle_url
*/
public function get_url() {
return new \moodle_url('/admin/tool/lp/editcompetencyframework.php',
array('id' => $this->objectid, 'pagecontextid' => $this->contextid));
}

/**
* Initialise the event data.
*/
protected function init() {
$this->data['objecttable'] = competency_framework::TABLE;
$this->data['crud'] = 'c';
$this->data['edulevel'] = self::LEVEL_OTHER;
}

/**
* Get_objectid_mapping method.
*
* @return string the name of the restore mapping the objectid links to
*/
public static function get_objectid_mapping() {
return base::NOT_MAPPED;
}

}
101 changes: 101 additions & 0 deletions admin/tool/lp/classes/event/competency_framework_deleted.php
@@ -0,0 +1,101 @@
<?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/>.

/**
* Competency framework deleted event.
*
* @package tool_lp
* @copyright 2016 Serge Gauthier
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace tool_lp\event;

use core\event\base;
use tool_lp\competency_framework;

defined('MOODLE_INTERNAL') || die();

/**
* Competency framework deleted event class.
*
* @property-read array $other {
* Extra information about event.
* }
*
* @package tool_lp
* @since Moodle 3.1
* @copyright 2016 Serge Gauthier <serge.gauthier.2@umontreal.ca>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class competency_framework_deleted extends base {

/**
* Convenience method to instantiate the event.
*
* @param competency_framework $framework The framework.
* @return self
*/
public static final function create_from_framework(competency_framework $framework) {
if (!$framework->get_id()) {
throw new \coding_exception('The competency framework ID must be set.');
}
$event = static::create(array(
'contextid' => $framework->get_contextid(),
'objectid' => $framework->get_id()
));
return $event;
}

/**
* Returns description of what happened.
*
* @return string
*/
public function get_description() {
return "The user with id '$this->userid' deleted the competency framework with id '$this->objectid'.";
}

/**
* Return localised event name.
*
* @return string
*/
public static function get_name() {
return get_string('eventcompetencyframeworkdeleted', 'tool_lp');
}

/**
* Init method.
*
* @return void
*/
protected function init() {
$this->data['crud'] = 'd';
$this->data['edulevel'] = self::LEVEL_OTHER;
$this->data['objecttable'] = competency_framework::TABLE;;
}

/**
* Get_objectid_mapping method.
*
* @return string the name of the restore mapping the objectid links to
*/
public static function get_objectid_mapping() {
return base::NOT_MAPPED;
}

}
111 changes: 111 additions & 0 deletions admin/tool/lp/classes/event/competency_framework_updated.php
@@ -0,0 +1,111 @@
<?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/>.

/**
* Competency framework updated event.
*
* @package tool_lp
* @copyright 2016 Serge Gauthier <serge.gauthier.2@umontreal.ca>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace tool_lp\event;

use core\event\base;
use tool_lp\competency_framework;

defined('MOODLE_INTERNAL') || die();

/**
* Competency framework updated event class.
*
* @property-read array $other {
* Extra information about event.
* }
*
* @package tool_lp
* @since Moodle 3.1
* @copyright 2016 Serge Gauthier <serge.gauthier.2@umontreal.ca>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class competency_framework_updated extends base {

/**
* Convenience method to instantiate the event.
*
* @param competency_framework $framework The framework.
* @return self
*/
public static final function create_from_framework(competency_framework $framework) {
if (!$framework->get_id()) {
throw new \coding_exception('The competency framework ID must be set.');
}
$event = static::create(array(
'contextid' => $framework->get_contextid(),
'objectid' => $framework->get_id()
));
return $event;
}

/**
* Returns description of what happened.
*
* @return string
*/
public function get_description() {
return "The user with id '$this->userid' updated the competency framework with id '$this->objectid'.";
}

/**
* Return localised event name.
*
* @return string
*/
public static function get_name() {
return get_string('eventcompetencyframeworkupdated', 'tool_lp');
}

/**
* Get URL related to the action
*
* @return \moodle_url
*/
public function get_url() {
return new \moodle_url('/admin/tool/lp/editcompetencyframework.php',
array('id' => $this->objectid, 'pagecontextid' => $this->contextid));
}

/**
* Init method.
*
* @return void
*/
protected function init() {
$this->data['crud'] = 'u';
$this->data['edulevel'] = self::LEVEL_OTHER;
$this->data['objecttable'] = competency_framework::TABLE;
}

/**
* Get_objectid_mapping method.
*
* @return string the name of the restore mapping the objectid links to
*/
public static function get_objectid_mapping() {
return base::NOT_MAPPED;
}

}
3 changes: 3 additions & 0 deletions admin/tool/lp/lang/en/tool_lp.php
Expand Up @@ -92,6 +92,9 @@
$string['editthisplan'] = 'Edit this learning plan';
$string['editthisuserevidence'] = 'Edit this evidence';
$string['edituserevidence'] = 'Edit evidence';
$string['eventcompetencyframeworkcreated'] = 'Competency framework created.';
$string['eventcompetencyframeworkdeleted'] = 'Competency framework deleted.';
$string['eventcompetencyframeworkupdated'] = 'Competency framework updated.';
$string['evidence'] = 'Evidence';
$string['evidence_competencyrule'] = 'The rule of the competency was met.';
$string['evidence_coursecompleted'] = 'The course \'{$a}\' was completed.';
Expand Down

0 comments on commit a3acafa

Please sign in to comment.