Skip to content

Commit

Permalink
messages
Browse files Browse the repository at this point in the history
  • Loading branch information
invaliduser committed Oct 18, 2024
1 parent e8e5334 commit 6cc538d
Show file tree
Hide file tree
Showing 11 changed files with 497 additions and 2 deletions.
79 changes: 79 additions & 0 deletions src/transformer/events/core/message_sent.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<?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/>.

/**
* Transformer fn for message sent event
*
* @package logstore_xapi
* @copyright Daniel Bell <[email protected]>
*
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace src\transformer\events\core;

use src\transformer\utils as utils;
use src\transformer\utils\get_activity as activity;

/**
* Transformer fn for message sent event
*
* @param array $config The transformer config settings.
* @param \stdClass $event The event to be transformed.
* @return array
*/

function message_sent(array $config, \stdClass $event) {
global $CFG;
$repo = $config['repo'];
if (isset($event->objecttable) && isset($event->objectid)) {
$event_object = $repo->read_record_by_id($event->objecttable, $event->objectid);
} else {
$event_object = array();
}

$user=$repo->read_record_by_id('user',$event->userid);

$course = (isset($event->courseid) && $event->courseid != 0) ? $repo->read_record_by_id('course', $event->courseid) : null;

$lang = utils\get_course_lang(($course ? $course : $repo->read_record_by_id('course',1)));

$statement = [
'actor' => utils\get_user($config,$user),
'verb' => ['id' => 'http://activitystrea.ms/send',
'display' => ['en' => 'Sent']],
'object' => [
'id' => $config['app_url'].'/course/view.php?id='.$event->objectid,
'definition' => [
'type' => "http://id.tincanapi.com/activitytype/chat-message",
'name' => [$lang => $event_object->subject ?? 'no subject'],
'description' => [$lang => $event_object->smallmessage],
],
],
'context' => [
'language' => $lang,
'contextActivities' => [
'category' => [activity\site($config)],
],
'extensions' => utils\extensions\base($config, $event, $course)
]];

if ($course){
$statement = utils\add_parent($config,$statement,$course);
}

return [$statement];
}
78 changes: 78 additions & 0 deletions src/transformer/events/core/message_viewed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?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/>.

/**
* Transformer fn for message viewed event
*
* @package logstore_xapi
* @copyright Daniel Bell <[email protected]>
*
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace src\transformer\events\core;

use src\transformer\utils as utils;
use src\transformer\utils\get_activity as activity;

/**
* Transformer fn for message viewed event
*
* @param array $config The transformer config settings.
* @param \stdClass $event The event to be transformed.
* @return array
*/

