MDL-39962 - Events: Replace lefacy event lti_unknown_service_api call.
authorAdrian Greeve <adrian@moodle.com>
Mon, 12 Aug 2013 03:38:39 +0000 (11:38 +0800)
committerAdrian Greeve <adrian@moodle.com>
Tue, 24 Sep 2013 02:08:28 +0000 (10:08 +0800)
mod/lti/classes/event/unknown_service_api_called.php [new file with mode: 0644]
mod/lti/lang/en/lti.php
mod/lti/service.php

diff --git a/mod/lti/classes/event/unknown_service_api_called.php b/mod/lti/classes/event/unknown_service_api_called.php
new file mode 100644 (file)
index 0000000..dad8f78
--- /dev/null
@@ -0,0 +1,95 @@
+<?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/>.
+
+/**
+ * This file contains an event for an unknown service API call.
+ *
+ * @package    mod_lti
+ * @copyright  2013 Adrian Greeve <adrian@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+namespace mod_lti\event;
+defined('MOODLE_INTERNAL') || die();
+
+/**
+ * Event for when something happens with an unknown lti service API call.
+ *
+ * @package    mod_lti
+ * @copyright  2013 Adrian Greeve <adrian@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class unknown_service_api_called extends \core\event\base {
+
+    /** Old data to be used for the legacy event. */
+    protected $legacydata;
+
+    /**
+     * Set method for legacy data.
+     *
+     * @param stdClass $data legacy event data.
+     */
+    public function set_legacy_data($data) {
+        $this->legacydata = $data;
+    }
+
+    /**
+     * Init method.
+     */
+    protected function init() {
+        $this->data['objecttable'] = 'lti';
+        $this->data['crud'] = 'r';
+        $this->data['level'] = self::LEVEL_OTHER;
+        $this->data['context'] = \context_system::instance();
+    }
+
+    /**
+     * Returns localised description of what happened.
+     *
+     * @return string
+     */
+    public function get_description() {
+        return 'An unknown call to a service api was made.';
+    }
+
+    /**
+     * Returns localised general event name.
+     *
+     * @return string
+     */
+    public static function get_name() {
+        return get_string('ltiunknownserviceapicall', 'mod_lti');
+    }
+
+    /**
+     * Does this event replace a legacy event?
+     *
+     * @return null|string legacy event name
+     */
+    public static function get_legacy_eventname() {
+        return 'lti_unknown_service_api_call';
+    }
+
+    /**
+     * Legacy event data if get_legacy_eventname() is not empty.
+     *
+     * @return mixed
+     */
+    protected function get_legacy_eventdata() {
+        return $this->legacydata;
+    }
+
+}
index 606e2d6..7f5f8a3 100644 (file)
@@ -237,6 +237,7 @@ $string['lti_launch_error_unsigned_help'] = '   <p>
     </p>';
 $string['lti_tool_request_added'] = 'Tool configuration request successfully submitted. You may need to contact an administrator to complete the tool configuration.';
 $string['lti_tool_request_existing'] = 'A tool configuration for the tool domain has already been submitted.';
+$string['ltiunknownserviceapicall'] = 'LTI unknown service API call.';
 $string['main_admin'] = 'General help';
 $string['main_admin_help'] = 'External tools allow Moodle users to seamlessly interact with learning resources hosted remotely. Through a special
 launch protocol, the remote tool will have access to some general information about the launching user. For example,
index b96f566..be8e2d6 100644 (file)
@@ -145,19 +145,23 @@ switch ($messagetype) {
         //Fire an event if we get a web service request which we don't support directly.
         //This will allow others to extend the LTI services, which I expect to be a common
         //use case, at least until the spec matures.
-        $data = new stdClass();
-        $data->body = $rawbody;
-        $data->xml = $xml;
-        $data->messagetype = $messagetype;
-        $data->consumerkey = $consumerkey;
-        $data->sharedsecret = $sharedsecret;
+        // Please note that you will have to change $eventdata['other']['body'] into an xml
+        // element in an event observer as done above.
+        $eventdata = array();
+        $eventdata['other'] = array();
+        $eventdata['other']['body'] = $rawbody;
+        $eventdata['other']['messagetype'] = $messagetype;
+        $eventdata['other']['consumerkey'] = $consumerkey;
+        $eventdata['other']['sharedsecret'] = $sharedsecret;
 
         //If an event handler handles the web service, it should set this global to true
         //So this code knows whether to send an "operation not supported" or not.
         global $lti_web_service_handled;
         $lti_web_service_handled = false;
 
-        events_trigger('lti_unknown_service_api_call', $data);
+        $event = \mod_lti\event\unknown_service_api_called::create($eventdata);
+        $event->set_legacy_data($eventdata);
+        $event->trigger();
 
         if (!$lti_web_service_handled) {
             $responsexml = lti_get_response_xml(