PageRenderTime 46ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/local/campusconnect/admin/mapping/import.php

https://bitbucket.org/synergylearning/campusconnect
PHP | 214 lines | 158 code | 35 blank | 21 comment | 34 complexity | a4aac6a7bc3415e2ead65eaba134a960 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_import_form();
  27. $redir = new moodle_url('/local/campusconnect/admin/datamapping.php', array('type' => 'import'));
  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. $coursedata = array();
  34. $courselinkdata = array();
  35. foreach ($ecslist as $ecsid => $ecsname) {
  36. $courselinkdata[$ecsid] = array();
  37. $coursedata[$ecsid] = array();
  38. foreach (campusconnect_metadata::list_local_fields() as $fieldname) {
  39. $fullfieldname = $ecsid.'_'.$fieldname.'_courselink';
  40. if (isset($post->{$fullfieldname})) {
  41. if ($fieldname == 'summary') {
  42. $courselinkdata[$ecsid][$fieldname] = $post->{$fullfieldname}['text'];
  43. } else {
  44. $courselinkdata[$ecsid][$fieldname] = $post->{$fullfieldname};
  45. }
  46. }
  47. }
  48. foreach (campusconnect_metadata::list_local_fields() as $fieldname) {
  49. $fullfieldname = $ecsid.'_'.$fieldname.'_course';
  50. if (isset($post->{$fullfieldname})) {
  51. if ($fieldname == 'summary') {
  52. $coursedata[$ecsid][$fieldname] = $post->{$fullfieldname}['text'];
  53. } else {
  54. $coursedata[$ecsid][$fieldname] = $post->{$fullfieldname};
  55. }
  56. }
  57. }
  58. }
  59. foreach ($ecslist as $ecsid => $ecsname) {
  60. if (isset($coursedata[$ecsid]) || isset($courselinkdata[$ecsid])) {
  61. $ecssettings = new campusconnect_ecssettings($ecsid);
  62. if (isset($coursedata[$ecsid])) {
  63. $metadata = new campusconnect_metadata($ecssettings, false);
  64. if (!$metadata->set_import_mappings($coursedata[$ecsid])) {
  65. list ($errmsg, $errfield) = $metadata->get_last_error();
  66. $errors[$ecsid.'_'.$errfield.'_course'] = $errmsg;
  67. }
  68. }
  69. if (isset($courselinkdata[$ecsid])) {
  70. $metadata = new campusconnect_metadata($ecssettings, true);
  71. if (!$metadata->set_import_mappings($courselinkdata[$ecsid])) {
  72. list ($errmsg, $errfield) = $metadata->get_last_error();
  73. $errors[$ecsid.'_'.$errfield.'_courselink'] = $errmsg;
  74. }
  75. }
  76. }
  77. }
  78. if (empty($errors)) {
  79. redirect($redir);
  80. }
  81. }
  82. echo $OUTPUT->header();
  83. echo $OUTPUT->heading(get_string('pluginname', 'local_campusconnect'));
  84. print '<div class="controls"><strong><a href="?type=import">'.get_string('import', 'local_campusconnect').'</a></strong> |
  85. <a href="?type=export">'.get_string('export', 'local_campusconnect').'</a></div>';
  86. $remotefields = campusconnect_metadata::list_remote_fields(false);
  87. $helpcontent = '';
  88. foreach ($remotefields as $remotefield) {
  89. $helpcontent .= '{'.$remotefield.'}<br />';
  90. }
  91. print "<div style='float: left; width: 45%; border: 1px solid #000; background: #ddd; margin: 10px 5px; padding: 5px;'><strong>"
  92. .get_string('courseavailablefields', 'local_campusconnect').':</strong><br />'.$helpcontent."</div>";
  93. $remotefields = campusconnect_metadata::list_remote_fields(true);
  94. $helpcontent = '';
  95. foreach ($remotefields as $remotefield) {
  96. $helpcontent .= '{'.$remotefield.'}<br />';
  97. }
  98. print "<div style='float: right; width: 45%; border: 1px solid #000; background: #ddd; margin: 10px 5px; padding: 5px'><strong>"
  99. .get_string('courseextavailablefields', 'local_campusconnect').':</strong><br />'.$helpcontent."</div>";
  100. if (!empty($errors)) {
  101. $mform->set_errors($errors);
  102. }
  103. $mform->display();
  104. class campusconnect_import_form extends moodleform {
  105. public function definition() {
  106. global $CFG;
  107. $ecslist = campusconnect_ecssettings::list_ecs();
  108. foreach ($ecslist as $ecsid => $ecsname) {
  109. $mform = $this->_form;
  110. $mform->addElement('header');
  111. $mform->addElement('html', "<h2>$ecsname</h2>");
  112. $mform->addElement('html', "<h3>".get_string('course')."</h3>");
  113. $ecssettings = new campusconnect_ecssettings($ecsid);
  114. $metadata = new campusconnect_metadata($ecssettings, false);
  115. $localfields = campusconnect_metadata::list_local_fields();
  116. $currentmappings = $metadata->get_import_mappings();
  117. $strunmapped = get_string('unmapped', 'local_campusconnect');
  118. $strnomappings = get_string('nomappings', 'local_campusconnect');
  119. foreach ($localfields as $localmap) {
  120. $elname = $ecsid.'_'.$localmap.'_course';
  121. if ($localmap == 'summary') {
  122. $mform->addElement('editor', $elname, $localmap);
  123. $mform->setType($elname, PARAM_RAW);
  124. $mform->setDefault($elname, array('text'=>$currentmappings[$localmap], 'format'=>FORMAT_HTML));
  125. } else if ($metadata->is_text_field($localmap)) {
  126. $mform->addElement('text', $elname, $localmap, $currentmappings[$localmap]);
  127. $mform->setDefault($elname, $currentmappings[$localmap]);
  128. $mform->setType($elname, PARAM_RAW);
  129. } else {
  130. $maparray = $metadata->list_remote_to_local_fields($localmap, false);
  131. if ($maparray) {
  132. $maps = array('' => $strunmapped);
  133. foreach ($maparray as $i) {
  134. $maps[$i] = $i;
  135. }
  136. } else {
  137. $maps = array('' => $strnomappings);
  138. }
  139. $mform->addElement('select', $elname, $localmap, $maps, $currentmappings[$localmap]);
  140. $mform->setDefault($elname, $currentmappings[$localmap]);
  141. }
  142. }
  143. $mform->addElement('html', "<h3>".get_string('externalcourse', 'local_campusconnect')."</h3>");
  144. $metadata = new campusconnect_metadata($ecssettings, true);
  145. $currentmappings = $metadata->get_import_mappings();
  146. foreach ($localfields as $localmap) {
  147. $elname = $ecsid.'_'.$localmap.'_courselink';
  148. if ($localmap == 'summary') {
  149. $mform->addElement('editor', $elname, $localmap);
  150. $mform->setType($elname, PARAM_RAW);
  151. $mform->setDefault($elname, array('text'=>$currentmappings[$localmap], 'format'=>FORMAT_HTML));
  152. } else if ($metadata->is_text_field($localmap)) {
  153. $mform->addElement('text', $elname, $localmap, $currentmappings[$localmap]);
  154. $mform->setDefault($elname, $currentmappings[$localmap]);
  155. $mform->setType($elname, PARAM_RAW);
  156. } else {
  157. $maparray = $metadata->list_remote_to_local_fields($localmap, true);
  158. if ($maparray) {
  159. $maps = array('' => $strunmapped);
  160. foreach ($maparray as $i) {
  161. $maps[$i] = $i;
  162. }
  163. } else {
  164. $maps = array('' => $strnomappings);
  165. }
  166. $mform->addElement('select', $elname, $localmap, $maps, $currentmappings[$localmap]);
  167. $mform->setDefault($elname, $currentmappings[$localmap]);
  168. }
  169. }
  170. }
  171. $this->add_action_buttons();
  172. }
  173. public function set_errors($errors) {
  174. $form = $this->_form;
  175. foreach ($errors as $element => $message) {
  176. $form->setElementError($element, $message);
  177. }
  178. }
  179. }