mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
Added function to return category name with course shortname apended
Added functions to read a complete quiz category structure into object for development of export functionality - working but partial question types at the moment.
This commit is contained in:
parent
5ab5d67ddf
commit
adc8ba57b2
1 changed files with 150 additions and 0 deletions
150
mod/quiz/lib.php
150
mod/quiz/lib.php
|
@ -1332,6 +1332,17 @@ function quiz_print_category_form($course, $current) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function quiz_get_category_coursename($category) {
|
||||||
|
/// if the category is published, adds on the course
|
||||||
|
/// name
|
||||||
|
$cname=$category->name;
|
||||||
|
if ($category->publish) {
|
||||||
|
if ($catcourse=get_record("course","id",$category->id)) {
|
||||||
|
$cname .= " ($catcourse->shortname) ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $cname;
|
||||||
|
}
|
||||||
|
|
||||||
function quiz_choose_random_questions($category, $draws, $excluded=0) {
|
function quiz_choose_random_questions($category, $draws, $excluded=0) {
|
||||||
/// Given a question category and a number of draws, this function
|
/// Given a question category and a number of draws, this function
|
||||||
|
@ -1509,6 +1520,7 @@ function quiz_print_cat_question_list($categoryid, $quizselected=true) {
|
||||||
$strquestion = get_string("question", "quiz");
|
$strquestion = get_string("question", "quiz");
|
||||||
$straddquestions = get_string("addquestions", "quiz");
|
$straddquestions = get_string("addquestions", "quiz");
|
||||||
$strimportquestions = get_string("importquestions", "quiz");
|
$strimportquestions = get_string("importquestions", "quiz");
|
||||||
|
$strexportquestions = get_string("exportquestions", "quiz");
|
||||||
$strnoquestions = get_string("noquestions", "quiz");
|
$strnoquestions = get_string("noquestions", "quiz");
|
||||||
$strselect = get_string("select", "quiz");
|
$strselect = get_string("select", "quiz");
|
||||||
$strselectall = get_string("selectall", "quiz");
|
$strselectall = get_string("selectall", "quiz");
|
||||||
|
@ -1556,6 +1568,14 @@ function quiz_print_cat_question_list($categoryid, $quizselected=true) {
|
||||||
echo '</form>';
|
echo '</form>';
|
||||||
echo '</td></tr>';
|
echo '</td></tr>';
|
||||||
|
|
||||||
|
echo '<tr><td colspan="3" align="right">';
|
||||||
|
echo '<form method="get" action="export.php">';
|
||||||
|
echo "<input type=\"hidden\" name=\"category\" value=\"$category->id\" />";
|
||||||
|
echo "<input type=\"submit\" value=\"$strexportquestions\" />";
|
||||||
|
helpbutton("export", $strexportquestions, "quiz");
|
||||||
|
echo '</form>';
|
||||||
|
echo '</td></tr>';
|
||||||
|
|
||||||
echo '<tr><td colspan="3" align="right">';
|
echo '<tr><td colspan="3" align="right">';
|
||||||
echo '<form method="get" action="multiple.php">';
|
echo '<form method="get" action="multiple.php">';
|
||||||
echo "<input type=\"hidden\" name=\"category\" value=\"$category->id\" />";
|
echo "<input type=\"hidden\" name=\"category\" value=\"$category->id\" />";
|
||||||
|
@ -2841,4 +2861,134 @@ function quiz_print_recent_mod_activity($activity, $course, $detail=false) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this function creates default export filename
|
||||||
|
function default_export_filename($course,$category) {
|
||||||
|
//Take off some characters in the filename !!
|
||||||
|
$takeoff = array(" ", ":", "/", "\\", "|");
|
||||||
|
$export_word = str_replace($takeoff,"_",strtolower(get_string("exportfilename","quiz")));
|
||||||
|
//If non-translated, use "export"
|
||||||
|
if (substr($export_word,0,1) == "[") {
|
||||||
|
$export_word= "export";
|
||||||
|
}
|
||||||
|
|
||||||
|
//Calculate the date format string
|
||||||
|
$export_date_format = str_replace(" ","_",get_string("exportnameformat","quiz"));
|
||||||
|
//If non-translated, use "%Y%m%d-%H%M"
|
||||||
|
if (substr($export_date_format,0,1) == "[") {
|
||||||
|
$export_date_format = "%%Y%%m%%d-%%H%%M";
|
||||||
|
}
|
||||||
|
|
||||||
|
//Calculate the shortname
|
||||||
|
$export_shortname = clean_filename($course->shortname);
|
||||||
|
if (empty($export_shortname) or $export_shortname == '_' ) {
|
||||||
|
$export_shortname = $course->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Calculate the category name
|
||||||
|
$export_categoryname = clean_filename($category->name);
|
||||||
|
|
||||||
|
//Calculate the final export filename
|
||||||
|
//The export word
|
||||||
|
$export_name = $export_word."-";
|
||||||
|
//The shortname
|
||||||
|
$export_name .= strtolower($export_shortname)."-";
|
||||||
|
//The category name
|
||||||
|
$export_name .= strtolower($export_categoryname)."-";
|
||||||
|
//The date format
|
||||||
|
$export_name .= userdate(time(),$export_date_format,99,false);
|
||||||
|
//The extension
|
||||||
|
$export_name .= ".txt";
|
||||||
|
|
||||||
|
return $export_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
// function to read all questions for category into big array
|
||||||
|
// added by Howard Miller June 2004
|
||||||
|
function get_questions_category( $category ) {
|
||||||
|
|
||||||
|
// questions will be added to an array
|
||||||
|
$qresults = array();
|
||||||
|
|
||||||
|
// get the list of questions for the category
|
||||||
|
$questions = get_records("quiz_questions","category",$category->id);
|
||||||
|
|
||||||
|
// iterate through questions, getting stuff we need
|
||||||
|
foreach($questions as $question) {
|
||||||
|
$new_question = get_question_data( $question );
|
||||||
|
$qresults[] = $new_question;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $qresults;
|
||||||
|
}
|
||||||
|
|
||||||
|
// function to read single question, parameter is object view of
|
||||||
|
// quiz_categories record, results is a combined object
|
||||||
|
// defined as follows...
|
||||||
|
// ->id quiz_questions id
|
||||||
|
// ->category category
|
||||||
|
// ->name q name
|
||||||
|
// ->questiontext
|
||||||
|
// ->image
|
||||||
|
// ->qtype see defines at the top of this file
|
||||||
|
// ->stamp not too sure
|
||||||
|
// ->version not sure
|
||||||
|
// ----SHORTANSWER
|
||||||
|
// ->usecase
|
||||||
|
// ->answers array of answers
|
||||||
|
// ----TRUEFALSE
|
||||||
|
// ->trueanswer truefalse answer
|
||||||
|
// ->falseanswer truefalse answer
|
||||||
|
// ----MULTICHOICE
|
||||||
|
// ->layout
|
||||||
|
// ->single many or just one correct answer
|
||||||
|
// ->answers array of answer objects
|
||||||
|
function get_question_data( $question ) {
|
||||||
|
// what to do next depends of question type (qtype)
|
||||||
|
switch ($question->qtype) {
|
||||||
|
case SHORTANSWER:
|
||||||
|
$shortanswer = get_record("quiz_shortanswer","question",$question->id);
|
||||||
|
$question->usecase = $shortanswer->usecase;
|
||||||
|
$question->answers = array();
|
||||||
|
break;
|
||||||
|
case TRUEFALSE:
|
||||||
|
if (!$truefalse = get_record("quiz_truefalse","question",$question->id)) {
|
||||||
|
error( "quiz_truefalse record $question->id not found" );
|
||||||
|
}
|
||||||
|
$question->trueanswer = get_exp_answer( $truefalse->trueanswer );
|
||||||
|
$question->falseanswer = get_exp_answer( $truefalse->falseanswer );
|
||||||
|
break;
|
||||||
|
case MULTICHOICE:
|
||||||
|
if (!$multichoice = get_record("quiz_multichoice","question",$question->id)) {
|
||||||
|
error( "quiz_multichoice $question->id not found" );
|
||||||
|
}
|
||||||
|
$question->layout = $multichoice->layout;
|
||||||
|
$question->single = $multichoice->single;
|
||||||
|
$question->answers = get_exp_answers( $multichoice->question );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error("No handler for question type $question->qtype in get_question");
|
||||||
|
}
|
||||||
|
return $question;
|
||||||
|
}
|
||||||
|
|
||||||
|
// function to return single answer
|
||||||
|
// ->id answer id
|
||||||
|
// ->question question number
|
||||||
|
// ->answer
|
||||||
|
// ->fraction
|
||||||
|
// ->feedback
|
||||||
|
function get_exp_answer( $id ) {
|
||||||
|
if (!$answer = get_record("quiz_answers","id",$id )) {
|
||||||
|
error( "quiz_answers record $id not found" );
|
||||||
|
}
|
||||||
|
return $answer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// function to return array of answers for export
|
||||||
|
function get_exp_answers( $question_num ) {
|
||||||
|
if (!$answers = get_records("quiz_answers","question",$question_num)) {
|
||||||
|
error( "quiz_answers question $question_num not found" );
|
||||||
|
}
|
||||||
|
return $answers;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue