Error con preguntas aleatorias

Re: Error con preguntas aleatorias

de José Ramón Urízar Salinas -
Número de respuestas: 2

Buenas tardes: 

Estamos teniendo el mismo problema. Adjunto el mensaje para que los desarrolladores puedan echarle un vistazo. 



Error code: codingerror
* line 770 of /lib/dml/moodle_database.php: coding_exception thrown
* line 1290 of /lib/questionlib.php: call to moodle_database->get_in_or_equal()
* line 58 of /mod/quiz/addrandomform.php: call to question_get_top_categories_for_contexts()
* line 204 of /lib/formslib.php: call to quiz_add_random_form->definition()
* line 2507 of /mod/quiz/lib.php: call to moodleform->__construct()
* line 7719 of /lib/moodlelib.php: call to mod_quiz_output_fragment_add_random_question_form()
* line 415 of /lib/external/externallib.php: call to component_callback()
* line 228 of /lib/externallib.php: call to core_external::get_fragment()
* line 59 of /lib/ajax/service.php: call to external_api::call_external_function()

En respuesta a José Ramón Urízar Salinas

Re: Error con preguntas aleatorias

de Johan Naranjo -

Les comparto la forma como lo solucioné, aunque no es lo ideal tuve que meterle mano al código para resolver esto ya que tenía desesperados a los usuarios.

La modificación la realicé específicamente en el archivo "lib/questionlib.php", cambié esta función:


function question_get_top_categories_for_contexts($contextids) {

    global $DB;


    $concatsql = $DB->sql_concat_join("','", ['id', 'contextid']);

    list($insql, $params) = $DB->get_in_or_equal($contextids);

    $sql = "SELECT $concatsql FROM {question_categories} WHERE contextid $insql AND parent = 0";

    $topcategories = $DB->get_fieldset_sql($sql, $params);


    return $topcategories;

}


Por esto:

function question_get_top_categories_for_contexts($contextids) {

    global $DB;

    $concatsql = $DB->sql_concat_join("','", ['id', 'contextid']);

    if ( !empty($contextids) ) {

list($insql, $params) = $DB->get_in_or_equal($contextids);

$sql = "SELECT $concatsql FROM {question_categories} WHERE contextid $insql AND parent = 0";

$topcategories = $DB->get_fieldset_sql($sql, $params);

return $topcategories;

}

return array();

}