From 91ab1f6ab23b6d598c9dba34896a9629974bde60 Mon Sep 17 00:00:00 2001 From: Milton Reder Date: Mon, 21 Oct 2024 15:45:49 -0400 Subject: [PATCH] search results viewed --- .../events/core/search_results_viewed.php | 75 +++++++++++++++++++ src/transformer/get_event_function_map.php | 1 + .../user_viewed_search_results/data.json | 1 + .../user_viewed_search_results/event.json | 10 +++ .../statements.json | 53 +++++++++++++ .../user_viewed_search_results_test.php | 70 +++++++++++++++++ 6 files changed, 210 insertions(+) create mode 100644 src/transformer/events/core/search_results_viewed.php create mode 100644 tests/core/search_results_viewed/user_viewed_search_results/data.json create mode 100644 tests/core/search_results_viewed/user_viewed_search_results/event.json create mode 100644 tests/core/search_results_viewed/user_viewed_search_results/statements.json create mode 100644 tests/core/search_results_viewed/user_viewed_search_results/user_viewed_search_results_test.php diff --git a/src/transformer/events/core/search_results_viewed.php b/src/transformer/events/core/search_results_viewed.php new file mode 100644 index 000000000..87569c45c --- /dev/null +++ b/src/transformer/events/core/search_results_viewed.php @@ -0,0 +1,75 @@ +. + +/** + * Transformer fn for search results viewed event. + * + * @package logstore_xapi + * @copyright Milt Reder + * + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\events\core; + +use src\transformer\utils as utils; + +/** + * Transformer fn for search results viewed event. + * + * @param array $config The transformer config settings. + * @param \stdClass $event The event to be transformed. + * @return array + */ + +function search_results_viewed(array $config, \stdClass $event) { + $repo = $config['repo']; + $user = $repo->read_record_by_id('user', $event->userid); + $lang = $config['source_lang']; + $info = unserialize($event->other); + + return [[ + 'actor' => utils\get_user($config, $user), + 'verb' => [ + 'id' => 'https://w3id.org/xapi/acrossx/verbs/searched', + 'display' => [ + $lang => 'Searched' + ], + ], + 'object' => [ + 'id' => $config['app_url'] . '/search/index.php', + 'objectType' => 'Activity', + 'definition' => [ + 'type' => 'https://w3id.org/xapi/acrossx/activities/webpage', + 'name' => [ + $lang => 'Global Search' + ], + ], + ], + 'result' => [ + 'response' => $info['q'], + ], + 'context' => [ + 'extensions' => utils\extensions\base($config, $event, null), + 'contextActivities' => [ + 'category' => [ + utils\get_activity\site($config), + ], + ], + ], + ]]; + +} diff --git a/src/transformer/get_event_function_map.php b/src/transformer/get_event_function_map.php index 6ef9b2660..274e8ac2f 100644 --- a/src/transformer/get_event_function_map.php +++ b/src/transformer/get_event_function_map.php @@ -54,6 +54,7 @@ function get_event_function_map() { '\core\event\user_loggedout' => 'core\user_loggedout', '\core\event\course_module_created' => 'core\course_module_created', '\core\event\course_module_completion_updated' => 'core\course_module_completion_updated', + '\core\event\search_results_viewed' => 'core\search_results_viewed', '\mod_assign\event\assessable_submitted' => 'mod_assign\assignment_submitted', '\mod_assign\event\submission_graded' => 'mod_assign\assignment_graded', '\mod_bigbluebuttonbn\event\activity_viewed' => 'mod_bigbluebuttonbn\activity_viewed', diff --git a/tests/core/search_results_viewed/user_viewed_search_results/data.json b/tests/core/search_results_viewed/user_viewed_search_results/data.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tests/core/search_results_viewed/user_viewed_search_results/data.json @@ -0,0 +1 @@ +{} diff --git a/tests/core/search_results_viewed/user_viewed_search_results/event.json b/tests/core/search_results_viewed/user_viewed_search_results/event.json new file mode 100644 index 000000000..7c5cf6e1c --- /dev/null +++ b/tests/core/search_results_viewed/user_viewed_search_results/event.json @@ -0,0 +1,10 @@ +{ + "courseid": null, + "eventname": "\\core\\event\\search_results_viewed", + "id": 1, + "objectid": null, + "objecttable": null, + "timecreated": 1433946701, + "userid": 1, + "other": "a:7:{s:1:\"q\";s:5:\"query\";s:4:\"page\";i:0;s:5:\"title\";s:0:\"\";s:7:\"areaids\";a:0:{}s:9:\"courseids\";a:0:{}s:9:\"timestart\";i:0;s:7:\"timeend\";i:0;}" +} diff --git a/tests/core/search_results_viewed/user_viewed_search_results/statements.json b/tests/core/search_results_viewed/user_viewed_search_results/statements.json new file mode 100644 index 000000000..12158fb26 --- /dev/null +++ b/tests/core/search_results_viewed/user_viewed_search_results/statements.json @@ -0,0 +1,53 @@ +[ + { + "actor": { + "account": { + "homePage": "http://www.example.org", + "name": "1" + }, + "name": "test_fullname" + }, + "verb": { + "id": "https://w3id.org/xapi/acrossx/verbs/searched", + "display": { + "en": "Searched" + } + }, + "object": { + "id": "http://www.example.org/search/index.php", + "objectType": "Activity", + "definition": { + "type": "https://w3id.org/xapi/acrossx/activities/webpage", + "name": { + "en": "Global Search" + } + } + }, + "result": { + "response": "query" + }, + "context": { + "contextActivities": { + "category": [ + { + "id": "http://www.example.org", + "definition": { + "type": "http://id.tincanapi.com/activitytype/lms", + "name": { + "en": "test_name" + } + } + } + ] + }, + "extensions": { + "http://lrs.learninglocker.net/define/extensions/info": { + "event_function": "\\src\\transformer\\events\\core\\search_results_viewed", + "event_name": "\\core\\event\\search_results_viewed", + "http://moodle.org": "1.0.0", + "https://github.com/xAPI-vle/moodle-logstore_xapi": "0.0.0-development" + } + } + } + } +] diff --git a/tests/core/search_results_viewed/user_viewed_search_results/user_viewed_search_results_test.php b/tests/core/search_results_viewed/user_viewed_search_results/user_viewed_search_results_test.php new file mode 100644 index 000000000..065a16272 --- /dev/null +++ b/tests/core/search_results_viewed/user_viewed_search_results/user_viewed_search_results_test.php @@ -0,0 +1,70 @@ +. + +namespace logstore_xapi\core\search_results_viewed\user_viewed_search_results; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php'); + +/** + * Unit test for search_results_viewed event + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class user_viewed_search_results_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() { + + } +}