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.
   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   * Generator for the gradingforum_rubric plugin.
  19   *
  20   * @package    gradingform_rubric
  21   * @category   test
  22   * @copyright  2018 Adrian Greeve <adriangreeve.com>
  23   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  24   */
  25  
  26  namespace tests\gradingform_rubric\generator;
  27  
  28  /**
  29   * Convenience class to create rubric criterion.
  30   *
  31   * @package    gradingform_rubric
  32   * @copyright  2018 Adrian Greeve <adriangreeve.com>
  33   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  34   */
  35  class criterion {
  36      /** @var string $description A description of the criterion. */
  37      public $description;
  38  
  39      /** @var integer $sortorder sort order of the criterion. */
  40      public $sortorder = 0;
  41  
  42      /** @var array $levels The levels for this criterion. */
  43      public $levels = [];
  44  
  45      /**
  46       * Constructor for this test_criterion object
  47       *
  48       * @param string $description A description of this criterion.
  49       * @param array $levels
  50       */
  51      public function __construct(string $description, array $levels = []) {
  52          $this->description = $description;
  53          foreach ($levels as $definition => $score) {
  54              $this->add_level($definition, $score);
  55          }
  56      }
  57  
  58      /**
  59       * Adds levels to the criterion.
  60       *
  61       * @param string $definition The definition for this level.
  62       * @param int $score The score received if this level is selected.
  63       * @return self
  64       */
  65      public function add_level(string $definition, int $score): self {
  66          $this->levels[] = [
  67              'definition' => $definition,
  68              'score' => $score
  69          ];
  70  
  71          return $this;
  72      }
  73  
  74      /**
  75       * Get the description for this criterion.
  76       *
  77       * @return string
  78       */
  79      public function get_description(): string {
  80          return $this->description;
  81      }
  82  
  83      /**
  84       * Get the levels for this criterion.
  85       *
  86       * @return array
  87       */
  88      public function get_levels(): array {
  89          return $this->levels;
  90      }
  91  
  92      /**
  93       * Get all values in an array for use when creating a new guide.
  94       *
  95       * @param int $sortorder
  96       * @return array
  97       */
  98      public function get_all_values(int $sortorder): array {
  99          return [
 100              'sortorder' => $sortorder,
 101              'description' => $this->get_description(),
 102              'levels' => $this->get_all_level_values(),
 103          ];
 104      }
 105  
 106      /**
 107       * Get all level values.
 108       *
 109       * @return array
 110       */
 111      public function get_all_level_values(): array {
 112          $result = [];
 113  
 114          foreach ($this->get_levels() as $index => $level) {
 115              $id = $index + 1;
 116              $result["NEWID{$id}"] = $level;
 117          }
 118  
 119          return $result;
 120      }
 121  }