[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
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 * Defines the question behaviour type base class 19 * 20 * @package core 21 * @subpackage questionbehaviours 22 * @copyright 2012 The Open University 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 24 */ 25 26 27 defined('MOODLE_INTERNAL') || die(); 28 29 30 /** 31 * This class represents the type of behaviour, rather than the instance of the 32 * behaviour which control a particular question attempt. 33 * 34 * @copyright 2012 The Open University 35 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 36 */ 37 abstract class question_behaviour_type { 38 /** 39 * Certain behaviours are definitive of a way that questions can behave when 40 * attempted. For example deferredfeedback model, interactive model, etc. 41 * These are the options that should be listed in the user-interface, and 42 * for these behaviours this method should return true. Other behaviours are 43 * more implementation details, for example the informationitem behaviours, 44 * or a special subclass like interactive_adapted_for_my_qtype. These 45 * behaviours should return false. 46 * @return bool whether this is an archetypal behaviour. 47 */ 48 public function is_archetypal() { 49 return false; 50 } 51 52 /** 53 * Override this method if there are some display options that do not make 54 * sense 'during the attempt'. 55 * @return array of {@link question_display_options} field names, that are 56 * not relevant to this behaviour before a 'finish' action. 57 */ 58 public function get_unused_display_options() { 59 return array(); 60 } 61 62 /** 63 * Adjust a random guess score for a question using this model. You have to 64 * do this without knowing details of the specific question, or which usage 65 * it is in. 66 * @param number $fraction the random guess score from the question type. 67 * @return number the adjusted fraction. 68 */ 69 public function adjust_random_guess_score($fraction) { 70 return $fraction; 71 } 72 73 /** 74 * Get summary information about a queston usage. 75 * 76 * Behaviours are not obliged to do anything here, but this is an opportunity 77 * to provide additional information that can be displayed in places like 78 * at the top of the quiz review page. 79 * 80 * In the return value, the array keys should be identifiers of the form 81 * qbehaviour_behaviourname_meaningfullkey. For qbehaviour_deferredcbm_highsummary. 82 * The values should be arrays with two items, title and content. Each of these 83 * should be either a string, or a renderable. 84 * 85 * To understand how to implement this method, look at the CBM behaviours, 86 * and their unit tests. 87 * 88 * @param question_usage_by_activity $quba the usage to provide summary data for. 89 * @return array as described above. 90 */ 91 public function summarise_usage(question_usage_by_activity $quba, 92 question_display_options $options) { 93 return array(); 94 } 95 96 /** 97 * Does this question behaviour accept multiple submissions of responses within one attempt eg. multiple tries for the 98 * interactive or adaptive question behaviours. 99 * 100 * @return bool 101 */ 102 public function allows_multiple_submitted_responses() { 103 return false; 104 } 105 } 106 107 108 /** 109 * This class exists to allow behaviours that worked in Moodle 2.3 to continue 110 * to work. It implements the question_behaviour_type API for the other behaviour 111 * as much as possible in a backwards-compatible way. 112 * 113 * @copyright 2012 The Open University 114 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 115 */ 116 class question_behaviour_type_fallback extends question_behaviour_type { 117 118 /** @var string the behaviour class name. */ 119 protected $behaviourclass; 120 121 /** 122 * @param string $behaviourtype the type of behaviour we are providing a fallback for. 123 */ 124 public function __construct($behaviour) { 125 question_engine::load_behaviour_class($behaviour); 126 $this->behaviourclass = 'qbehaviour_' . $behaviour; 127 } 128 129 public function is_archetypal() { 130 return constant($this->behaviourclass . '::IS_ARCHETYPAL'); 131 } 132 133 /** 134 * Override this method if there are some display options that do not make 135 * sense 'during the attempt'. 136 * @return array of {@link question_display_options} field names, that are 137 * not relevant to this behaviour before a 'finish' action. 138 */ 139 public function get_unused_display_options() { 140 return call_user_func(array($this->behaviourclass, 'get_unused_display_options')); 141 } 142 143 /** 144 * Adjust a random guess score for a question using this model. You have to 145 * do this without knowing details of the specific question, or which usage 146 * it is in. 147 * @param number $fraction the random guess score from the question type. 148 * @return number the adjusted fraction. 149 */ 150 public function adjust_random_guess_score($fraction) { 151 return call_user_func(array($this->behaviourclass, 'adjust_random_guess_score'), 152 $fraction); 153 } 154 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |