function test_quiz_number_of_questions_in_quiz() { $this->assertEqual(quiz_number_of_questions_in_quiz('0'), 0); $this->assertEqual(quiz_number_of_questions_in_quiz('0,0'), 0); $this->assertEqual(quiz_number_of_questions_in_quiz('0,0,0'), 0); $this->assertEqual(quiz_number_of_questions_in_quiz('1,0'), 1); $this->assertEqual(quiz_number_of_questions_in_quiz('1,2,0'), 2); $this->assertEqual(quiz_number_of_questions_in_quiz('1,0,2,0'), 2); $this->assertEqual(quiz_number_of_questions_in_quiz('1,2,3,0'), 3); $this->assertEqual(quiz_number_of_questions_in_quiz('1,2,3,0'), 3); $this->assertEqual(quiz_number_of_questions_in_quiz('0,1,0,0,2,0'), 2); }
/** * Print the status bar * * @param object $quiz The quiz object of the quiz in question */ function quiz_print_status_bar($quiz) { global $CFG; $bits = array(); $bits[] = html_writer::tag('span', get_string('totalmarksx', 'quiz', quiz_format_grade($quiz, $quiz->sumgrades)), array('class' => 'totalpoints')); $bits[] = html_writer::tag('span', get_string('numquestionsx', 'quiz', quiz_number_of_questions_in_quiz($quiz->questions)), array('class' => 'numberofquestions')); $timenow = time(); // Exact open and close dates for the tool-tip. $dates = array(); if ($quiz->timeopen > 0) { if ($timenow > $quiz->timeopen) { $dates[] = get_string('quizopenedon', 'quiz', userdate($quiz->timeopen)); } else { $dates[] = get_string('quizwillopen', 'quiz', userdate($quiz->timeopen)); } } if ($quiz->timeclose > 0) { if ($timenow > $quiz->timeclose) { $dates[] = get_string('quizclosed', 'quiz', userdate($quiz->timeclose)); } else { $dates[] = get_string('quizcloseson', 'quiz', userdate($quiz->timeclose)); } } if (empty($dates)) { $dates[] = get_string('alwaysavailable', 'quiz'); } $tooltip = implode(', ', $dates);; // Brief summary on the page. if ($timenow < $quiz->timeopen) { $currentstatus = get_string('quizisclosedwillopen', 'quiz', userdate($quiz->timeopen, get_string('strftimedatetimeshort', 'langconfig'))); } else if ($quiz->timeclose && $timenow <= $quiz->timeclose) { $currentstatus = get_string('quizisopenwillclose', 'quiz', userdate($quiz->timeclose, get_string('strftimedatetimeshort', 'langconfig'))); } else if ($quiz->timeclose && $timenow > $quiz->timeclose) { $currentstatus = get_string('quizisclosed', 'quiz'); } else { $currentstatus = get_string('quizisopen', 'quiz'); } $bits[] = html_writer::tag('span', $currentstatus, array('class' => 'quizopeningstatus', 'title' => implode(', ', $dates))); echo html_writer::tag('div', implode(' | ', $bits), array('class' => 'statusbar')); }
/** * Print the status bar * * @param object $quiz The quiz object of the quiz in question */ function quiz_print_status_bar($quiz) { global $CFG; $numberofquestions = quiz_number_of_questions_in_quiz($quiz->questions); ?> <div class="statusbar"><span class="totalpoints"> <?php echo get_string('totalpointsx', 'quiz', quiz_format_grade($quiz, $quiz->sumgrades)); ?> </span> | <span class="numberofquestions"> <?php echo get_string('numquestionsx', 'quiz', $numberofquestions); ?> </span> <?php // Current status of the quiz, with open an close dates as a tool tip. $currentstatus = get_string('quizisopen', 'quiz'); $dates = array(); $timenow = time(); if ($quiz->timeopen > 0) { if ($timenow > $quiz->timeopen) { $dates[] = get_string('quizopenedon', 'quiz', userdate($quiz->timeopen)); } else { $dates[] = get_string('quizwillopen', 'quiz', userdate($quiz->timeopen)); print_string('quizisclosed', 'quiz'); } } if ($quiz->timeclose > 0) { if ($timenow > $quiz->timeclose) { $dates[] = get_string('quizclosed', 'quiz', userdate($quiz->timeclose)); print_string('quizisclosed', 'quiz'); } else { $dates[] = get_string('quizcloseson', 'quiz', userdate($quiz->timeclose)); $currentstatus = get_string('quizisopenwillclose', 'quiz', userdate($quiz->timeclose, get_string('strftimedatetimeshort', 'langconfig'))); } } if (empty($dates)) { $dates[] = get_string('alwaysavailable', 'quiz'); } $dates = implode(', ', $dates); echo ' | <span class="quizopeningstatus" title="' . $dates . '">' . $currentstatus . '</span>'; ?> </div> <?php }