function message_viewed(array $config, \stdClass $event) {
global $CFG;
$repo = $config['repo'];
if (isset($event->objecttable) && isset($event->objectid)) {
$event_object = $repo->read_record_by_id($event->objecttable, $event->objectid);
} else {
$event_object = array();
}

$user=$repo->read_record_by_id('user',$event->userid);
$course = (isset($event->courseid) && $event->courseid != 0) ? $repo->read_record_by_id('course', $event->courseid) : null;
$lang = utils\get_course_lang(($course ? $course : $repo->read_record_by_id("course",1)));

$statement = [
'actor' => utils\get_user($config,$user),
'verb' => ['id' => 'http://id.tincanapi.com/verb/viewed',
'display' => ['en' => 'Viewed']
],
'object' => [
'id' => $config['app_url'].'/course/view.php?id='.$event->objectid,
'definition' => [
'type' => "http://id.tincanapi.com/activitytype/chat-message",
'name' => [$lang => $event_object->subject ?? 'no subject'],
'description' => [$lang => $event_object->smallmessage],
],
],
'context' => [
'language' => $lang,
'contextActivities' => [
'category' => [activity\site($config)],
],
'extensions' => utils\extensions\base($config, $event, $course)
]];

if ($course){
$statement = utils\add_parent($config,$statement,$course);
}

return [$statement];
}
6 changes: 4 additions & 2 deletions src/transformer/get_event_function_map.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,10 @@
function get_event_function_map() {
$availableevents = [
'\core\event\course_category_created' => 'core\course_category_created',
'\core\event\badge_awarded' => 'core\badge_awarded', //'debug\debug_event',
'\core\event\badge_revoked' => 'core\badge_revoked', //'debug\debug_event'
'\core\event\badge_awarded' => 'core\badge_awarded',
'\core\event\badge_revoked' => 'core\badge_revoked',
'\core\event\message_sent' => 'core\message_sent',
'\core\event\message_viewed' => 'core\message_viewed',
'\core\event\course_created' => 'core\course_created',
'\core\event\course_updated' => 'core\course_updated',
'\core\event\calendar_event_created' => 'core\calendar_event_created',
Expand Down
25 changes: 25 additions & 0 deletions tests/core/message_sent/user_sent_message/data.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"course" : [
{
"fullname" : "test_course_name",
"id" : 1,
"lang" : "en",
"summary" : "test_course_summary"
}
],
"messages" : [
{
"id" : 1,
"smallmessage" : "hi there!(messagetext)",
"subject" : "hi there(subject)"
}
],
"user" : [
{
"email" : "[email protected]",
"firstname" : "message_sender_firstname",
"id" : 1,
"lastname" : "message_sender_lastname"
}
]
}
9 changes: 9 additions & 0 deletions tests/core/message_sent/user_sent_message/event.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"courseid" : 1,
"eventname" : "\\core\\event\\message_sent",
"id" : 1,
"objectid" : 1,
"objecttable" : "messages",
"timecreated" : 1433946701,
"userid" : 1
}
64 changes: 64 additions & 0 deletions tests/core/message_sent/user_sent_message/statements.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
[
{
"actor" : {
"account" : {
"homePage" : "http://www.example.org",
"name" : "1"
},
"name" : "message_sender_firstname message_sender_lastname"
},
"verb" : {
"display" : {
"en" : "Sent"
},
"id" : "http://activitystrea.ms/send"
},
"object" : {
"definition" : {
"description" : {
"en" : "hi there!(messagetext)"
},
"name" : {
"en" : "hi there(subject)"
},
"type" : "http://id.tincanapi.com/activitytype/chat-message"
},
"id" : "http://www.example.org/course/view.php?id=1"
},
"context" : {
"contextActivities" : {
"category" : [
{
"definition" : {
"name" : {
"en" : "test_course_name"
},
"type" : "http://id.tincanapi.com/activitytype/lms"
},
"id" : "http://www.example.org"
}
],
"parent" : [
{
"definition" : {
"name" : {
"en" : "test_course_name"
},
"type" : "https://w3id.org/xapi/cmi5/activitytype/course"
},
"id" : "http://www.example.org/course/view.php?id=1"
}
]
},
"extensions" : {
"http://lrs.learninglocker.net/define/extensions/info" : {
"event_function" : "\\src\\transformer\\events\\core\\message_sent",
"event_name" : "\\core\\event\\message_sent",
"http://moodle.org": "1.0.0",
"https://github.com/xAPI-vle/moodle-logstore_xapi": "0.0.0-development"
}
},
"language" : "en"
}
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<?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 logstore_xapi\core\message_sent\user_sent_message;

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

global $CFG;

require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php');

/**
* Unit test for message_sent event
*
* @package logstore_xapi
* @copyright Daniel Bell <[email protected]>
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class user_sent_message_test extends \logstore_xapi\xapi_test_case {

/**
* Retrieve the directory of the unit test.
*
* @return string
*/
protected function get_test_dir() {
return __DIR__;
}

/**
* Retrieve the plugin type being tested.
*
* @return string
*/
protected function get_plugin_type() {
return "core";
}

/**
* Retrieve the plugin name being tested.
*
* @return string
*/
protected function get_plugin_name() {
return "core";
}

/**
* Appease auto-detecting of test cases. xapi_test_case has default test cases.
*
* @covers ::attempt_submitted
* @return void
*/
public function test_init() {

}
}
25 changes: 25 additions & 0 deletions tests/core/message_viewed/user_viewed_message/data.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"course" : [
{
"fullname" : "test_course_name",
"id" : 1,
"lang" : "en",
"summary" : "test_course_summary"
}
],
"messages" : [
{
"id" : 1,
"smallmessage" : "hi there!(messagetext)",
"subject" : "hi there(subject)"
}
],
"user" : [
{
"email" : "[email protected]",
"firstname" : "message_viewer_firstname",
"id" : 1,
"lastname" : "message_viewer_lastname"
}
]
}
9 changes: 9 additions & 0 deletions tests/core/message_viewed/user_viewed_message/event.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"courseid" : 1,
"eventname" : "\\core\\event\\message_viewed",
"id" : 1,
"objectid" : 1,
"objecttable" : "messages",
"timecreated" : 1433946701,
"userid" : 1
}
Loading

0 comments on commit 6cc538d

Please sign in to comment.