Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 44... Línea 44...
44
 */
44
 */
45
class random_question_loader {
45
class random_question_loader {
46
    /** @var \qubaid_condition which usages to consider previous attempts from. */
46
    /** @var \qubaid_condition which usages to consider previous attempts from. */
47
    protected $qubaids;
47
    protected $qubaids;
Línea -... Línea 48...
-
 
48
 
48
 
49
    /**
-
 
50
     * @var array Array of question types to include in random questions.
49
    /** @var array qtypes that cannot be used by random questions. */
51
     */
Línea 50... Línea 52...
50
    protected $excludedqtypes;
52
    protected $includedqtypes = [];
51
 
53
 
Línea 52... Línea 54...
52
    /** @var array categoryid & include subcategories => num previous uses => questionid => 1. */
54
    /** @var array categoryid & include subcategories => num previous uses => questionid => 1. */
Línea 67... Línea 69...
67
     */
69
     */
68
    public function __construct(\qubaid_condition $qubaids, array $usedquestions = []) {
70
    public function __construct(\qubaid_condition $qubaids, array $usedquestions = []) {
69
        $this->qubaids = $qubaids;
71
        $this->qubaids = $qubaids;
70
        $this->recentlyusedquestions = $usedquestions;
72
        $this->recentlyusedquestions = $usedquestions;
Línea -... Línea 73...
-
 
73
 
71
 
74
        // Load the possible question types we can select from.
72
        foreach (\question_bank::get_all_qtypes() as $qtype) {
75
        foreach (\question_bank::get_all_qtypes() as $qtype) {
73
            if (!$qtype->is_usable_by_random()) {
76
            if ($qtype->is_usable_by_random()) {
74
                $this->excludedqtypes[] = $qtype->name();
77
                $this->includedqtypes[] = $qtype->name();
75
            }
78
            }
76
        }
79
        }
Línea 77... Línea 80...
77
    }
80
    }
Línea 211... Línea 214...
211
            }
214
            }
212
        }
215
        }
213
        $filtercondition = $filterconditions ? 'AND ' . implode(' AND ', $filterconditions) : '';
216
        $filtercondition = $filterconditions ? 'AND ' . implode(' AND ', $filterconditions) : '';
Línea 214... Línea 217...
214
 
217
 
215
        // Prepare qtype check.
218
        // Prepare qtype check.
216
        [$qtypecondition, $qtypeparams] = $DB->get_in_or_equal($this->excludedqtypes,
219
        [$qtypecondition, $qtypeparams] = $DB->get_in_or_equal($this->includedqtypes,
217
            SQL_PARAMS_NAMED, 'excludedqtype', false);
220
            SQL_PARAMS_NAMED, 'includedqtype');
218
        if ($qtypecondition) {
221
        if ($qtypecondition) {
219
            $qtypecondition = 'AND q.qtype ' . $qtypecondition;
222
            $qtypecondition = 'AND q.qtype ' . $qtypecondition;
Línea 220... Línea 223...
220
        }
223
        }