Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.

Differences Between: [Versions 310 and 401] [Versions 310 and 402] [Versions 310 and 403]

   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  /**
  19   * Handles lesson actions
  20   *
  21   * ACTIONS handled are:
  22   *    confirmdelete
  23   *    delete
  24   *    move
  25   *    moveit
  26   *    duplicate
  27   * @package mod_lesson
  28   * @copyright 1999 onwards Martin Dougiamas  {@link http://moodle.com}
  29   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  30   **/
  31  
  32  require_once("../../config.php");
  33  require_once($CFG->dirroot.'/mod/lesson/locallib.php');
  34  
  35  $id     = required_param('id', PARAM_INT);         // Course Module ID
  36  $action = required_param('action', PARAM_ALPHA);   // Action
  37  $pageid = required_param('pageid', PARAM_INT);
  38  
  39  $cm = get_coursemodule_from_id('lesson', $id, 0, false, MUST_EXIST);
  40  $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
  41  $lesson = new lesson($DB->get_record('lesson', array('id' => $cm->instance), '*', MUST_EXIST));
  42  
  43  require_login($course, false, $cm);
  44  
  45  $url = new moodle_url('/mod/lesson/lesson.php', array('id'=>$id,'action'=>$action));
  46  $PAGE->set_url($url);
  47  
  48  $context = context_module::instance($cm->id);
  49  require_capability('mod/lesson:edit', $context);
  50  require_sesskey();
  51  
  52  $lessonoutput = $PAGE->get_renderer('mod_lesson');
  53  
  54  /// Process the action
  55  switch ($action) {
  56      case 'confirmdelete':
  57          $PAGE->navbar->add(get_string($action, 'lesson'));
  58  
  59          $thispage = $lesson->load_page($pageid);
  60  
  61          echo $lessonoutput->header($lesson, $cm, '', false, null, get_string('deletingpage', 'lesson', format_string($thispage->title)));
  62          echo $OUTPUT->heading(get_string("deletingpage", "lesson", format_string($thispage->title)));
  63          // print the jumps to this page
  64          $params = array("lessonid" => $lesson->id, "pageid" => $pageid);
  65          if ($answers = $DB->get_records_select("lesson_answers", "lessonid = :lessonid AND jumpto = :pageid + 1", $params)) {
  66              echo $OUTPUT->heading(get_string("thefollowingpagesjumptothispage", "lesson"));
  67              echo "<p align=\"center\">\n";
  68              foreach ($answers as $answer) {
  69                  if (!$title = $DB->get_field("lesson_pages", "title", array("id" => $answer->pageid))) {
  70                      print_error('cannotfindpagetitle', 'lesson');
  71                  }
  72                  echo $title."<br />\n";
  73              }
  74          }
  75          echo $OUTPUT->confirm(get_string("confirmdeletionofthispage","lesson"),"lesson.php?action=delete&id=$cm->id&pageid=$pageid","view.php?id=$cm->id");
  76  
  77          break;
  78      case 'move':
  79          $PAGE->navbar->add(get_string($action, 'lesson'));
  80  
  81          $title = $DB->get_field("lesson_pages", "title", array("id" => $pageid));
  82  
  83          echo $lessonoutput->header($lesson, $cm, '', false, null, get_string('moving', 'lesson', format_String($title)));
  84          echo $OUTPUT->heading(get_string("moving", "lesson", format_string($title)), 3);
  85  
  86          $params = array ("lessonid" => $lesson->id, "prevpageid" => 0);
  87          if (!$page = $DB->get_record_select("lesson_pages", "lessonid = :lessonid AND prevpageid = :prevpageid", $params)) {
  88              print_error('cannotfindfirstpage', 'lesson');
  89          }
  90  
  91          echo html_writer::start_tag('div', array('class' => 'move-page'));
  92  
  93          echo html_writer::start_tag('div', array('class' => 'available-position'));
  94          $moveurl = "lesson.php?id=$cm->id&sesskey=".sesskey()."&action=moveit&pageid=$pageid&after=0";
  95          echo html_writer::link($moveurl, get_string("movepagehere", "lesson"));
  96          echo html_writer::end_tag('div');
  97  
  98          while (true) {
  99              if ($page->id != $pageid) {
 100                  if (!$title = trim(format_string($page->title))) {
 101                      $title = "<< ".get_string("notitle", "lesson")."  >>";
 102                  }
 103                  echo html_writer::tag('div', $title, array('class' => 'page'));
 104  
 105                  echo html_writer::start_tag('div', array('class' => 'available-position'));
 106                  $moveurl = "lesson.php?id=$cm->id&sesskey=".sesskey()."&action=moveit&pageid=$pageid&after={$page->id}";
 107                  echo html_writer::link($moveurl, get_string("movepagehere", "lesson"));
 108                  echo html_writer::end_tag('div');
 109              }
 110              if ($page->nextpageid) {
 111                  if (!$page = $DB->get_record("lesson_pages", array("id" => $page->nextpageid))) {
 112                      print_error('cannotfindnextpage', 'lesson');
 113                  }
 114              } else {
 115                  // last page reached
 116                  break;
 117              }
 118          }
 119          echo html_writer::end_tag('div');
 120  
 121          break;
 122      case 'delete':
 123          $thispage = $lesson->load_page($pageid);
 124          $thispage->delete();
 125          redirect("$CFG->wwwroot/mod/lesson/edit.php?id=$cm->id");
 126          break;
 127      case 'moveit':
 128          $after = (int)required_param('after', PARAM_INT); // target page
 129  
 130          $lesson->resort_pages($pageid, $after);
 131          redirect("$CFG->wwwroot/mod/lesson/edit.php?id=$cm->id");
 132          break;
 133      case 'duplicate':
 134              $lesson->duplicate_page($pageid);
 135              redirect(new moodle_url('/mod/lesson/edit.php', array('id' => $cm->id)));
 136          break;
 137      default:
 138          print_error('unknowaction');
 139          break;
 140  }
 141  
 142  echo $lessonoutput->footer();