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   * This file contains the function for feedback_plugin abstract class
  19   *
  20   * @package   mod_assign
  21   * @copyright 2012 NetSpot {@link http://www.netspot.com.au}
  22   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  defined('MOODLE_INTERNAL') || die();
  26  
  27  require_once($CFG->dirroot.'/mod/assign/assignmentplugin.php');
  28  
  29  /**
  30   * Abstract class for feedback_plugin inherited from assign_plugin abstract class.
  31   *
  32   * @package   mod_assign
  33   * @copyright 2012 NetSpot {@link http://www.netspot.com.au}
  34   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  35   */
  36  abstract class assign_feedback_plugin extends assign_plugin {
  37  
  38      /**
  39       * Return subtype name of the plugin.
  40       *
  41       * @return string
  42       */
  43      public function get_subtype() {
  44          return 'assignfeedback';
  45      }
  46  
  47      /**
  48       * If this plugin adds to the gradebook comments field, it must specify the format
  49       * of the comment.
  50       *
  51       * (From weblib.php)
  52       * define('FORMAT_MOODLE',   '0');   // Does all sorts of transformations and filtering
  53       * define('FORMAT_HTML',     '1');   // Plain HTML (with some tags stripped)
  54       * define('FORMAT_PLAIN',    '2');   // Plain text (even tags are printed in full)
  55       * define('FORMAT_WIKI',     '3');   // Wiki-formatted text
  56       * define('FORMAT_MARKDOWN', '4');   // Markdown-formatted
  57       *
  58       * Only one feedback plugin can push comments to the gradebook and that is chosen by the assignment
  59       * settings page.
  60       *
  61       * @param stdClass $grade The grade
  62       * @return int
  63       */
  64      public function format_for_gradebook(stdClass $grade) {
  65          return FORMAT_MOODLE;
  66      }
  67  
  68      /**
  69       * If this plugin adds to the gradebook comments field, it must format the text
  70       * of the comment.
  71       *
  72       * Only one feedback plugin can push comments to the gradebook and that is chosen by the assignment
  73       * settings page.
  74       *
  75       * @param stdClass $grade The grade
  76       * @return string
  77       */
  78      public function text_for_gradebook(stdClass $grade) {
  79          return '';
  80      }
  81  
  82      /**
  83       * Return any files this plugin wishes to save to the gradebook.
  84       *
  85       * The array being returned should contain the necessary information to
  86       * identify and copy the files.
  87       *
  88       * eg.
  89       *
  90       * [
  91       *      'contextid' => $modulecontext->id,
  92       *      'component' => ASSIGNFEEDBACK_XYZ_COMPONENT,
  93       *      'filearea' => ASSIGNFEEDBACK_XYZ_FILEAREA,
  94       *      'itemid' => $grade->id
  95       * ]
  96       *
  97       * @param stdClass $grade The assign_grades object from the db
  98       * @return array
  99       */
 100      public function files_for_gradebook(stdClass $grade) : array {
 101          return [];
 102      }
 103  
 104      /**
 105       * Override to indicate a plugin supports quickgrading.
 106       *
 107       * @return boolean - True if the plugin supports quickgrading
 108       */
 109      public function supports_quickgrading() {
 110          return false;
 111      }
 112  
 113      /**
 114       * Get quickgrading form elements as html.
 115       *
 116       * @param int $userid The user id in the table this quickgrading element relates to
 117       * @param mixed $grade grade or null - The grade data.
 118       *                     May be null if there are no grades for this user (yet)
 119       * @return mixed - A html string containing the html form elements required for
 120       *                 quickgrading or false to indicate this plugin does not support quickgrading
 121       */
 122      public function get_quickgrading_html($userid, $grade) {
 123          return false;
 124      }
 125  
 126      /**
 127       * Has the plugin quickgrading form element been modified in the current form submission?
 128       *
 129       * @param int $userid The user id in the table this quickgrading element relates to
 130       * @param stdClass $grade The grade
 131       * @return boolean - true if the quickgrading form element has been modified
 132       */
 133      public function is_quickgrading_modified($userid, $grade) {
 134          return false;
 135      }
 136  
 137      /**
 138       * Has the plugin form element been modified in the current submission?
 139       *
 140       * @param stdClass $grade The grade.
 141       * @param stdClass $data Form data from the feedback form.
 142       * @return boolean - True if the form element has been modified.
 143       */
 144      public function is_feedback_modified(stdClass $grade, stdClass $data) {
 145          debugging('This plugin (' . $this->get_name() . ') has not overwritten the is_feedback_modified() method.
 146                  Please add this method to your plugin', DEBUG_DEVELOPER);
 147          return true;
 148      }
 149  
 150      /**
 151       * Save quickgrading changes.
 152       *
 153       * @param int $userid The user id in the table this quickgrading element relates to
 154       * @param stdClass $grade The grade
 155       * @return boolean - true if the grade changes were saved correctly
 156       */
 157      public function save_quickgrading_changes($userid, $grade) {
 158          return false;
 159      }
 160  
 161      /**
 162       * Return a list of the batch grading operations supported by this plugin.
 163       *
 164       * @return array - An array of action and description strings.
 165       *                 The action will be passed to grading_batch_operation.
 166       */
 167      public function get_grading_batch_operations() {
 168          return array();
 169      }
 170  
 171      /**
 172       * Return a list of the grading actions supported by this plugin.
 173       *
 174       * A grading action is a page that is not specific to a user but to the whole assignment.
 175       * @return array - An array of action and description strings.
 176       *                 The action will be passed to grading_action.
 177       */
 178      public function get_grading_actions() {
 179          return array();
 180      }
 181  
 182      /**
 183       * Show a grading action form
 184       *
 185       * @param string $gradingaction The action chosen from the grading actions menu
 186       * @return string The page containing the form
 187       */
 188      public function grading_action($gradingaction) {
 189          return '';
 190      }
 191  
 192      /**
 193       * Supports injecting content into the review panel of the grading app.
 194       *
 195       * @return bool True if this plugin will add content to the review panel of the grading app.
 196       */
 197      public function supports_review_panel() {
 198          return false;
 199      }
 200  
 201      /**
 202       * Show a batch operations form
 203       *
 204       * @param string $action The action chosen from the batch operations menu
 205       * @param array $users The list of selected userids
 206       * @return string The page containing the form
 207       */
 208      public function grading_batch_operation($action, $users) {
 209          return '';
 210      }
 211  }