Search moodle.org's
Developer Documentation


  • Bug fixes for general core bugs in 2.8.x ended 9 November 2015 (12 months).
  • Bug fixes for security issues in 2.8.x ended 9 May 2016 (18 months).
  • minimum PHP 5.4.4 (always use latest PHP 5.4.x or 5.5.x on Windows - http://windows.php.net/download/), PHP 7 is NOT supported
  • /mod/wiki/ -> edit.php (source)
       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   * This file contains all necessary code to edit a wiki page
      20   *
      21   * @package mod_wiki
      22   * @copyright 2009 Marc Alier, Jordi Piguillem marc.alier@upc.edu
      23   * @copyright 2009 Universitat Politecnica de Catalunya http://www.upc.edu
      24   *
      25   * @author Jordi Piguillem
      26   * @author Marc Alier
      27   * @author David Jimenez
      28   * @author Josep Arus
      29   * @author Kenneth Riba
      30   *
      31   * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
      32   */
      33  
      34  require_once('../../config.php');
      35  
      36  require_once($CFG->dirroot . '/mod/wiki/lib.php');
      37  require_once($CFG->dirroot . '/mod/wiki/locallib.php');
      38  require_once($CFG->dirroot . '/mod/wiki/pagelib.php');
      39  
      40  $pageid = required_param('pageid', PARAM_INT);
      41  $contentformat = optional_param('contentformat', '', PARAM_ALPHA);
      42  $option = optional_param('editoption', '', PARAM_TEXT);
      43  $section = optional_param('section', "", PARAM_RAW);
      44  $version = optional_param('version', -1, PARAM_INT);
      45  $attachments = optional_param('attachments', 0, PARAM_INT);
      46  $deleteuploads = optional_param('deleteuploads', 0, PARAM_RAW);
      47  
      48  $newcontent = '';
      49  if (!empty($newcontent) && is_array($newcontent)) {
      50      $newcontent = $newcontent['text'];
      51  }
      52  
      53  if (!$page = wiki_get_page($pageid)) {
      54      print_error('incorrectpageid', 'wiki');
      55  }
      56  
      57  if (!$subwiki = wiki_get_subwiki($page->subwikiid)) {
      58      print_error('incorrectsubwikiid', 'wiki');
      59  }
      60  
      61  if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
      62      print_error('incorrectwikiid', 'wiki');
      63  }
      64  
      65  if (!$cm = get_coursemodule_from_instance('wiki', $wiki->id)) {
      66      print_error('invalidcoursemodule');
      67  }
      68  
      69  $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
      70  
      71  if (!empty($section) && !$sectioncontent = wiki_get_section_page($page, $section)) {
      72      print_error('invalidsection', 'wiki');
      73  }
      74  
      75  require_login($course, true, $cm);
      76  
      77  $context = context_module::instance($cm->id);
      78  
      79  if (!wiki_user_can_edit($subwiki)) {
      80      print_error('cannoteditpage', 'wiki');
      81  }
      82  
      83  if ($option == get_string('save', 'wiki')) {
      84      if (!confirm_sesskey()) {
      85          print_error(get_string('invalidsesskey', 'wiki'));
      86      }
      87      $wikipage = new page_wiki_save($wiki, $subwiki, $cm);
      88      $wikipage->set_page($page);
      89      $wikipage->set_newcontent($newcontent);
      90      $wikipage->set_upload(true);
      91  } else {
      92      if ($option == get_string('preview')) {
      93          if (!confirm_sesskey()) {
      94              print_error(get_string('invalidsesskey', 'wiki'));
      95          }
      96          $wikipage = new page_wiki_preview($wiki, $subwiki, $cm);
      97          $wikipage->set_page($page);
      98      } else {
      99          if ($option == get_string('cancel')) {
     100              //delete lock
     101              wiki_delete_locks($page->id, $USER->id, $section);
     102  
     103              redirect($CFG->wwwroot . '/mod/wiki/view.php?pageid=' . $pageid);
     104          } else {
     105              $wikipage = new page_wiki_edit($wiki, $subwiki, $cm);
     106              $wikipage->set_page($page);
     107              $wikipage->set_upload($option == get_string('upload', 'wiki'));
     108          }
     109      }
     110  
     111      if (has_capability('mod/wiki:overridelock', $context)) {
     112          $wikipage->set_overridelock(true);
     113      }
     114  }
     115  
     116  if ($version >= 0) {
     117      $wikipage->set_versionnumber($version);
     118  }
     119  
     120  if (!empty($section)) {
     121      $wikipage->set_section($sectioncontent, $section);
     122  }
     123  
     124  if (!empty($attachments)) {
     125      $wikipage->set_attachments($attachments);
     126  }
     127  
     128  if (!empty($deleteuploads)) {
     129      $wikipage->set_deleteuploads($deleteuploads);
     130  }
     131  
     132  if (!empty($contentformat)) {
     133      $wikipage->set_format($contentformat);
     134  }
     135  
     136  $wikipage->print_header();
     137  
     138  $wikipage->print_content();
     139  
     140  $wikipage->print_footer();
    

    Search This Site: