Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.

Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401]

   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  /**
  18   * prints the forms to choose an item-typ to create items and to choose a template to use
  19   *
  20   * @author Andreas Grabs
  21   * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
  22   * @package mod_feedback
  23   */
  24  
  25  //It must be included from a Moodle page
  26  if (!defined('MOODLE_INTERNAL')) {
  27      die('Direct access to this script is forbidden.');
  28  }
  29  
  30  require_once($CFG->libdir.'/formslib.php');
  31  
  32  /**
  33   * The feedback_edit_use_template_form
  34   *
  35   * @deprecated since 4.0 new dynamic forms created
  36   */
  37  class feedback_edit_use_template_form extends moodleform {
  38      public function __construct($action = null, $customdata = null, $method = 'post', $target = '',
  39              $attributes = null, $editable = true, $ajaxformdata = null) {
  40          debugging('Class feedback_edit_use_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
  41          parent::__construct($action, $customdata, $method, $target, $attributes, $editable, $ajaxformdata);
  42      }
  43  
  44      /**
  45       * Overrides parent static method for deprecation purposes.
  46       *
  47       * @deprecated since 4.0
  48       * @return array
  49       */
  50      public static function get_js_module() {
  51          debugging('Class feedback_edit_use_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
  52          return parent::get_js_module();
  53      }
  54  
  55      /**
  56       * Overrides parent static method for deprecation purposes.
  57       *
  58       * @deprecated since 4.0
  59       * @param array $simulatedsubmitteddata
  60       * @param array $simulatedsubmittedfiles
  61       * @param string $method
  62       * @param null $formidentifier
  63       * @return array
  64       */
  65      public static function mock_ajax_submit($simulatedsubmitteddata, $simulatedsubmittedfiles = array(),
  66              $method = 'post', $formidentifier = null) {
  67          debugging('Class feedback_edit_use_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
  68          return parent::mock_ajax_submit($simulatedsubmitteddata, $simulatedsubmittedfiles, $method, $formidentifier);
  69      }
  70  
  71      /**
  72       * Overrides parent static method for deprecation purposes.
  73       *
  74       * @deprecated since 4.0
  75       * @param array $data
  76       * @return array
  77       */
  78      public static function mock_generate_submit_keys($data = []) {
  79          debugging('Class feedback_edit_use_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
  80          return parent::mock_generate_submit_keys($data);
  81      }
  82  
  83      /**
  84       * Overrides parent static method for deprecation purposes.
  85       *
  86       * @deprecated since 4.0
  87       * @param array $simulatedsubmitteddata
  88       * @param array $simulatedsubmittedfiles
  89       * @param string $method
  90       * @param null $formidentifier
  91       */
  92      public static function mock_submit($simulatedsubmitteddata, $simulatedsubmittedfiles = array(),
  93              $method = 'post', $formidentifier = null) {
  94          debugging('Class feedback_edit_use_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
  95          parent::mock_submit($simulatedsubmitteddata, $simulatedsubmittedfiles, $method, $formidentifier);
  96      }
  97  
  98      /**
  99       * Form definition
 100       */
 101      public function definition() {
 102          $mform =& $this->_form;
 103  
 104          $course = $this->_customdata['course'];
 105  
 106          $elementgroup = array();
 107          //headline
 108          $mform->addElement('header', 'using_templates', get_string('using_templates', 'feedback'));
 109          // hidden elements
 110          $mform->addElement('hidden', 'id');
 111          $mform->setType('id', PARAM_INT);
 112  
 113          // visible elements
 114          $templates_options = array();
 115          $owntemplates = feedback_get_template_list($course, 'own');
 116          $publictemplates = feedback_get_template_list($course, 'public');
 117  
 118          $options = array();
 119          if ($owntemplates or $publictemplates) {
 120              $options[''] = array('' => get_string('choosedots'));
 121  
 122              if ($owntemplates) {
 123                  $courseoptions = array();
 124                  foreach ($owntemplates as $template) {
 125                      $courseoptions[$template->id] = format_string($template->name);
 126                  }
 127                  $options[get_string('course')] = $courseoptions;
 128              }
 129  
 130              if ($publictemplates) {
 131                  $publicoptions = array();
 132                  foreach ($publictemplates as $template) {
 133                      $publicoptions[$template->id] = format_string($template->name);
 134                  }
 135                  $options[get_string('public', 'feedback')] = $publicoptions;
 136              }
 137  
 138              $attributes = [
 139                  'onChange="this.form.submit()"',
 140                  'data-form-change-checker-override="1"',
 141              ];
 142              $elementgroup[] = $mform->createElement(
 143                  'selectgroups',
 144                  'templateid',
 145                  get_string('using_templates', 'feedback'),
 146                  $options,
 147                  implode(' ', $attributes)
 148              );
 149  
 150              $elementgroup[] = $mform->createElement('submit',
 151                                                       'use_template',
 152                                                       get_string('use_this_template', 'feedback'),
 153                                                       array('class' => 'hiddenifjs'));
 154  
 155              $mform->addGroup($elementgroup, 'elementgroup', '', array(' '), false);
 156          } else {
 157              $mform->addElement('static', 'info', get_string('no_templates_available_yet', 'feedback'));
 158          }
 159  
 160          $this->set_data(array('id' => $this->_customdata['id']));
 161      }
 162  }
 163  
 164  /**
 165   * The feedback_edit_create_template_form
 166   *
 167   * @deprecated since 4.0, new dynamic forms have been created instead.
 168   */
 169  class feedback_edit_create_template_form extends moodleform {
 170      public function __construct($action = null, $customdata = null, $method = 'post',
 171              $target = '', $attributes = null, $editable = true, $ajaxformdata = null) {
 172          debugging('Class feedback_edit_create_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
 173          parent::__construct($action, $customdata, $method, $target, $attributes, $editable, $ajaxformdata);
 174      }
 175  
 176      /**
 177       * Overrides parent static method for deprecation purposes.
 178       *
 179       * @deprecated since 4.0
 180       * @return array
 181       */
 182      public static function get_js_module() {
 183          debugging('Class feedback_edit_create_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
 184          return parent::get_js_module();
 185      }
 186  
 187      /**
 188       * Overrides parent static method for deprecation purposes.
 189       *
 190       * @deprecated since 4.0
 191       * @param array $simulatedsubmitteddata
 192       * @param array $simulatedsubmittedfiles
 193       * @param string $method
 194       * @param null $formidentifier
 195       * @return array
 196       */
 197      public static function mock_ajax_submit($simulatedsubmitteddata, $simulatedsubmittedfiles = array(),
 198              $method = 'post', $formidentifier = null) {
 199          debugging('Class feedback_edit_create_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
 200          return parent::mock_ajax_submit($simulatedsubmitteddata, $simulatedsubmittedfiles, $method, $formidentifier);
 201      }
 202  
 203      /**
 204       * Overrides parent static method for deprecation purposes.
 205       *
 206       * @deprecated since 4.0
 207       * @param array $data
 208       * @return array
 209       */
 210      public static function mock_generate_submit_keys($data = []) {
 211          debugging('Class feedback_edit_create_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
 212          return parent::mock_generate_submit_keys($data);
 213      }
 214  
 215      /**
 216       * Overrides parent static method for deprecation purposes.
 217       *
 218       * @deprecated since 4.0
 219       * @param array $simulatedsubmitteddata
 220       * @param array $simulatedsubmittedfiles
 221       * @param string $method
 222       * @param null $formidentifier
 223       */
 224      public static function mock_submit($simulatedsubmitteddata, $simulatedsubmittedfiles = array(),
 225              $method = 'post', $formidentifier = null) {
 226          debugging('Class feedback_edit_create_template_form is deprecated. Replaced with dynamic forms.', DEBUG_DEVELOPER);
 227          parent::mock_submit($simulatedsubmitteddata, $simulatedsubmittedfiles, $method, $formidentifier);
 228      }
 229  
 230      /**
 231       * Form definition
 232       */
 233      public function definition() {
 234          $mform =& $this->_form;
 235  
 236          // hidden elements
 237          $mform->addElement('hidden', 'id');
 238          $mform->setType('id', PARAM_INT);
 239          $mform->addElement('hidden', 'do_show');
 240          $mform->setType('do_show', PARAM_ALPHANUMEXT);
 241          $mform->setConstant('do_show', 'edit');
 242  
 243          // visible elements
 244          $elementgroup = array();
 245  
 246          $elementgroup[] = $mform->createElement('text',
 247                                                   'templatename',
 248                                                   get_string('name', 'feedback'),
 249                                                   ['maxlength' => '200']);
 250  
 251          if (has_capability('mod/feedback:createpublictemplate', context_system::instance())) {
 252              $elementgroup[] = $mform->createElement('checkbox',
 253                                                       'ispublic', '',
 254                                                       get_string('public', 'feedback'));
 255          }
 256  
 257  
 258          $mform->addGroup($elementgroup,
 259                           'elementgroup',
 260                           get_string('name', 'feedback'),
 261                           array(' '),
 262                           false);
 263  
 264          // Buttons.
 265          $mform->addElement('submit', 'create_template', get_string('save_as_new_template', 'feedback'));
 266  
 267          $mform->setType('templatename', PARAM_TEXT);
 268  
 269          $this->set_data(array('id' => $this->_customdata['id']));
 270      }
 271  
 272      /**
 273       * Form validation
 274       *
 275       * @param array $data array of ("fieldname"=>value) of submitted data
 276       * @param array $files array of uploaded files "element_name"=>tmp_file_path
 277       * @return array of "element_name"=>"error_description" if there are errors,
 278       *         or an empty array if everything is OK (true allowed for backwards compatibility too).
 279       */
 280      public function validation($data, $files) {
 281          $errors = parent::validation($data, $files);
 282          if (!isset($data['templatename']) || trim(strval($data['templatename'])) === '') {
 283              $errors['elementgroup'] = get_string('name_required', 'feedback');
 284          }
 285          return $errors;
 286      }
 287  }
 288