1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Statement actor (user or group) object for xAPI structure checking and usage. 19 * 20 * @package core_xapi 21 * @copyright 2020 Ferran Recio 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 namespace core_xapi\local\statement; 26 27 use core_xapi\xapi_exception; 28 use stdClass; 29 30 defined('MOODLE_INTERNAL') || die(); 31 32 /** 33 * Abstract xAPI actor class. 34 * 35 * This class extends from item_object instead of basic item 36 * because both actors (agent and group) could be used as 37 * statement actor or object. 38 * 39 * @copyright 2020 Ferran Recio 40 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 41 */ 42 abstract class item_actor extends item_object { 43 44 /** 45 * Function to create an actor from part of the xAPI statement. 46 * 47 * @param stdClass $data the original xAPI element 48 * @return item item_agent|item_grou|item_activity xAPI generated 49 */ 50 public static function create_from_data(stdClass $data): item { 51 if (!isset($data->objectType)) { 52 $data->objectType = 'Agent'; 53 } 54 switch ($data->objectType) { 55 case 'Agent': 56 return item_agent::create_from_data($data); 57 break; 58 case 'Group': 59 return item_group::create_from_data($data); 60 break; 61 default: 62 throw new xapi_exception("Unknown Actor type '{$data->objectType}'"); 63 } 64 } 65 66 /** 67 * Returns the moodle user represented by this item. 68 * 69 * @return stdClass user record 70 */ 71 abstract public function get_user(): stdClass; 72 73 /** 74 * Return all moodle users represented by this item. 75 * 76 * @return array user records 77 */ 78 abstract public function get_all_users(): array; 79 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body