1 <?php 2 3 // This file is part of Moodle - http://moodle.org/ 4 // 5 // Moodle is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // Moodle is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 17 /** 18 * @package moodlecore 19 * @subpackage backup-imscc 20 * @copyright 2011 Darko Miletic (dmiletic@moodlerooms.com) 21 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 22 */ 23 24 defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); 25 26 class cc11_basiclti extends entities11 { 27 28 public function generate_node () { 29 30 cc2moodle::log_action('Creating BasicLTI mods'); 31 32 $response = ''; 33 34 if (!empty(cc2moodle::$instances['instances'][MOODLE_TYPE_BASICLTI])) { 35 foreach (cc2moodle::$instances['instances'][MOODLE_TYPE_BASICLTI] as $instance) { 36 $response .= $this->create_node_course_modules_mod_basiclti($instance); 37 } 38 } 39 40 return $response; 41 } 42 43 private function create_node_course_modules_mod_basiclti ($instance) { 44 45 $sheet_mod_basiclti = cc112moodle::loadsheet(SHEET_COURSE_SECTIONS_SECTION_MODS_MOD_BASICLTI); 46 47 $topic_data = $this->get_basiclti_data($instance); 48 49 $result = ''; 50 if (!empty($topic_data)) { 51 52 $find_tags = array('[#mod_instance#]' , 53 '[#mod_basiclti_name#]' , 54 '[#mod_basiclti_intro#]' , 55 '[#mod_basiclti_timec#]' , 56 '[#mod_basiclti_timem#]' , 57 '[#mod_basiclti_toolurl#]', 58 '[#mod_basiclti_orgid#]' , 59 '[#mod_basiclti_orgurl#]' , 60 '[#mod_basiclti_orgdesc#]' 61 ); 62 63 $replace_values = array($instance['instance'], 64 $topic_data['title'], 65 $topic_data['description'], 66 time(),time(), 67 $topic_data['launchurl'], 68 $topic_data['orgid'], 69 $topic_data['orgurl'], 70 $topic_data['orgdesc'] 71 ); 72 73 $result = str_replace($find_tags, $replace_values, $sheet_mod_basiclti); 74 75 } 76 77 return $result; 78 } 79 80 protected function getValue($node, $default = '') { 81 $result = $default; 82 if (is_object($node) && ($node->length > 0) && !empty($node->item(0)->nodeValue)) { 83 $result = htmlspecialchars(trim($node->item(0)->nodeValue), ENT_COMPAT, 'UTF-8', false); 84 } 85 return $result; 86 } 87 88 public function get_basiclti_data($instance) { 89 90 $topic_data = array(); 91 92 $basiclti_file = $this->get_external_xml($instance['resource_indentifier']); 93 94 if (!empty($basiclti_file)) { 95 $basiclti_file_path = cc2moodle::$path_to_manifest_folder . DIRECTORY_SEPARATOR . $basiclti_file; 96 $basiclti_file_dir = dirname($basiclti_file_path); 97 $basiclti = $this->load_xml_resource($basiclti_file_path); 98 if (!empty($basiclti)) { 99 $xpath = cc2moodle::newx_path($basiclti, cc112moodle::$basicltins); 100 $topic_title = $this->getValue($xpath->query('/xmlns:cartridge_basiclti_link/blti:title'),'Untitled'); 101 $blti_description = $this->getValue($xpath->query('/xmlns:cartridge_basiclti_link/blti:description')); 102 $launch_url = $this->getValue($xpath->query('/xmlns:cartridge_basiclti_link/blti:launch_url')); 103 $tool_raw = $this->getValue($xpath->query('/xmlns:cartridge_basiclti_link/blti:vendor/lticp:code'),null); 104 $tool_url = $this->getValue($xpath->query('/xmlns:cartridge_basiclti_link/blti:vendor/lticp:url'),null); 105 $tool_desc = $this->getValue($xpath->query('/xmlns:cartridge_basiclti_link/blti:vendor/lticp:description'),null); 106 $topic_data['title' ] = $topic_title; 107 $topic_data['description'] = $blti_description; 108 $topic_data['launchurl' ] = $launch_url; 109 $topic_data['orgid' ] = $tool_raw; 110 $topic_data['orgurl' ] = $tool_url; 111 $topic_data['orgdesc' ] = $tool_desc; 112 } 113 } 114 115 return $topic_data; 116 } 117 118 } 119
title
Description
Body
title
Description
Body
title
Description
Body
title
Body