PageRenderTime 135ms CodeModel.GetById 24ms RepoModel.GetById 11ms app.codeStats 0ms

/import.php

https://github.com/gtn/exacomp
PHP | 181 lines | 114 code | 29 blank | 38 comment | 40 complexity | a19ba185859ef5a5301359c6b5dc712d MD5 | raw file
  1. <?php
  2. /* * *************************************************************
  3. * Copyright notice
  4. *
  5. * (c) 2014 exabis internet solutions <info@exabis.at>
  6. * All rights reserved
  7. *
  8. * You can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation; either version 2 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * This module is based on the Collaborative Moodle Modules from
  14. * NCSA Education Division (http://www.ncsa.uiuc.edu)
  15. *
  16. * The GNU General Public License can be found at
  17. * http://www.gnu.org/copyleft/gpl.html.
  18. *
  19. * This script is distributed in the hope that it will be useful,
  20. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  21. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  22. * GNU General Public License for more details.
  23. *
  24. * This copyright notice MUST APPEAR in all copies of the script!
  25. * ************************************************************* */
  26. require_once dirname(__FILE__)."/inc.php";
  27. require_once dirname(__FILE__)."/lib/xmllib.php";
  28. $de = false;
  29. $lang = current_language();
  30. if(isset($lang) && substr( $lang, 0, 2) === 'de'){
  31. $de = true;
  32. }
  33. if($de)
  34. define('DEMO_XML_PATH', 'https://raw.githubusercontent.com/gtn/edustandards/master/demo/deutsch/exacomp_data.xml');
  35. else
  36. define('DEMO_XML_PATH', 'https://raw.githubusercontent.com/gtn/edustandards/master/demo/english/exacomp_data.xml');
  37. global $DB, $OUTPUT, $PAGE;
  38. $courseid = required_param('courseid', PARAM_INT);
  39. if (!$course = $DB->get_record('course', array('id' => $courseid))) {
  40. print_error('invalidcourse', 'block_simplehtml', $courseid);
  41. }
  42. require_login($course);
  43. $context = context_system::instance();
  44. $course_context = context_course::instance($courseid);
  45. /* PAGE IDENTIFIER - MUST BE CHANGED. Please use string identifier from lang file */
  46. $page_identifier = 'tab_admin_import';
  47. /* PAGE URL - MUST BE CHANGED */
  48. $PAGE->set_url('/blocks/exacomp/import.php', array('courseid' => $courseid));
  49. $PAGE->set_heading(get_string('pluginname', 'block_exacomp'));
  50. $PAGE->set_title(get_string($page_identifier, 'block_exacomp'));
  51. block_exacomp_init_js_css();
  52. $isAdmin = has_capability('block/exacomp:admin', $context);
  53. require_capability('block/exacomp:teacher', $course_context);
  54. $action = optional_param('action', "", PARAM_ALPHA);
  55. $importoption = optional_param('importoption', "", PARAM_ALPHA);
  56. $importtype = optional_param('importtype', '', PARAM_TEXT);
  57. $mform = new block_exacomp_generalxml_upload_form();
  58. $importSuccess = false;
  59. /*
  60. if($isAdmin && $importtype && $data = $mform->get_file_content('file')){
  61. if(strcmp($importtype, 'demo')!=0)
  62. print_r($data);
  63. //$importSuccess = block_exacomp_xml_do_import($data, (($importtype == 'normal') ? IMPORT_SOURCE_NORMAL : IMPORT_SOURCE_SPECIFIC));
  64. }*/
  65. if((strcmp($importtype,'custom') == 0) && $data = $mform->get_file_content('file')) {
  66. $importSuccess = block_exacomp_xml_do_import($data, IMPORT_SOURCE_SPECIFIC);
  67. } elseif($isAdmin && (strcmp($importtype, 'demo') != 0) && $data = $mform->get_file_content('file')) {
  68. $importSuccess = block_exacomp_xml_do_import($data, IMPORT_SOURCE_NORMAL);
  69. } elseif($isAdmin && $importtype && strcmp($importtype, 'demo')==0){
  70. //do demo import
  71. $xml = file_get_contents(DEMO_XML_PATH);
  72. if($xml) {
  73. if(block_exacomp_xml_do_import($xml,1,1)) {
  74. $importSuccess = true;
  75. }
  76. }
  77. }
  78. // build breadcrumbs navigation
  79. $coursenode = $PAGE->navigation->find($courseid, navigation_node::TYPE_COURSE);
  80. $blocknode = $coursenode->add(get_string('pluginname','block_exacomp'));
  81. $pagenode = $blocknode->add(get_string($page_identifier,'block_exacomp'), $PAGE->url);
  82. $pagenode->make_active();
  83. // build tab navigation & print header
  84. echo $OUTPUT->header();
  85. echo $OUTPUT->tabtree(block_exacomp_build_navigation_tabs($course_context,$courseid), $page_identifier);
  86. /* CONTENT REGION */
  87. /* Admins are allowed to import data, or a special capability for custom imports */
  88. if($isAdmin || block_exacomp_check_customupload()) {
  89. if($importtype) {
  90. if(strcmp($importtype, 'normal')==0 || strcmp($importtype, 'custom')==0){
  91. if ($mform->is_cancelled()) {
  92. redirect($PAGE->url);
  93. } else {
  94. if ($data = $mform->get_file_content('file')) {
  95. if($importSuccess) {
  96. if(!$version){
  97. $string = get_string('next_step', 'block_exacomp');
  98. $url = 'edit_config.php';
  99. }
  100. else{
  101. $string = get_string('next_step_teacher', 'block_exacomp');
  102. $url = 'edit_course.php';
  103. }
  104. echo $OUTPUT->box(get_string("importsuccess", "block_exacomp").html_writer::empty_tag('br')
  105. .html_writer::empty_tag('img', array('src'=>new moodle_url('/blocks/exacomp/pix/one_admin.png'), 'alt'=>'', 'width'=>'60px', 'height'=>'60px'))
  106. .html_writer::link(new moodle_url($url, array('courseid'=>$courseid, 'fromimport'=>1)), $string));
  107. }
  108. else {
  109. echo $OUTPUT->box(get_string("importfail", "block_exacomp"));
  110. $mform->display();
  111. }
  112. } else {
  113. echo $OUTPUT->box(get_string("importinfo", "block_exacomp"));
  114. if($isAdmin) echo $OUTPUT->box(get_string("importwebservice", "block_exacomp",new moodle_url("/admin/settings.php", array('section'=>'blocksettingexacomp'))));
  115. $mform->display();
  116. }
  117. }
  118. }elseif(strcmp($importtype, 'demo')==0){
  119. if($importSuccess){
  120. if(!$version) $string = get_string('next_step', 'block_exacomp');
  121. else $string = get_string('next_step_teacher', 'block_exacomp');
  122. echo $OUTPUT->box(get_string("importsuccess", "block_exacomp").html_writer::empty_tag('br')
  123. .html_writer::empty_tag('img', array('src'=>new moodle_url('/blocks/exacomp/pix/one_admin.png'), 'alt'=>'', 'width'=>'60px', 'height'=>'60px'))
  124. .html_writer::link(new moodle_url('edit_config.php', array('courseid'=>$courseid, 'fromimport'=>1)), $string));
  125. }else{
  126. echo $OUTPUT->box(get_string("importfail", "block_exacomp"));
  127. }
  128. }
  129. } else {
  130. if(block_exacomp_xml_check_import() && $isAdmin){
  131. echo $OUTPUT->box(get_string("importdone", "block_exacomp"));
  132. echo $OUTPUT->box(html_writer::link(new moodle_url('/blocks/exacomp/import.php', array('courseid'=>$courseid, 'importtype'=>'normal')), get_string('doimport_again', 'block_exacomp')));
  133. }
  134. else if($isAdmin) {
  135. echo $OUTPUT->box(html_writer::empty_tag('img', array('src'=>new moodle_url('/blocks/exacomp/pix/one_admin.png'), 'alt'=>'', 'width'=>'60px', 'height'=>'60px')).get_string('first_configuration_step', 'block_exacomp'));
  136. echo $OUTPUT->box(get_string("importpending", "block_exacomp"));
  137. echo $OUTPUT->box(html_writer::link(new moodle_url('/blocks/exacomp/import.php', array('courseid'=>$courseid, 'importtype'=>'normal')), get_string('doimport', 'block_exacomp')));
  138. echo $OUTPUT->box(html_writer::link(new moodle_url('/blocks/exacomp/import.php', array('courseid'=>$courseid, 'importtype'=>'demo')), get_string('do_demo_import', 'block_exacomp')));
  139. }
  140. if(block_exacomp_xml_check_import())
  141. echo $OUTPUT->box(html_writer::link(new moodle_url('/blocks/exacomp/import.php', array('courseid'=>$courseid, 'importtype'=>'custom')), get_string('doimport_own', 'block_exacomp')));
  142. if(isset($import)) {
  143. if($import)
  144. echo $OUTPUT->box(get_string("importsuccess", "block_exacomp"));
  145. else
  146. echo $OUTPUT->box(get_string("importfail", "block_exacomp"));
  147. }
  148. }
  149. } else require_capability('block/exacomp:admin', $context);
  150. /* END CONTENT REGION */
  151. echo $OUTPUT->footer();
  152. ?>