PageRenderTime 53ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/local/campusconnect/admin/mapping/export.php

https://bitbucket.org/synergylearning/campusconnect
PHP | 220 lines | 110 code | 32 blank | 78 comment | 20 complexity | 4a6821c0bcc8c84646de17ef8b88b47a MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, LGPL-3.0, GPL-3.0, LGPL-2.1, Apache-2.0, BSD-3-Clause, AGPL-3.0
  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. * Settings page for campus connect
  18. *
  19. * @package admin_campusconnect
  20. * @copyright 2012 Synergy Learning
  21. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  22. */
  23. defined('MOODLE_INTERNAL') || die();
  24. global $CFG;
  25. require_once("$CFG->libdir/formslib.php");
  26. $mform = new campusconnect_export_form();
  27. $redir = new moodle_url('/local/campusconnect/admin/datamapping.php', array('type' => 'export'));
  28. $errors = array();
  29. $ecslist = campusconnect_ecssettings::list_ecs();
  30. if ($mform->is_cancelled()) {
  31. redirect($redir);
  32. } else if ($post = $mform->get_data()) {
  33. $courselinkdata = array();
  34. $coursedata = array();
  35. foreach ($ecslist as $ecsid => $ecsname) {
  36. $courselinkdata[$ecsid] = array();
  37. $coursedata[$ecsid] = array();
  38. foreach (campusconnect_metadata::list_remote_fields(true) as $fieldname) {
  39. $fullfieldname = $ecsid.'_'.$fieldname.'_courselink';
  40. if (isset($post->{$fullfieldname})) {
  41. $courselinkdata[$ecsid][$fieldname] = $post->{$fullfieldname};
  42. }
  43. }
  44. /*
  45. // No exporting of courses, just course links.
  46. foreach (campusconnect_metadata::list_remote_fields(false) as $fieldname) {
  47. $fullfieldname = $ecsid.'_'.$fieldname.'_course';
  48. if (isset($post->{$fullfieldname})) {
  49. $coursedata[$ecsid][$fieldname] = $post->{$fullfieldname};
  50. }
  51. }
  52. */
  53. }
  54. foreach ($ecslist as $ecsid => $ecsname) {
  55. if (isset($coursedata[$ecsid]) || isset($courselinkdata[$ecsid])) {
  56. $ecssettings = new campusconnect_ecssettings($ecsid);
  57. /*
  58. // No exporting of courses, just course links.
  59. if (isset($coursedata[$ecsid])) {
  60. $metadata = new campusconnect_metadata($ecssettings, false);
  61. if (!$metadata->set_export_mappings($coursedata[$ecsid])) {
  62. list ($errmsg, $errfield) = $metadata->get_last_error();
  63. $errors[$ecsid.'_'.$errfield.'_course'] = $errmsg;
  64. }
  65. }
  66. */
  67. if (isset($courselinkdata[$ecsid])) {
  68. $metadata = new campusconnect_metadata($ecssettings, true);
  69. if (!$metadata->set_export_mappings($courselinkdata[$ecsid])) {
  70. list ($errmsg, $errfield) = $metadata->get_last_error();
  71. $errors[$ecsid.'_'.$errfield.'_courselink'] = $errmsg;
  72. }
  73. }
  74. }
  75. }
  76. if (empty($errors)) {
  77. redirect($redir);
  78. }
  79. }
  80. echo $OUTPUT->header();
  81. echo $OUTPUT->heading(get_string('pluginname', 'local_campusconnect'));
  82. print '<div class="controls"><a href="?type=import">'.get_string('import', 'local_campusconnect').'</a> |
  83. <strong><a href="?type=export">'.get_string('export', 'local_campusconnect').'</a></strong></div>';
  84. $remotefields = campusconnect_metadata::list_local_fields();
  85. $helpcontent = '';
  86. foreach ($remotefields as $remotefield) {
  87. $helpcontent .= '{'.$remotefield.'}<br />';
  88. }
  89. print "<div style='float: left; width: 45%; border: 1px solid #000; background: #ddd; margin: 10px 5px; padding: 5px;'><strong>"
  90. .get_string('courseavailablefields', 'local_campusconnect').':</strong><br />'.$helpcontent."</div>";
  91. if (!empty($errors)) {
  92. $mform->set_errors($errors);
  93. }
  94. echo html_writer::start_tag('span', array('class' => 'campusconnect_metadata'));
  95. $mform->display();
  96. echo html_writer::end_tag('span');
  97. class campusconnect_export_form extends moodleform {
  98. public function definition() {
  99. $ecslist = campusconnect_ecssettings::list_ecs();
  100. foreach ($ecslist as $ecsid => $ecsname) {
  101. $mform = $this->_form;
  102. $mform->addElement('hidden', 'type', 'export');
  103. $mform->setType('type', PARAM_ALPHA);
  104. $mform->addElement('header');
  105. $mform->addElement('html', "<h2>$ecsname</h2>");
  106. $strunmapped = get_string('unmapped', 'local_campusconnect');
  107. $strnomappings = get_string('nomappings', 'local_campusconnect');
  108. /*
  109. // No exporting of courses, just course links.
  110. $mform->addElement('html', "<h3>".get_string('course', 'local_campusconnect')."</h3>");
  111. $ecssettings = new campusconnect_ecssettings($ecsid);
  112. $metadata = new campusconnect_metadata($ecssettings, false);
  113. $remotefields = $metadata->list_remote_fields(false);
  114. $currentmappings = $metadata->get_export_mappings();
  115. foreach ($remotefields as $remotemap) {
  116. $elname = $ecsid.'_'.$remotemap.'_course';
  117. if ($remotemap == 'summary') {
  118. $mform->addElement('editor', $elname, $remotemap);
  119. $mform->setType($elname, PARAM_RAW);
  120. $mform->setDefault($elname, array('text'=>$currentmappings[$remotemap], 'format'=>FORMAT_HTML));
  121. } else if ($metadata->is_remote_text_field($remotemap, false)) {
  122. $mform->addElement('text', $elname, $remotemap);
  123. if (isset($currentmappings[$remotemap])) {
  124. $mform->setDefault($elname, $currentmappings[$remotemap]);
  125. }
  126. $mform->setType($elname, PARAM_RAW);
  127. } else {
  128. $maparray = $metadata->list_local_to_remote_fields($remotemap, false);
  129. if ($maparray) {
  130. $maps = array('' => $strunmapped);
  131. foreach ($maparray as $i) {
  132. $maps[$i] = $i;
  133. }
  134. } else {
  135. $maps = array('' => $strnomappings);
  136. }
  137. $mform->addElement('select', $elname, $remotemap, $maps);
  138. if (isset($currentmappings[$remotemap])) {
  139. $mform->setDefault($elname, $currentmappings[$remotemap]);
  140. }
  141. }
  142. }
  143. */
  144. $mform->addElement('html', "<h3>".get_string('externalcourse', 'local_campusconnect')."</h3>");
  145. $ecssettings = new campusconnect_ecssettings($ecsid);
  146. $metadata = new campusconnect_metadata($ecssettings, true);
  147. $remotefields = $metadata->list_remote_fields(true);
  148. $currentmappings = $metadata->get_export_mappings();
  149. foreach ($remotefields as $remotemap) {
  150. $elname = $ecsid.'_'.$remotemap.'_courselink';
  151. if ($remotemap == 'summary') {
  152. $mform->addElement('editor', $elname, $remotemap);
  153. $mform->setType($elname, PARAM_RAW);
  154. $mform->setDefault($elname, array('text'=>$currentmappings[$remotemap], 'format'=>FORMAT_HTML));
  155. } else if ($metadata->is_remote_text_field($remotemap, true)) {
  156. $mform->addElement('text', $elname, $remotemap);
  157. if (isset($currentmappings[$remotemap])) {
  158. $mform->setDefault($elname, $currentmappings[$remotemap]);
  159. }
  160. $mform->setType($elname, PARAM_RAW);
  161. } else {
  162. $maparray = $metadata->list_local_to_remote_fields($remotemap, true);
  163. if ($maparray) {
  164. $maps = array('' => $strunmapped);
  165. foreach ($maparray as $i) {
  166. $maps[$i] = $i;
  167. }
  168. } else {
  169. $maps = array('' => $strnomappings);
  170. }
  171. $mform->addElement('select', $elname, $remotemap, $maps);
  172. if (isset($currentmappings[$remotemap])) {
  173. $mform->setDefault($elname, $currentmappings[$remotemap]);
  174. }
  175. }
  176. }
  177. }
  178. $this->add_action_buttons();
  179. }
  180. public function set_errors($errors) {
  181. $form = $this->_form;
  182. foreach ($errors as $element => $message) {
  183. $form->setElementError($element, $message);
  184. }
  185. }
  186. }