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 25defined('MOODLE_INTERNAL') || die(); 26 27require_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 */ 36abstract 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} 212