Merge branch 'MDL-42392-26' of git://github.com/andrewnicols/moodle into MOODLE_26_STABLE
[moodle.git] / backup / cc / entity11.basiclti.class.php
blobc44c07cd73d9fd76d7eea4ac94b3101074dcb868
1 <?php
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.
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
24 defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.');
26 class cc11_basiclti extends entities11 {
28 public function generate_node () {
30 cc2moodle::log_action('Creating BasicLTI mods');
32 $response = '';
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);
40 return $response;
43 private function create_node_course_modules_mod_basiclti ($instance) {
45 $sheet_mod_basiclti = cc112moodle::loadsheet(SHEET_COURSE_SECTIONS_SECTION_MODS_MOD_BASICLTI);
47 $topic_data = $this->get_basiclti_data($instance);
49 $result = '';
50 if (!empty($topic_data)) {
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#]'
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']
73 $result = str_replace($find_tags, $replace_values, $sheet_mod_basiclti);
77 return $result;
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);
85 return $result;
88 public function get_basiclti_data($instance) {
90 $topic_data = '';
92 $basiclti_file = $this->get_external_xml($instance['resource_indentifier']);
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;
115 return $topic_data;