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.
   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   * The mform to manage question tags.
  19   *
  20   * @package   core_question
  21   * @copyright 2018 Simey Lameze <simey@moodle.com>
  22   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  namespace core_question\form;
  26  
  27  defined('MOODLE_INTERNAL') || die();
  28  
  29  require_once($CFG->dirroot . '/lib/formslib.php');
  30  require_once($CFG->dirroot . '/lib/questionlib.php');
  31  /**
  32   * The mform class for  manage question tags.
  33   *
  34   * @copyright 2018 Simey Lameze <simey@moodle.com>
  35   * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  36   */
  37  class tags extends \moodleform {
  38  
  39      /**
  40       * The form definition
  41       */
  42      public function definition() {
  43          $mform = $this->_form;
  44          $customdata = $this->_customdata;
  45  
  46          $mform->disable_form_change_checker();
  47  
  48          $mform->addElement('hidden', 'id');
  49          $mform->setType('id', PARAM_INT);
  50  
  51          $mform->addElement('hidden', 'categoryid');
  52          $mform->setType('categoryid', PARAM_INT);
  53  
  54          $mform->addElement('hidden', 'contextid');
  55          $mform->setType('contextid', PARAM_INT);
  56  
  57          $mform->addElement('static', 'questionname', get_string('questionname', 'question'));
  58          $mform->addElement('static', 'questioncategory', get_string('categorycurrent', 'question'));
  59          $mform->addElement('static', 'context', '');
  60  
  61          if (\core_tag_tag::is_enabled('core_question', 'question')) {
  62              $tags = \core_tag_tag::get_tags_by_area_in_contexts('core_question', 'question', $customdata['contexts']);
  63              $tagstrings = [];
  64              foreach ($tags as $tag) {
  65                  $tagstrings[$tag->name] = $tag->name;
  66              }
  67  
  68              $options = [
  69                  'tags' => true,
  70                  'multiple' => true,
  71                  'noselectionstring' => get_string('anytags', 'quiz'),
  72              ];
  73              $mform->addElement('autocomplete', 'tags',  get_string('tags'), $tagstrings, $options);
  74  
  75              // Is the question category in a course context?
  76              $qcontext = $customdata['questioncontext'];
  77              $qcoursecontext = $qcontext->get_course_context(false);
  78              $iscourseoractivityquestion = !empty($qcoursecontext);
  79              // Is the current context we're editing in a course context?
  80              $editingcontext = $customdata['editingcontext'];
  81              $editingcoursecontext = $editingcontext->get_course_context(false);
  82              $iseditingcontextcourseoractivity = !empty($editingcoursecontext);
  83  
  84              if ($iseditingcontextcourseoractivity && !$iscourseoractivityquestion) {
  85                  // If the question is being edited in a course or activity context
  86                  // and the question isn't a course or activity level question then
  87                  // allow course tags to be added to the course.
  88                  $coursetagheader = get_string('questionformtagheader', 'core_question',
  89                      $editingcoursecontext->get_context_name(true));
  90                  $mform->addElement('autocomplete', 'coursetags',  $coursetagheader, $tagstrings, $options);
  91  
  92              }
  93          }
  94      }
  95  }