Moodle PHP Documentation 4.5
Moodle 4.5dev (Build: 20240606) (d3ae1391abe)
mod_quiz

Namespaces

namespace  mod_quiz
  
 
namespace  mod_quiz\admin
  
 
namespace  mod_quiz\adminpresets
  
 
namespace  mod_quiz\analytics\indicator
  
 
namespace  mod_quiz\cache
  
 
namespace  mod_quiz\completion
  
 
namespace  mod_quiz\event
  
 
namespace  mod_quiz\external
  
 
namespace  mod_quiz\form
  
 
namespace  mod_quiz\hook
  
 
namespace  mod_quiz\local
  
 
namespace  mod_quiz\local\reports
  
 
namespace  mod_quiz\local\structure
  
 
namespace  mod_quiz\navigation\views
  
 
namespace  mod_quiz\output
  
 
namespace  mod_quiz\output\grades
  
 
namespace  mod_quiz\plugininfo
  
 
namespace  mod_quiz\privacy
  
 
namespace  mod_quiz\question
  
 
namespace  mod_quiz\question\bank
  
 
namespace  mod_quiz\question\bank\filter
  
 
namespace  mod_quiz\search
  
 
namespace  mod_quiz\task
  
 

Classes

class  backup_mod_quiz_access_subplugin
 Base class for backing up all the quiz settings and attempt data for an access rule quiz sub-plugin. More...
 
class  backup_quiz_activity_structure_step
 
class  backup_quiz_activity_task
 Provides the steps to perform one complete backup of the Quiz instance. More...
 
class  behat_mod_quiz_generator
 Behat data generator for mod_quiz. More...
 
class  mod_quiz\access_manager
 
class  mod_quiz\admin\browser_security_setting
 
class  mod_quiz\admin\grade_method_setting
 
class  mod_quiz\admin\overdue_handling_setting
 
class  mod_quiz\admin\review_setting
 
class  mod_quiz\admin\user_image_setting
 
class  mod_quiz\adminpresets\adminpresets_browser_security_setting
 
class  mod_quiz\adminpresets\adminpresets_grade_method_setting
 
class  mod_quiz\adminpresets\adminpresets_overdue_handling_setting
 
class  mod_quiz\adminpresets\adminpresets_review_setting
 
class  mod_quiz\adminpresets\adminpresets_user_image_setting
 
class  mod_quiz\analytics\indicator\activity_base
 Activity base class. More...
 
class  mod_quiz\analytics\indicator\cognitive_depth
 Cognitive depth indicator - quiz. More...
 
class  mod_quiz\analytics\indicator\social_breadth
 Social breadth indicator - quiz. More...
 
class  mod_quiz\cache\overrides
 Class quiz_overrides. More...
 
class  mod_quiz\completion\custom_completion
 
class  mod_quiz\dates
 Class for fetching the important dates in mod_quiz for a given module instance and a user. More...
 
class  mod_quiz\event\attempt_abandoned
 
class  mod_quiz\event\attempt_becameoverdue
 
class  mod_quiz\event\attempt_deleted
 
class  mod_quiz\event\attempt_manual_grading_completed
 
class  mod_quiz\event\attempt_preview_started
 
class  mod_quiz\event\attempt_reopened
 
class  mod_quiz\event\attempt_reviewed
 
class  mod_quiz\event\attempt_submitted
 
class  mod_quiz\event\attempt_summary_viewed
 
class  mod_quiz\event\course_module_instance_list_viewed
 The mod_quiz instance list viewed event class. More...
 
class  mod_quiz\event\course_module_viewed
 The mod_quiz course module viewed event class. More...
 
class  mod_quiz\event\group_override_created
 
class  mod_quiz\event\group_override_deleted
 
class  mod_quiz\event\group_override_updated
 
class  mod_quiz\event\page_break_created
 
class  mod_quiz\event\page_break_deleted
 
class  mod_quiz\event\quiz_grade_item_created
 
class  mod_quiz\event\quiz_grade_item_deleted
 
class  mod_quiz\event\quiz_grade_item_updated
 
class  mod_quiz\event\quiz_grade_updated
 
class  mod_quiz\event\report_viewed
 
class  mod_quiz\event\section_break_created
 
class  mod_quiz\event\section_title_updated
 
class  mod_quiz\event\slot_deleted
 
class  mod_quiz\event\slot_displaynumber_updated
 
class  mod_quiz\event\slot_moved
 
class  mod_quiz\event\slot_requireprevious_updated
 
class  mod_quiz\event\user_override_created
 
class  mod_quiz\event\user_override_deleted
 
class  mod_quiz\event\user_override_updated
 
class  mod_quiz\external\add_random_questions
 
class  mod_quiz\external\create_grade_item_per_section
 
class  mod_quiz\external\create_grade_items
 
class  mod_quiz\external\delete_grade_items
 
class  mod_quiz\external\delete_overrides
 
class  mod_quiz\external\get_edit_grading_page_data
 
class  mod_quiz\external\get_overrides
 
class  mod_quiz\external\get_reopen_attempt_confirmation
 
class  mod_quiz\external\reopen_attempt
 
class  mod_quiz\external\save_overrides
 
class  mod_quiz\external\submit_question_version
 
class  mod_quiz\external\update_filter_condition
 
class  mod_quiz\external\update_grade_items
 
class  mod_quiz\external\update_slots
 
class  mod_quiz\form\add_random_form
 
class  mod_quiz\form\edit_override_form
 
class  mod_quiz\form\preflight_check_form
 
class  mod_quiz\form\randomquestion_form
 Class randomquestion_form. More...
 
class  mod_quiz\grade_calculator
 
class  mod_quiz\group_observers
 Group observers class. More...
 
class  mod_quiz\hook\attempt_state_changed
 
class  mod_quiz\hook\structure_modified
 
class  mod_quiz\local\access_rule_base
 
class  mod_quiz\local\override_cache
 
class  mod_quiz\local\override_manager
 
class  mod_quiz\local\reports\attempts_report
 
class  mod_quiz\local\reports\attempts_report_options
 
class  mod_quiz\local\reports\attempts_report_options_form
 
class  mod_quiz\local\reports\attempts_report_table
 
class  mod_quiz\local\reports\report_base
 
class  mod_quiz\local\structure\slot_random
 
class  mod_quiz\navigation\views\secondary
 
class  mod_quiz\output\attempt_summary_information
 
class  mod_quiz\output\edit_grading_page
 
class  mod_quiz\output\edit_nav_actions
 
class  mod_quiz\output\edit_renderer
 Renderer outputting the quiz editing UI. More...
 
class  mod_quiz\output\grades\grade_out_of
 
class  mod_quiz\output\links_to_other_attempts
 
class  mod_quiz\output\list_of_attempts
 
class  mod_quiz\output\navigation_panel_attempt
 
class  mod_quiz\output\navigation_panel_base
 
class  mod_quiz\output\navigation_panel_review
 
class  mod_quiz\output\navigation_question_button
 
class  mod_quiz\output\navigation_section_heading
 
class  mod_quiz\output\overrides_actions
 
class  mod_quiz\output\question_chooser
 The question_chooser renderable class. More...
 
class  mod_quiz\output\renderer
 
class  mod_quiz\output\view_page
 
class  mod_quiz\plugininfo\quiz
 
class  mod_quiz\plugininfo\quizaccess
 
class  mod_quiz\privacy\helper
 Privacy Subsystem implementation for mod_quiz. More...
 
class  mod_quiz\privacy\provider
 Privacy Subsystem implementation for mod_quiz. More...
 
interface  mod_quiz\privacy\quizaccess_provider
 The quizaccess_provider interface provides the expected interface for all 'quizaccess' quizaccesss. More...
 
interface  mod_quiz\privacy\quizaccess_user_provider
 
class  mod_quiz\question\bank\add_action_column
 
class  mod_quiz\question\bank\custom_view
 Subclass to customise the view of the question bank for the quiz editing screen. More...
 
class  mod_quiz\question\bank\filter\custom_category_condition
 
class  mod_quiz\question\bank\filter\custom_category_condition_helper
 
class  mod_quiz\question\bank\preview_action_column
 
class  mod_quiz\question\bank\qbank_helper
 
class  mod_quiz\question\bank\question_name_column
 
class  mod_quiz\question\bank\question_name_text_column
 
class  mod_quiz\question\bank\quiz_managecategories_feature
 
class  mod_quiz\question\bank\random_question_view
 
class  mod_quiz\question\display_options
 
class  mod_quiz\question\qubaids_for_quiz
 
class  mod_quiz\question\qubaids_for_quiz_user
 
class  mod_quiz\question\qubaids_for_users_attempts
 
class  mod_quiz\quiz_attempt
 
class  mod_quiz\quiz_settings
 
class  mod_quiz\repaginate
 
class  mod_quiz\search\activity
 Search area for mod_quiz activities. More...
 
class  mod_quiz\structure
 
class  mod_quiz\task\quiz_notify_attempt_manual_grading_completed
 
class  mod_quiz\task\update_overdue_attempts
 Update Overdue Attempts Task. More...
 
class  mod_quiz_external
 Quiz external functions. More...
 
class  mod_quiz_generator
 
class  mod_quiz_mod_form
 Settings form for the quiz module. More...
 
class  mod_quiz_overdue_attempt_updater
 
class  moodle1_mod_quiz_handler
 Quiz conversion handler. More...
 
class  moodle_quiz_exception
 Class for quiz exceptions. More...
 
class  restore_mod_quiz_access_subplugin
 Base class for restoring up all the quiz settings and attempt data for an access rule quiz sub-plugin. More...
 
class  restore_quiz_activity_structure_step
 
class  restore_quiz_activity_task
 quiz restore task that provides all the settings and steps to perform one complete restore of the activity More...
 

Functions

 add_one_random_question ($questiongenerator, stdClass $quiz, $override=[])
 Helper method to add random question to quiz.
 
 add_random_questions (int $quizid, int $page, int $categoryid, int $number)
 Add random questions to a quiz, with a filter condition based on a category ID.
 
 mod_quiz::add_random_questions (int $addonpage, int $number, array $filtercondition)
 Add a random question to the quiz at a given point.
 
 mod_quiz::add_section_heading ($pagenumber, $heading=null)
 Add a section heading on a given page and return the sectionid.
 
 add_two_regular_questions ($questiongenerator, stdClass $quiz, $override=null)
 Helper method to add regular questions in quiz.
 
 attempt_quiz (\stdClass $quiz, stdClass $user, $attemptnumber=1)
 Attempt questions for a quiz and user.
 
 backup_quiz (\stdClass $quiz, stdClass $user)
 A helper method to backup test quiz.
 
 build_required_parameters_for_custom_view (array $params, array $extraparams)
 Build required parameters for question bank custom view.
 
 mod_quiz::can_add_random_questions ()
 Whether the current user can add random questions to the quiz or not.
 
 mod_quiz::create_grade_item (stdClass $gradeitemdata)
 Create a grade item.
 
 create_test_quiz (\stdClass $course)
 Create a test quiz for the specified course.
 
 mod_quiz::delete_grade_item (int $gradeitemid)
 Delete a grade item (only if it is not used).
 
 duplicate_quiz ($course, $quiz)
 A helper method to emulate duplication of the quiz.
 
 mod_quiz::formatted_grade_item_sum_marks (int $gradeitemid)
 Get the total of marks of all questions assigned to this grade item, formatted for display.
 
 mod_quiz::get_grade_items ()
 Get the grade items defined for this quiz.
 
 mod_quiz::get_slot_tags_for_slot_id ()
 
 mod_quiz::is_grade_item_used (int $gradeitemid)
 Is a particular quiz grade item used by any slots?
 
 mod_quiz_calculate_question_stats (context $context)
 Implement the calculate_question_stats callback.
 
 mod_quiz_cm_info_dynamic (cm_info $cm)
 Sets dynamic information about a course module.
 
 mod_quiz_core_calendar_event_timestart_updated (\calendar_event $event, stdClass $quiz)
 This function will update the quiz module according to the event that has been modified.
 
 mod_quiz_core_calendar_get_event_action_string (string $eventtype)
 Callback to fetch the activity event type lang string.
 
 mod_quiz_core_calendar_get_valid_event_timestart_range (\calendar_event $event, stdClass $quiz)
 Returns the min and max values for the timestart property of a quiz activity event.
 
 mod_quiz_core_calendar_provide_event_action (calendar_event $event, core_calendar\action_factory $factory, int $userid=0)
 This function receives a calendar event and returns the action associated with it, or null if there is none.
 
 mod_quiz_get_completion_active_rule_descriptions ($cm)
 Callback which returns human-readable strings describing the active completion custom rules for the module instance.
 
 mod_quiz_get_fontawesome_icon_map ()
 Get icon mapping for font-awesome.
 
 mod_quiz_inplace_editable (string $itemtype, int $itemid, string $newvalue)
 In place editable callback for slot displaynumber.
 
 mod_quiz_output_fragment_add_random_question_form ($args)
 Generates the add random question in a fragment output.
 
 mod_quiz_output_fragment_question_data (array $args)
 Question data fragment to get the question html via ajax call.
 
 mod_quiz_output_fragment_quiz_question_bank ($args)
 Generates the question bank in a fragment output.
 
 mod_quiz_user_preferences ()
 Return a list of all the user preferences used by mod_quiz.
 
 quiz_add_instance ($quiz)
 Given an object containing all the necessary data, (defined by the form in mod_form.php) this function will create a new instance and return the id number of the new instance.
 
 quiz_add_quiz_question ($questionid, $quiz, $page=0, $maxmark=null)
 Add a question to a quiz.
 
 quiz_add_random_questions (stdClass $quiz, int $addonpage, int $categoryid, int $number)
 Add a random question to the quiz at a given point.
 
 quiz_after_add_or_update ($quiz)
 This function is called at the end of quiz_add_instance and quiz_update_instance, to do the common processing.
 
 quiz_allows_multiple_tries ($quiz)
 Does this quiz allow multiple tries?
 
 quiz_attempt_save_started ($quizobj, $quba, $attempt)
 The save started question usage and quiz attempt in db and log the started attempt.
 
 quiz_attempt_state ($quiz, $attempt)
 Work out what state this quiz attempt is in - in the sense used by quiz_get_review_options, not in the sense of $attempt->state.
 
 quiz_attempt_state_name ($state)
 Get the human-readable name for a quiz attempt state.
 
 quiz_attempt_submitted_handler ($event)
 Handle the quiz_attempt_submitted event.
 
 quiz_attempt_summary_link_to_reports ($quiz, $cm, $context, $returnzero=false, $currentgroup=0)
 Returns the same as quiz_num_attempt_summary() but wrapped in a link to the quiz reports.
 
 quiz_calculate_best_attempt ($quiz, $attempts)
 Return the attempt with the best grade for a quiz.
 
 quiz_calculate_best_grade ($quiz, $attempts)
 Calculate the overall grade for a quiz given a number of attempts by a particular user.
 
 quiz_check_updates_since (cm_info $cm, $from, $filter=[])
 Check if the module has any update that affects the current user since a given time.
 
 quiz_create_attempt (quiz_settings $quizobj, $attemptnumber, $lastattempt, $timenow, $ispreview=false, $userid=null)
 Creates an object to represent a new attempt at a quiz.
 
 quiz_create_attempt_handling_errors ($attemptid, $cmid=null)
 Get quiz attempt and handling error.
 
 quiz_delete_all_attempts ($quiz)
 Delete all the attempts belonging to a quiz.
 
 quiz_delete_all_overrides ($quiz, $log=true)
 Deletes all quiz overrides from the database and clears any corresponding calendar events.
 
 quiz_delete_attempt ($attempt, $quiz)
 Delete a quiz attempt.
 
 quiz_delete_instance ($id)
 Given an ID of an instance of this module, this function will permanently delete the instance and any data that depends on it.
 
 quiz_delete_override ($quiz, $overrideid, $log=true)
 Deletes a quiz override from the database and clears any corresponding calendar events.
 
 quiz_delete_previews ($quiz, $userid=null)
 Delete all the preview attempts at a quiz, or possibly all the attempts belonging to one user.
 
 quiz_delete_references ($quizid)
 Delete all question references for a quiz.
 
 quiz_delete_user_attempts ($quiz, $user)
 Delete all the attempts belonging to a user in a particular quiz.
 
 quiz_extend_settings_navigation (settings_navigation $settings, navigation_node $quiznode)
 This function extends the settings navigation block for the site.
 
 quiz_feedback_for_grade ($grade, $quiz, $context)
 Get the feedback text that should be show to a student who got this grade on this quiz.
 
 quiz_feedback_record_for_grade ($grade, $quiz)
 Get the feedback object for this grade on this quiz.
 
 quiz_format_grade ($quiz, $grade)
 Round a grade to the correct number of decimal places, and format it for display.
 
 quiz_format_question_grade ($quiz, $grade)
 Round a grade to the correct number of decimal places, and format it for display.
 
 quiz_get_attempt_usertime_sql ($redundantwhereclauses='')
 Returns SQL to compute timeclose and timelimit for every attempt, taking into account user and group overrides.
 
 quiz_get_best_grade ($quiz, $userid)
 Get the best current grade for a particular user in a quiz.
 
 quiz_get_combined_reviewoptions ($quiz, $attempts)
 Combines the review options from a number of different quiz attempts.
 
 quiz_get_completion_state ()
 
 quiz_get_coursemodule_info ($coursemodule)
 Add a get_coursemodule_info function in case any quiz type wants to add 'extra' information for the course (see resource).
 
 quiz_get_extra_capabilities ()
 
 quiz_get_flag_option ($attempt, $context)
 
 quiz_get_grade_format ($quiz)
 Determine the correct number of decimal places required to format a grade.
 
 quiz_get_grading_option_name ($option)
 
 quiz_get_grading_options ()
 
 quiz_get_group_override_priorities ($quizid)
 Calculates the priorities of timeopen and timeclose values for group overrides for a quiz.
 
 quiz_get_js_module ()
 Get the information about the standard quiz JavaScript module.
 
 quiz_get_navigation_options ()
 
 quiz_get_overdue_handling_options ()
 
 quiz_get_post_actions ()
 List the actions that correspond to a post of this module.
 
 quiz_get_recent_mod_activity (&$activities, &$index, $timestart, $courseid, $cmid, $userid=0, $groupid=0)
 Returns all quiz graded users since a given time for specified quiz.
 
 quiz_get_review_options ($quiz, $attempt, $context)
 The appropriate display_options object for this attempt at this quiz right now.
 
 quiz_get_user_attempt_unfinished ($quizid, $userid)
 Returns an unfinished attempt (if there is one) for the given user on the given quiz.
 
 quiz_get_user_attempts ($quizids, $userid, $status='finished', $includepreviews=false)
 
 quiz_get_user_grades ($quiz, $userid=0)
 Return grade for given user or all users.
 
 quiz_get_user_image_options ()
 Get the choices for what size user picture to show.
 
 quiz_get_user_timeclose ($courseid)
 Return an user's timeclose for all quizzes in a course, hereby taking into account group and user overrides.
 
 quiz_get_view_actions ()
 List the actions that correspond to a view of this module.
 
 quiz_grade_item_delete ($quiz)
 Delete grade item for given quiz.
 
 quiz_grade_item_update ($quiz, $grades=null)
 Create or update the grade item for given quiz.
 
 quiz_has_attempts ($quizid)
 
 quiz_has_feedback ($quiz)
 
 quiz_has_grades ($quiz)
 Is this a graded quiz? If this method returns true, you can assume that $quiz->grade and $quiz->sumgrades are non-zero (for example, if you want to divide by them).
 
 quiz_has_question_use ($quiz, $slot)
 Verify that the question exists, and the user has permission to use it.
 
 quiz_has_questions ($quizid)
 Are there any questions in this quiz?
 
 quiz_is_overriden_calendar_event (\calendar_event $event)
 Check if the given calendar_event is either a user or group override event for quiz.
 
 quiz_no_questions_message ($quiz, $cm, $context)
 Generate a message saying that this quiz has no questions, with a button to go to the edit page, if the user has the right capability.
 
 quiz_num_attempt_summary ($quiz, $cm, $returnzero=false, $currentgroup=0)
 Return a textual summary of the number of attempts that have been made at a particular quiz, returns '' if no attempts have been made yet, unless $returnzero is passed as true.
 
 quiz_override_summary (stdClass $quiz, cm_info|stdClass $cm, int $currentgroup=0)
 Return summary of the number of settings override that exist.
 
 quiz_page_type_list ($pagetype, $parentcontext, $currentcontext)
 Return a list of page types.
 
 quiz_pluginfile ($course, $cm, $context, $filearea, $args, $forcedownload, array $options=[])
 Serves the quiz files.
 
 quiz_prepare_and_start_new_attempt (quiz_settings $quizobj, $attemptnumber, $lastattempt, $offlineattempt=false, $forcedrandomquestions=[], $forcedvariants=[], $userid=null)
 Prepare and start a new attempt deleting the previous preview attempts.
 
 quiz_print_recent_mod_activity ($activity, $courseid, $detail, $modnames)
 
 quiz_process_group_deleted_in_course ($courseid)
 Logic to happen when a/some group(s) has/have been deleted in a course.
 
 quiz_process_options ($quiz)
 Pre-process the quiz options form data, making any necessary adjustments.
 
 quiz_question_action_icons ($quiz, $cmid, $question, $returnurl, $variant=null)
 
 quiz_question_edit_button ($cmid, $question, $returnurl, $contentaftericon='')
 
 quiz_question_pluginfile ($course, $context, $component, $filearea, $qubaid, $slot, $args, $forcedownload, array $options=[])
 Called via pluginfile.php -> question_pluginfile to serve files belonging to a question in a question_attempt when that attempt is a quiz attempt.
 
 quiz_question_preview_button ($quiz, $question, $label=false, $variant=null, $random=null)
 
 quiz_question_preview_url ($quiz, $question, $variant=null, $restartversion=null)
 
 quiz_question_tostring ($question, $showicon=false, $showquestiontext=true, $showidnumber=false, $showtags=false)
 Creates a textual representation of a question for display.
 
 quiz_questions_in_use ($questionids)
 Standard callback used by questions_in_use.
 
 quiz_questions_per_page_options ()
 Get the choices to offer for the 'Questions per page' option.
 
 quiz_refresh_events ($courseid=0, $instance=null, $cm=null)
 This standard function will check all instances of this module and make sure there are up-to-date events created for each of them.
 
 quiz_repaginate_questions ($quizid, $slotsperpage)
 Repaginate the questions in a quiz.
 
 quiz_report_can_filter_only_graded ($quiz)
 
 quiz_report_default_report ($context)
 Get the default report for the current user.
 
 quiz_report_download_filename ($report, $courseshortname, $quizname)
 Create a filename for use when downloading data from a quiz report.
 
 quiz_report_feedback_for_grade ($grade, $quizid, $context)
 Get the feedback text for a grade on this quiz.
 
 quiz_report_get_significant_questions ($quiz)
 Get the slots of real questions (not descriptions) in this quiz, in order.
 
 quiz_report_grade_bands ($bandwidth, $bands, $quizid, core\dml\sql_join $usersjoins=null)
 Get the number of students whose score was in a particular band for this quiz.
 
 quiz_report_grade_method_sql ($grademethod, $quizattemptsalias='quiza')
 Given a quiz grading method return sql to test if this is an attempt that will be contribute towards the grade of the user.
 
 quiz_report_highlighting_grading_method ($quiz, $qmsubselect, $qmfilter)
 
 quiz_report_index_by_keys ($datum, $keys, $keysunique=true)
 Takes an array of objects and constructs a multidimensional array keyed by the keys it finds on the object.
 
 quiz_report_list ($context)
 Returns an array of reports to which the current user has access to.
 
 quiz_report_qm_filter_select ($quiz, $quizattemptsalias='quiza')
 This is a wrapper for quiz_report_grade_method_sql that takes the whole quiz object instead of just the grading method as a param.
 
 quiz_report_scale_summarks_as_percentage ($rawmark, $quiz, $round=true)
 Format a number as a percentage out of $quiz->sumgrades.
 
 quiz_report_should_show_grades ($quiz, context $context)
 Should the grades be displayed in this report.
 
 quiz_report_unindex ($datum)
 
 quiz_require_question_use ($questionid)
 Verify that the question exists, and the user has permission to use it.
 
 quiz_rescale_grade ($rawgrade, $quiz, $format=true)
 Convert the raw grade stored in $attempt into a grade out of the maximum grade for this quiz.
 
 quiz_reset_course_form_defaults ($course)
 Course reset form defaults.
 
 quiz_reset_course_form_definition ($mform)
 Implementation of the function for printing the form elements that control whether the course reset functionality affects the quiz.
 
 quiz_reset_gradebook ($courseid, $type='')
 Removes all grades from gradebook.
 
 quiz_reset_userdata ($data)
 Actual implementation of the reset course functionality, delete all the quiz attempts for course $data->courseid, if $data->reset_quiz_attempts is set and true.
 
 quiz_retrieve_tags_for_slot_ids ()
 
 quiz_review_option_form_to_db ($fromform, $field)
 Helper function for quiz_process_options().
 
 quiz_save_best_grade ($quiz, $userid=null, $attempts=[])
 Save the overall grade for a user at a quiz in the quiz_grades table.
 
 quiz_send_confirmation ($recipient, $a, $studentisonline)
 Sends a confirmation message to the student confirming that the attempt was processed.
 
 quiz_send_notification ($recipient, $submitter, $a)
 Sends notification messages to the interested parties that assign the role capability.
 
 quiz_send_notification_messages ($course, $quiz, $attempt, $context, $cm, $studentisonline)
 Send all the requried messages when a quiz attempt is submitted.
 
 quiz_send_notify_manual_graded_message (quiz_attempt $attemptobj, object $userto)
 Send the notification message when a quiz attempt has been manual graded.
 
 quiz_send_overdue_message ($attemptobj)
 Send the notification message when a quiz attempt becomes overdue.
 
 quiz_set_grade ($newgrade, $quiz)
 The quiz grade is the maximum that student's results are marked out of.
 
 quiz_start_attempt_built_on_last ($quba, $attempt, $lastattempt)
 Start a subsequent new attempt, in each attempt builds on last mode.
 
 quiz_start_new_attempt ($quizobj, $quba, $attempt, $attemptnumber, $timenow, $questionids=[], $forcedvariantsbyslot=[])
 Start a normal, new, quiz attempt.
 
 quiz_supports ($feature)
 
 quiz_update_all_attempt_sumgrades ($quiz)
 Update the sumgrades field of the attempts at a quiz.
 
 quiz_update_all_final_grades ($quiz)
 Update the final grade at this quiz for all students.
 
 quiz_update_effective_access ($quiz, $userid)
 Updates a quiz object with override information for a user.
 
 quiz_update_events ($quiz, $override=null)
 This function updates the events associated to the quiz.
 
 quiz_update_grades ($quiz, $userid=0, $nullifnone=true)
 Update grades in central gradebook.
 
 quiz_update_instance ($quiz, $mform)
 Given an object containing all the necessary data, (defined by the form in mod_form.php) this function will update an existing instance with new data.
 
 quiz_update_open_attempts (array $conditions)
 Efficiently update check state time on all open attempts.
 
 quiz_update_section_firstslots ($quizid, $direction, $afterslot, $beforeslot=null)
 Move all the section headings in a certain slot range by a certain offset.
 
 quiz_update_sumgrades ($quiz)
 Update the sumgrades field of the quiz.
 
 quiz_user_complete ($course, $user, $mod, $quiz)
 Print a detailed representation of what a user has done with a given particular instance of this module, for user activity reports.
 
 quiz_user_outline ($course, $user, $mod, $quiz)
 Return a small object with summary information about what a user has done with a given particular instance of this module Used for user activity reports.
 
 quiz_validate_new_attempt (quiz_settings $quizobj, access_manager $accessmanager, $forcenew, $page, $redirect)
 Validate permissions for creating a new attempt and start a new preview attempt if required.
 
 quiz_view ($quiz, $course, $cm, $context)
 Mark the activity completed (if required) and trigger the course_module_viewed event.
 
 mod_quiz::refresh_page_numbers ($slots=[])
 Refresh page numbering of quiz slots.
 
 mod_quiz::refresh_page_numbers_and_update_db ()
 Refresh page numbering of quiz slots and save to the database.
 
 mod_quiz::remove_section_heading ($sectionid)
 Remove the section heading with the given id.
 
 mod_quiz::remove_slot ($slotnumber)
 Remove a slot from a quiz.
 
 restore_quiz (string $backupid, stdClass $course, stdClass $user)
 A helper method to restore provided backup.
 
 mod_quiz::set_section_heading ($id, $newheading)
 Change the heading for a section.
 
 mod_quiz::set_section_shuffle ($id, $shuffle)
 Change the shuffle setting for a section.
 
 mod_quiz::unset_question ($slotid)
 Unset the question object after deletion.
 
 mod_quiz::update_grade_item (stdClass $gradeitemdata)
 Update a grade item.
 
 mod_quiz::update_page_break ($slotid, $type)
 Add/Remove a pagebreak.
 
 mod_quiz::update_question_dependency ($slotid, $requireprevious)
 Set whether the question in a particular slot requires the previous one.
 
 mod_quiz::update_slot_display_number (int $slotid, string $displaynumber)
 Update the question display number when is set as customised display number or empy string.
 
 mod_quiz::update_slot_grade_item (stdClass $slot, ?int $gradeitemid)
 Change which grade this slot contributes to, for quizzes with multiple grades.
 
 mod_quiz::update_slot_maxmark ($slot, $maxmark)
 Change the max mark for a slot.
 
 mod_quiz::verify_grade_item_is_ours (int $gradeitemid)
 Check the grade item with the given id belongs to this quiz.
 
 xmldb_quiz_upgrade ($oldversion)
 Quiz module upgrade function.
 

Variables

 $capabilities
 
global mod_quiz\task::$CFG
 
 $definitions
 
 $functions
 
 $logs
 
 $messageproviders
 
 $observers
 
 $plugin = 2024041600
 
stdClass $quiz
 $quiz A test quiz.
 
 $quizsettings = new admin_settingpage('modsettingquiz', $pagetitle, 'moodle/site:config')
 
 $renamedclasses
 
 $reports = core_component::get_plugin_list_with_file('quiz', 'settings.php', false)
 
 $reportsbyname = []
 
 $rules = core_component::get_plugin_list_with_file('quizaccess', 'settings.php', false)
 
 $rulesbyname = []
 
foreach( $reportsbyname as $strreportname=> $report) foreach($rulesbyname as $strrulename=> $rule) $settings = null
 
 $tasks
 
stdClass $user
 $user A test logged-in user.
 
$plugin component = 'mod_quiz'
 
if(empty($reportsbyname) &&empty($rulesbyname)) else
 
 if (!defined( 'MOODLE_INTERNAL'))
 
const QUIZ_ATTEMPTFIRST '3'
 
const QUIZ_ATTEMPTLAST '4'
 
const QUIZ_EVENT_TYPE_CLOSE 'close'
 
const QUIZ_EVENT_TYPE_OPEN 'open'
 #-
 
const QUIZ_GRADEAVERAGE '2'
 
const QUIZ_GRADEHIGHEST '1'
 #-
 
const QUIZ_MAX_ATTEMPT_OPTION 10
 #+ Option controlling what options are offered on the quiz settings form.
 
const QUIZ_MAX_DECIMAL_OPTION 5
 
const QUIZ_MAX_EVENT_LENGTH 5*24*60*60
 #-
 
const QUIZ_MAX_Q_DECIMAL_OPTION 7
 
const QUIZ_MAX_QPP_OPTION 50
 
const QUIZ_MIN_TIME_TO_CONTINUE '2'
 If there are fewer than this many seconds left when the student submits a page of the quiz, then do not take them to the next page of the quiz.
 
const QUIZ_NAVMETHOD_FREE 'free'
 #+ Options for navigation method within quizzes.
 
const QUIZ_NAVMETHOD_SEQ 'sequential'
 
trait quiz_question_helper_test_trait
 
const QUIZ_SHOW_TIME_BEFORE_DEADLINE '3600'
 We show the countdown timer if there is less than this amount of time left before the the quiz close date.
 
const QUIZ_SHOWIMAGE_LARGE 2
 We show Large image when user selects Large image from dropdown menu in quiz settings.
 
const QUIZ_SHOWIMAGE_NONE 0
 We show no image when user selects No image from dropdown menu in quiz settings.
 
const QUIZ_SHOWIMAGE_SMALL 1
 We show small image when user selects small image from dropdown menu in quiz settings.
 
$plugin version = 2024042200
 

Detailed Description

Function Documentation

◆ add_one_random_question()

add_one_random_question ( $questiongenerator,
stdClass $quiz,
$override = [] )
protected

Helper method to add random question to quiz.

Parameters
component_generator_base$questiongenerator
stdClass$quiz
array$override

◆ add_random_questions() [1/2]

add_random_questions ( int $quizid,
int $page,
int $categoryid,
int $number )
protected

Add random questions to a quiz, with a filter condition based on a category ID.

Parameters
int$quizidThe quiz to add the questions to.
int$pageThe page number to add the questions to.
int$categoryidThe category ID to use for the filter condition.
int$numberThe number of questions to add.
Return values
void

◆ add_random_questions() [2/2]

mod_quiz\add_random_questions ( int $addonpage,
int $number,
array $filtercondition )

Add a random question to the quiz at a given point.

Parameters
int$addonpagethe page on which to add the question.
int$numberthe number of random questions to add.
array$filterconditionthe filter condition. Must contain at least a category filter.

◆ add_section_heading()

mod_quiz\add_section_heading ( $pagenumber,
$heading = null )

Add a section heading on a given page and return the sectionid.

Parameters
int$pagenumberthe number of the page where the section heading begins.
string | null$headingthe heading to add. If not given, a default is used.

◆ add_two_regular_questions()

add_two_regular_questions ( $questiongenerator,
stdClass $quiz,
$override = null )
protected

Helper method to add regular questions in quiz.

Parameters
component_generator_base$questiongenerator
stdClass$quiz
array$override

◆ attempt_quiz()

attempt_quiz ( \stdClass $quiz,
stdClass $user,
$attemptnumber = 1 )
protected

Attempt questions for a quiz and user.

Parameters
stdClass$quizQuiz to attempt.
stdClass$userA user to attempt the quiz.
int$attemptnumber
Return values
array

◆ backup_quiz()

backup_quiz ( \stdClass $quiz,
stdClass $user )
protected

A helper method to backup test quiz.

Parameters
stdClass$quizQuiz to attempt.
stdClass$userA user to attempt the quiz.
Return values
stringA backup ID ready to be restored.

◆ build_required_parameters_for_custom_view()

build_required_parameters_for_custom_view ( array $params,
array $extraparams )

Build required parameters for question bank custom view.

Parameters
array$paramsthe page parameters
array$extraparamsadditional parameters
Return values
array

◆ can_add_random_questions()

mod_quiz\can_add_random_questions ( )

Whether the current user can add random questions to the quiz or not.

It is only possible to add a random question if the user has the moodle/question:useall capability on at least one of the contexts related to the one where we are currently editing questions.

Return values
bool

◆ create_grade_item()

mod_quiz\create_grade_item ( stdClass $gradeitemdata)

Create a grade item.

The new grade item is added at the end of the order.

Parameters
stdClass$gradeitemdatamust have property name - updated with the inserted data (sortorder and id).

◆ create_test_quiz()

create_test_quiz ( \stdClass $course)
protected

Create a test quiz for the specified course.

Parameters
stdClass$course
Return values
stdClass

◆ delete_grade_item()

mod_quiz\delete_grade_item ( int $gradeitemid)

Delete a grade item (only if it is not used).

Parameters
int$gradeitemidid of the grade item to delete. Must belong to this quiz.

◆ duplicate_quiz()

duplicate_quiz ( $course,
$quiz )
protected

A helper method to emulate duplication of the quiz.

Parameters
stdClass$course
stdClass$quiz
Return values
cm_info|null

◆ formatted_grade_item_sum_marks()

mod_quiz\formatted_grade_item_sum_marks ( int $gradeitemid)

Get the total of marks of all questions assigned to this grade item, formatted for display.

Parameters
int$gradeitemidid of a quiz grade item belonging to this quiz.
Return values
stringtotal of marks of all questions assigned to this grade item.

◆ get_grade_items()

mod_quiz\get_grade_items ( )

Get the grade items defined for this quiz.

Return values
stdClass[]quiz_grade_item rows, indexed by id.

◆ get_slot_tags_for_slot_id()

mod_quiz\get_slot_tags_for_slot_id ( )

◆ is_grade_item_used()

mod_quiz\is_grade_item_used ( int $gradeitemid)

Is a particular quiz grade item used by any slots?

Parameters
int$gradeitemidid of a quiz grade item belonging to this quiz.
Return values
booltrue if it is used.

◆ mod_quiz_calculate_question_stats()

mod_quiz_calculate_question_stats ( context $context)

Implement the calculate_question_stats callback.

This enables quiz statistics to be shown in statistics columns in the database.

Parameters
context$contextreturn the statistics related to this context (which will be a quiz context).
Return values
all_calculated_for_qubaid_condition|nullThe statistics for this quiz, if available, else null.

◆ mod_quiz_cm_info_dynamic()

mod_quiz_cm_info_dynamic ( cm_info $cm)

Sets dynamic information about a course module.

This function is called from cm_info when displaying the module

Parameters
cm_info$cm

◆ mod_quiz_core_calendar_event_timestart_updated()

mod_quiz_core_calendar_event_timestart_updated ( \calendar_event $event,
stdClass $quiz )

This function will update the quiz module according to the event that has been modified.

It will set the timeopen or timeclose value of the quiz instance according to the type of event provided.

Exceptions
moodle_exception
Parameters
calendar_event$eventA quiz activity calendar event
stdClass$quizA quiz activity instance

◆ mod_quiz_core_calendar_get_event_action_string()

mod_quiz_core_calendar_get_event_action_string ( string $eventtype)

Callback to fetch the activity event type lang string.

Parameters
string$eventtypeThe event type.
Return values
lang_stringThe event type lang string.

◆ mod_quiz_core_calendar_get_valid_event_timestart_range()

mod_quiz_core_calendar_get_valid_event_timestart_range ( \calendar_event $event,
stdClass $quiz )

Returns the min and max values for the timestart property of a quiz activity event.

The min and max values will be the timeopen and timeclose properties of the quiz, respectively, if they are set.

If either value isn't set then null will be returned instead to indicate that there is no cutoff for that value.

If the vent has no valid timestart range then [false, false] will be returned. This is the case for overriden events.

A minimum and maximum cutoff return value will look like: [ [1505704373, 'The date must be after this date'], [1506741172, 'The date must be before this date'] ]

Exceptions
moodle_exception
Parameters
calendar_event$eventThe calendar event to get the time range for
stdClass$quizThe module instance to get the range from
Return values
array

◆ mod_quiz_core_calendar_provide_event_action()

mod_quiz_core_calendar_provide_event_action ( calendar_event $event,
core_calendar\action_factory $factory,
int $userid = 0 )

This function receives a calendar event and returns the action associated with it, or null if there is none.

This is used by block_myoverview in order to display the event appropriately. If null is returned then the event is not displayed on the block.

Parameters
calendar_event$event
core_calendar\action_factory$factory
int$useridUser id to use for all capability checks, etc. Set to 0 for current user (default).
Return values
core_calendar\local\event\entities\action_interface|null

◆ mod_quiz_get_completion_active_rule_descriptions()

mod_quiz_get_completion_active_rule_descriptions ( $cm)

Callback which returns human-readable strings describing the active completion custom rules for the module instance.

Parameters
cm_info | stdClass$cmobject with fields ->completion and ->customdata['customcompletionrules']
Return values
array\$descriptionsthe array of descriptions for the custom rules.

◆ mod_quiz_inplace_editable()

mod_quiz_inplace_editable ( string $itemtype,
int $itemid,
string $newvalue )

In place editable callback for slot displaynumber.

Parameters
string$itemtypeslotdisplarnumber
int$itemidthe id of the slot in the quiz_slots table
string$newvaluethe new value for displaynumber field for a given slot in the quiz_slots table
Return values
core\output\inplace_editable|void

◆ mod_quiz_output_fragment_add_random_question_form()

mod_quiz_output_fragment_add_random_question_form ( $args)

Generates the add random question in a fragment output.

This allows the form to be rendered in javascript, for example inside a modal.

The required arguments as keys in the $args array are: cat {string} The category and category context ids comma separated. addonpage {int} The page id to add this question to. returnurl {string} URL to return to after form submission. cmid {int} The course module id the questions are being added to.

Parameters
array$argsThe fragment arguments.
Return values
stringThe rendered mform fragment.

◆ mod_quiz_output_fragment_question_data()

mod_quiz_output_fragment_question_data ( array $args)

Question data fragment to get the question html via ajax call.

Parameters
array$args
Return values
string

◆ mod_quiz_output_fragment_quiz_question_bank()

mod_quiz_output_fragment_quiz_question_bank ( $args)

Generates the question bank in a fragment output.

This allows the question bank to be displayed in a modal.

The only expected argument provided in the $args array is 'querystring'. The value should be the list of parameters URL encoded and used to build the question bank page.

The individual list of parameters expected can be found in question_build_edit_resources.

Parameters
array$argsThe fragment arguments.
Return values
stringThe rendered mform fragment.

◆ mod_quiz_user_preferences()

mod_quiz_user_preferences ( )

Return a list of all the user preferences used by mod_quiz.

@uses core_user\is_current_user

Return values
array[]

◆ quiz_add_instance()

quiz_add_instance ( $quiz)

Given an object containing all the necessary data, (defined by the form in mod_form.php) this function will create a new instance and return the id number of the new instance.

Parameters
stdClass$quizthe data that came from the form.
Return values
mixedthe id of the new instance on success, false or a string error message on failure.

◆ quiz_add_quiz_question()

quiz_add_quiz_question ( $questionid,
$quiz,
$page = 0,
$maxmark = null )

Add a question to a quiz.

Adds a question to a quiz by updating $quiz as well as the quiz and quiz_slots tables. It also adds a page break if required.

Parameters
int$questionidThe id of the question to be added
stdClass$quizThe extended quiz object as used by edit.php This is updated by this function
int$pageWhich page in quiz to add the question on. If 0 (default), add at the end
float$maxmarkThe maximum mark to set for this question. (Optional, defaults to question.defaultmark.
Return values
boolfalse if the question was already in the quiz

◆ quiz_add_random_questions()

quiz_add_random_questions ( stdClass $quiz,
int $addonpage,
int $categoryid,
int $number )

Add a random question to the quiz at a given point.

Parameters
stdClass$quizthe quiz settings.
int$addonpagethe page on which to add the question.
int$categoryidthe question category to add the question from.
int$numberthe number of random questions to add.
Deprecated
Since Moodle 4.3 MDL-72321
Todo
Final deprecation in Moodle 4.7 MDL-78091

◆ quiz_after_add_or_update()

quiz_after_add_or_update ( $quiz)

This function is called at the end of quiz_add_instance and quiz_update_instance, to do the common processing.

Parameters
stdClass$quizthe quiz object.

◆ quiz_allows_multiple_tries()

quiz_allows_multiple_tries ( $quiz)

Does this quiz allow multiple tries?

Return values
bool

◆ quiz_attempt_save_started()

quiz_attempt_save_started ( $quizobj,
$quba,
$attempt )

The save started question usage and quiz attempt in db and log the started attempt.

Parameters
quiz_settings$quizobj
question_usage_by_activity$quba
stdClass$attempt
Return values
stdClassattempt object with uniqueid and id set.

◆ quiz_attempt_state()

quiz_attempt_state ( $quiz,
$attempt )

Work out what state this quiz attempt is in - in the sense used by quiz_get_review_options, not in the sense of $attempt->state.

Parameters
stdClass$quizthe quiz settings
stdClass$attemptthe quiz_attempt database row.
Return values
intone of the display_options\DURING, IMMEDIATELY_AFTER, LATER_WHILE_OPEN or AFTER_CLOSE constants.

◆ quiz_attempt_state_name()

quiz_attempt_state_name ( $state)

Get the human-readable name for a quiz attempt state.

Parameters
string$stateone of the state constants like {
See also
quiz_attempt\IN_PROGRESS}.
Return values
stringThe lang string to describe that state.

◆ quiz_attempt_submitted_handler()

quiz_attempt_submitted_handler ( $event)

Handle the quiz_attempt_submitted event.

This sends the confirmation and notification messages, if required.

Parameters
attempt_submitted$eventthe event object.

◆ quiz_attempt_summary_link_to_reports()

quiz_attempt_summary_link_to_reports ( $quiz,
$cm,
$context,
$returnzero = false,
$currentgroup = 0 )

Returns the same as quiz_num_attempt_summary() but wrapped in a link to the quiz reports.

Parameters
stdClass$quizthe quiz object. Only $quiz->id is used at the moment.
stdClass$cmthe cm object. Only $cm->course, $cm->groupmode and $cm->groupingid fields are used at the moment.
stdClass$contextthe quiz context.
bool$returnzeroif false (default), when no attempts have been made '' is returned instead of 'Attempts: 0'.
int$currentgroupif there is a concept of current group where this method is being called (e.g. a report) pass it in here. Default 0 which means no current group.
Return values
stringHTML fragment for the link.

◆ quiz_calculate_best_attempt()

quiz_calculate_best_attempt ( $quiz,
$attempts )

Return the attempt with the best grade for a quiz.

Which attempt is the best depends on $quiz->grademethod. If the grade method is GRADEAVERAGE then this function simply returns the last attempt.

Return values
stdClassThe attempt with the best grade
Parameters
stdClass$quizThe quiz for which the best grade is to be calculated
array$attemptsAn array of all the attempts of the user at the quiz
Deprecated
since Moodle 4.2. No direct replacement.
Todo
MDL-76612 Final deprecation in Moodle 4.6

◆ quiz_calculate_best_grade()

quiz_calculate_best_grade ( $quiz,
$attempts )

Calculate the overall grade for a quiz given a number of attempts by a particular user.

Parameters
stdClass$quizthe quiz settings object.
array$attemptsan array of all the user's attempts at this quiz in order.
Return values
floatthe overall grade
Deprecated
since Moodle 4.2. No direct replacement.
Todo
MDL-76612 Final deprecation in Moodle 4.6

◆ quiz_check_updates_since()

quiz_check_updates_since ( cm_info $cm,
$from,
$filter = [] )

Check if the module has any update that affects the current user since a given time.

Parameters
cm_info$cmcourse module data
int$fromthe time to check updates from
array$filterif we need to check only specific updates
Return values
stdClassan object with the different type of areas indicating if they were updated or not
Since
Moodle 3.2

◆ quiz_create_attempt()

quiz_create_attempt ( quiz_settings $quizobj,
$attemptnumber,
$lastattempt,
$timenow,
$ispreview = false,
$userid = null )

Creates an object to represent a new attempt at a quiz.

Creates an attempt object to represent an attempt at the quiz by the current user starting at the current time. The ->id field is not set. The object is NOT written to the database.

Parameters
quiz_settings$quizobjthe quiz object to create an attempt for.
int$attemptnumberthe sequence number for the attempt.
stdClass | false$lastattemptthe previous attempt by this user, if any. Only needed if $attemptnumber > 1 and $quiz->attemptonlast is true.
int$timenowthe time the attempt was started at.
bool$ispreviewwhether this new attempt is a preview.
int | null$useridthe id of the user attempting this quiz.
Return values
stdClassthe newly created attempt object.

◆ quiz_create_attempt_handling_errors()

quiz_create_attempt_handling_errors ( $attemptid,
$cmid = null )

Get quiz attempt and handling error.

Parameters
int$attemptidthe id of the current attempt.
int | null$cmidthe course_module id for this quiz.
Return values
quiz_attemptall the data about the quiz attempt.

◆ quiz_delete_all_attempts()

quiz_delete_all_attempts ( $quiz)

Delete all the attempts belonging to a quiz.

Parameters
stdClass$quizThe quiz object.

◆ quiz_delete_all_overrides()

quiz_delete_all_overrides ( $quiz,
$log = true )

Deletes all quiz overrides from the database and clears any corresponding calendar events.

Deprecated
since Moodle 4.4
Todo
MDL-80944 Final deprecation in Moodle 4.8
Parameters
stdClass$quizThe quiz object.
bool$logWhether to trigger logs.

◆ quiz_delete_attempt()

quiz_delete_attempt ( $attempt,
$quiz )

Delete a quiz attempt.

Parameters
mixed$attemptan integer attempt id or an attempt object (row of the quiz_attempts table).
stdClass$quizthe quiz object.

◆ quiz_delete_instance()

quiz_delete_instance ( $id)

Given an ID of an instance of this module, this function will permanently delete the instance and any data that depends on it.

Parameters
int$idthe id of the quiz to delete.
Return values
boolsuccess or failure.

◆ quiz_delete_override()

quiz_delete_override ( $quiz,
$overrideid,
$log = true )

Deletes a quiz override from the database and clears any corresponding calendar events.

Deprecated
since Moodle 4.4
Todo
MDL-80944 Final deprecation in Moodle 4.8
Parameters
stdClass$quizThe quiz object.
int$overrideidThe id of the override being deleted
bool$logWhether to trigger logs.
Return values
booltrue on success

◆ quiz_delete_previews()

quiz_delete_previews ( $quiz,
$userid = null )

Delete all the preview attempts at a quiz, or possibly all the attempts belonging to one user.

Parameters
stdClass$quizthe quiz object.
int$userid(optional) if given, only delete the previews belonging to this user.

◆ quiz_delete_references()

quiz_delete_references ( $quizid)

Delete all question references for a quiz.

Parameters
int$quizidThe id of quiz.

◆ quiz_delete_user_attempts()

quiz_delete_user_attempts ( $quiz,
$user )

Delete all the attempts belonging to a user in a particular quiz.

Parameters
mod_quiz\quiz_settings$quizThe quiz object.
stdClass$userThe user object.

◆ quiz_extend_settings_navigation()

quiz_extend_settings_navigation ( settings_navigation $settings,
navigation_node $quiznode )

This function extends the settings navigation block for the site.

It is safe to rely on PAGE here as we will only ever be within the module context when this is called

Parameters
settings_navigation$settings
navigation_node$quiznode
Return values
void

◆ quiz_feedback_for_grade()

quiz_feedback_for_grade ( $grade,
$quiz,
$context )

Get the feedback text that should be show to a student who got this grade on this quiz.

The feedback is processed ready for diplay.

Parameters
float$gradea grade on this quiz.
stdClass$quizthe quiz settings.
context_module$contextthe quiz context.
Return values
stringthe comment that corresponds to this grade (empty string if there is not one.

◆ quiz_feedback_record_for_grade()

quiz_feedback_record_for_grade ( $grade,
$quiz )

Get the feedback object for this grade on this quiz.

Parameters
float$gradea grade on this quiz.
stdClass$quizthe quiz settings.
Return values
false|stdClassthe record object or false if there is not feedback for the given grade
Since
Moodle 3.1

◆ quiz_format_grade()

quiz_format_grade ( $quiz,
$grade )

Round a grade to the correct number of decimal places, and format it for display.

Parameters
stdClass$quizThe quiz table row, only $quiz->decimalpoints is used.
float | null$gradeThe grade to round and display (or null meaning no grade).
Return values
string

◆ quiz_format_question_grade()

quiz_format_question_grade ( $quiz,
$grade )

Round a grade to the correct number of decimal places, and format it for display.

Parameters
stdClass$quizThe quiz table row, only $quiz->decimalpoints is used.
float$gradeThe grade to round.
Return values
string

◆ quiz_get_attempt_usertime_sql()

quiz_get_attempt_usertime_sql ( $redundantwhereclauses = '')

Returns SQL to compute timeclose and timelimit for every attempt, taking into account user and group overrides.

The query used herein is very similar to the one in function quiz_get_user_timeclose, so, in case you would change either one of them, make sure to apply your changes to both.

Parameters
string$redundantwhereclausesextra where clauses to add to the subquery for performance. These can use the table alias iquiza for the quiz attempts table.
Return values
stringSQL select with columns attempt.id, usertimeclose, usertimelimit.

◆ quiz_get_best_grade()

quiz_get_best_grade ( $quiz,
$userid )

Get the best current grade for a particular user in a quiz.

Parameters
stdClass$quizthe quiz settings.
int$useridthe id of the user.
Return values
floatthe user's current grade for this quiz, or null if this user does not have a grade on this quiz.

◆ quiz_get_combined_reviewoptions()

quiz_get_combined_reviewoptions ( $quiz,
$attempts )

Combines the review options from a number of different quiz attempts.

Returns an array of two ojects, so the suggested way of calling this funciton is: list($someoptions, $alloptions) = quiz_get_combined_reviewoptions(...)

Parameters
stdClass$quizthe quiz instance.
array$attemptsan array of attempt objects.
Return values
arrayof two options objects, one showing which options are true for at least one of the attempts, the other showing which options are true for all attempts.

◆ quiz_get_completion_state()

quiz_get_completion_state ( )
Deprecated
since Moodle 3.11

◆ quiz_get_coursemodule_info()

quiz_get_coursemodule_info ( $coursemodule)

Add a get_coursemodule_info function in case any quiz type wants to add 'extra' information for the course (see resource).

Given a course_module object, this function returns any "extra" information that may be needed when printing this activity in a course listing. See get_array_of_activities() in course/lib.php.

Parameters
stdClass$coursemoduleThe coursemodule object (record).
Return values
cached_cm_info|falseAn object on information that the courses will know about (most noticeably, an icon).

◆ quiz_get_extra_capabilities()

quiz_get_extra_capabilities ( )
Return values
arrayall other caps used in module

◆ quiz_get_flag_option()

quiz_get_flag_option ( $attempt,
$context )
Parameters
stdClass$attemptthe attempt.
stdClass$contextthe quiz context.
Return values
intwhether flags should be shown/editable to the current user for this attempt.

◆ quiz_get_grade_format()

quiz_get_grade_format ( $quiz)

Determine the correct number of decimal places required to format a grade.

Parameters
stdClass$quizThe quiz table row, only $quiz->decimalpoints and ->questiondecimalpoints are used.
Return values
integer

◆ quiz_get_grading_option_name()

quiz_get_grading_option_name ( $option)
Parameters
int$optionone of the values QUIZ_GRADEHIGHEST, QUIZ_GRADEAVERAGE, QUIZ_ATTEMPTFIRST or QUIZ_ATTEMPTLAST.
Return values
thelang string for that option.

◆ quiz_get_grading_options()

quiz_get_grading_options ( )
Return values
arrayint => lang string the options for calculating the quiz grade from the individual attempt grades.

◆ quiz_get_group_override_priorities()

quiz_get_group_override_priorities ( $quizid)

Calculates the priorities of timeopen and timeclose values for group overrides for a quiz.

Parameters
int$quizidThe quiz ID.
Return values
array|nullArray of group override priorities for open and close times. Null if there are no group overrides.

◆ quiz_get_js_module()

quiz_get_js_module ( )

Get the information about the standard quiz JavaScript module.

Return values
arraya standard jsmodule structure.

◆ quiz_get_navigation_options()

quiz_get_navigation_options ( )
Return values
theoptions for quiz navigation.

◆ quiz_get_overdue_handling_options()

quiz_get_overdue_handling_options ( )
Return values
arraystring => lang string the options for handling overdue quiz attempts.

◆ quiz_get_post_actions()

quiz_get_post_actions ( )

List the actions that correspond to a post of this module.

This is used by the participation report.

Note: This is not used by new logging system. Event with crud = ('c' || 'u' || 'd') and edulevel = LEVEL_PARTICIPATING will be considered as post action.

Return values
array

◆ quiz_get_review_options()

quiz_get_review_options ( $quiz,
$attempt,
$context )

The appropriate display_options object for this attempt at this quiz right now.

Parameters
stdClass$quizthe quiz instance.
stdClass$attemptthe attempt in question.
context$contextthe quiz context.
Return values
display_options

◆ quiz_get_user_attempt_unfinished()

quiz_get_user_attempt_unfinished ( $quizid,
$userid )

Returns an unfinished attempt (if there is one) for the given user on the given quiz.

This function does not return preview attempts.

Parameters
int$quizidthe id of the quiz.
int$useridthe id of the user.
Return values
mixedthe unfinished attempt if there is one, false if not.

◆ quiz_get_user_attempts()

quiz_get_user_attempts ( $quizids,
$userid,
$status = 'finished',
$includepreviews = false )
Parameters
int | array$quizidsA quiz ID, or an array of quiz IDs.
int$useridthe userid.
string$status'all', 'finished' or 'unfinished' to control
bool$includepreviews
Return values
arrayof all the user's attempts at this quiz. Returns an empty array if there are none.

◆ quiz_get_user_grades()

quiz_get_user_grades ( $quiz,
$userid = 0 )

Return grade for given user or all users.

Parameters
int$quizidid of quiz
int$useridoptional user id, 0 means all users
Return values
arrayarray of grades, false if none. These are raw grades. They should be processed with quiz_format_grade for display.

◆ quiz_get_user_image_options()

quiz_get_user_image_options ( )

Get the choices for what size user picture to show.

Return values
arraystring => lang string the options for whether to display the user's picture.

◆ quiz_get_user_timeclose()

quiz_get_user_timeclose ( $courseid)

Return an user's timeclose for all quizzes in a course, hereby taking into account group and user overrides.

Parameters
int$courseidthe course id.
Return values
stdClassAn object with of all quizids and close unixdates in this course, taking into account the most lenient overrides, if existing and 0 if no close date is set.

◆ quiz_get_view_actions()

quiz_get_view_actions ( )

List the actions that correspond to a view of this module.

This is used by the participation report.

Note: This is not used by new logging system. Event with crud = 'r' and edulevel = LEVEL_PARTICIPATING will be considered as view action.

Return values
array

◆ quiz_grade_item_delete()

quiz_grade_item_delete ( $quiz)

Delete grade item for given quiz.

Parameters
stdClass$quizobject
Return values
int

◆ quiz_grade_item_update()

quiz_grade_item_update ( $quiz,
$grades = null )

Create or update the grade item for given quiz.

Parameters
stdClass$quizobject with extra cmidnumber
mixed$gradesoptional array/object of grade(s); 'reset' means reset grades in gradebook
Return values
int0 if ok, error code otherwise

◆ quiz_has_attempts()

quiz_has_attempts ( $quizid)
Parameters
int$quizidThe quiz id.
Return values
boolwhether this quiz has any (non-preview) attempts.

◆ quiz_has_feedback()

quiz_has_feedback ( $quiz)
Parameters
stdClass$quizthe quiz database row.
Return values
boolWhether this quiz has any non-blank feedback text.

◆ quiz_has_grades()

quiz_has_grades ( $quiz)

Is this a graded quiz? If this method returns true, you can assume that $quiz->grade and $quiz->sumgrades are non-zero (for example, if you want to divide by them).

Parameters
stdClass$quiza row from the quiz table.
Return values
boolwhether this is a graded quiz.

◆ quiz_has_question_use()

quiz_has_question_use ( $quiz,
$slot )

Verify that the question exists, and the user has permission to use it.

Deprecated
in 4.1 use mod_quiz\structure\has_use_capability(...) instead.
Parameters
stdClass$quizthe quiz settings.
int$slotwhich question in the quiz to test.
Return values
boolwhether the user can use this question.

◆ quiz_has_questions()

quiz_has_questions ( $quizid)

Are there any questions in this quiz?

Parameters
int$quizidthe quiz id.

◆ quiz_is_overriden_calendar_event()

quiz_is_overriden_calendar_event ( \calendar_event $event)

Check if the given calendar_event is either a user or group override event for quiz.

Parameters
calendar_event$eventThe calendar event to check
Return values
bool

◆ quiz_no_questions_message()

quiz_no_questions_message ( $quiz,
$cm,
$context )

Generate a message saying that this quiz has no questions, with a button to go to the edit page, if the user has the right capability.

Parameters
stdClass$quizthe quiz settings.
stdClass$cmthe course_module object.
stdClass$contextthe quiz context.
Return values
stringHTML to output.

◆ quiz_num_attempt_summary()

quiz_num_attempt_summary ( $quiz,
$cm,
$returnzero = false,
$currentgroup = 0 )

Return a textual summary of the number of attempts that have been made at a particular quiz, returns '' if no attempts have been made yet, unless $returnzero is passed as true.

Parameters
stdClass$quizthe quiz object. Only $quiz->id is used at the moment.
stdClass$cmthe cm object. Only $cm->course, $cm->groupmode and $cm->groupingid fields are used at the moment.
bool$returnzeroif false (default), when no attempts have been made '' is returned instead of 'Attempts: 0'.
int$currentgroupif there is a concept of current group where this method is being called (e.g. a report) pass it in here. Default 0 which means no current group.
Return values
stringa string like "Attempts: 123", "Attemtps 123 (45 from your groups)" or "Attemtps 123 (45 from this group)".

◆ quiz_override_summary()

quiz_override_summary ( stdClass $quiz,
cm_info|stdClass $cm,
int $currentgroup = 0 )

Return summary of the number of settings override that exist.

To get a nice display of this, see the quiz_override_summary_links() quiz renderer method.

Parameters
stdClass$quizthe quiz settings. Only $quiz->id is used at the moment.
cm_info | stdClass$cmthe cm object. Only $cm->course, $cm->groupmode and $cm->groupingid fields are used at the moment.
int$currentgroupif there is a concept of current group where this method is being called (e.g. a report) pass it in here. Default 0 which means no current group.
Return values
arraylike 'group' => 3, 'user' => 12] where 3 is the number of group overrides, and 12 is the number of user ones.

◆ quiz_page_type_list()

quiz_page_type_list ( $pagetype,
$parentcontext,
$currentcontext )

Return a list of page types.

Parameters
string$pagetypecurrent page type
stdClass$parentcontextBlock's parent context
stdClass$currentcontextCurrent context of block

◆ quiz_pluginfile()

quiz_pluginfile ( $course,
$cm,
$context,
$filearea,
$args,
$forcedownload,
array $options = [] )

Serves the quiz files.

Parameters
stdClass$coursecourse object
stdClass$cmcourse module object
stdClass$contextcontext object
string$fileareafile area
array$argsextra arguments
bool$forcedownloadwhether or not force download
array$optionsadditional options affecting the file serving
Return values
boolfalse if file not found, does not return if found - justsend the file

◆ quiz_prepare_and_start_new_attempt()

quiz_prepare_and_start_new_attempt ( quiz_settings $quizobj,
$attemptnumber,
$lastattempt,
$offlineattempt = false,
$forcedrandomquestions = [],
$forcedvariants = [],
$userid = null )

Prepare and start a new attempt deleting the previous preview attempts.

Parameters
quiz_settings$quizobjquiz object
int$attemptnumberthe attempt number
stdClass$lastattemptlast attempt object
bool$offlineattemptwhether is an offline attempt or not
array$forcedrandomquestionsslot number => question id. Used for random questions, to force the choice of a particular actual question. Intended for testing purposes only.
array$forcedvariantsslot number => variant. Used for questions with variants, to force the choice of a particular variant. Intended for testing purposes only.
int$useridSpecific user id to create an attempt for that user, null for current logged in user
Return values
stdClassthe new attempt
Since
Moodle 3.1

◆ quiz_process_group_deleted_in_course()

quiz_process_group_deleted_in_course ( $courseid)

Logic to happen when a/some group(s) has/have been deleted in a course.

Parameters
int$courseidThe course ID.
Return values
void

◆ quiz_process_options()

quiz_process_options ( $quiz)

Pre-process the quiz options form data, making any necessary adjustments.

Called by add/update instance in this file.

Parameters
stdClass$quizThe variables set on the form.

◆ quiz_question_action_icons()

quiz_question_action_icons ( $quiz,
$cmid,
$question,
$returnurl,
$variant = null )
Parameters
stdClass$quizthe quiz.
int$cmidthe course_module object for this quiz.
stdClass$questionthe question.
string$returnurlurl to return to after action is done.
int$variantwhich question variant to preview (optional).
Return values
stringhtml for a number of icons linked to action pages for a question - preview and edit / view icons depending on user capabilities.

◆ quiz_question_edit_button()

quiz_question_edit_button ( $cmid,
$question,
$returnurl,
$contentaftericon = '' )
Parameters
int$cmidthe course_module.id for this quiz.
stdClass$questionthe question.
string$returnurlurl to return to after action is done.
string$contentbeforeiconsome HTML content to be added inside the link, before the icon.
Return values
theHTML for an edit icon, view icon, or nothing for a question (depending on permissions).

◆ quiz_question_pluginfile()

quiz_question_pluginfile ( $course,
$context,
$component,
$filearea,
$qubaid,
$slot,
$args,
$forcedownload,
array $options = [] )

Called via pluginfile.php -> question_pluginfile to serve files belonging to a question in a question_attempt when that attempt is a quiz attempt.

Parameters
stdClass$coursecourse settings object
stdClass$contextcontext object
string$componentthe name of the component we are serving files for.
string$fileareathe name of the file area.
int$qubaidthe attempt usage id.
int$slotthe id of a question in this quiz attempt.
array$argsthe remaining bits of the file path.
bool$forcedownloadwhether the user must be forced to download the file.
array$optionsadditional options affecting the file serving
Return values
boolfalse if file not found, does not return if found - justsend the file

◆ quiz_question_preview_button()

quiz_question_preview_button ( $quiz,
$question,
$label = false,
$variant = null,
$random = null )
Parameters
stdClass$quizthe quiz settings
stdClass$questionthe question
bool$labelif true, show the preview question label after the icon
int$variantwhich question variant to preview (optional).
bool$randomif question is random, true.
Return values
stringthe HTML for a preview question icon.

◆ quiz_question_preview_url()

quiz_question_preview_url ( $quiz,
$question,
$variant = null,
$restartversion = null )
Parameters
stdClass$quizthe quiz settings
stdClass$questionthe question
int$variantwhich question variant to preview (optional).
int$restartversionversion of the question to use when restarting the preview.
Return values
moodle_urlto preview this question with the options from this quiz.

◆ quiz_question_tostring()

quiz_question_tostring ( $question,
$showicon = false,
$showquestiontext = true,
$showidnumber = false,
$showtags = false )

Creates a textual representation of a question for display.

Parameters
stdClass$questionA question object from the database questions table
bool$showiconIf true, show the question's icon with the question. False by default.
bool$showquestiontextIf true (default), show question text after question name. If false, show only question name.
bool$showidnumberIf true, show the question's idnumber, if any. False by default.
core_tag_tag[] | bool$showtagsif array passed, show those tags. Else, if true, get and show tags, else, don't show tags (which is the default).
Return values
stringHTML fragment.

◆ quiz_questions_in_use()

quiz_questions_in_use ( $questionids)

Standard callback used by questions_in_use.

Parameters
array$questionidsof question ids.
Return values
boolwhether any of these questions are used by any instance of this module.

◆ quiz_questions_per_page_options()

quiz_questions_per_page_options ( )

Get the choices to offer for the 'Questions per page' option.

Return values
arrayint => string.

◆ quiz_refresh_events()

quiz_refresh_events ( $courseid = 0,
$instance = null,
$cm = null )

This standard function will check all instances of this module and make sure there are up-to-date events created for each of them.

If courseid = 0, then every quiz event in the site is checked, else only quiz events belonging to the course specified are checked. This function is used, in its new format, by restore_refresh_events()

Parameters
int$courseid
int | stdClass$instanceQuiz module instance or ID.
int | stdClass$cmCourse module object or ID (not used in this module).
Return values
bool

◆ quiz_repaginate_questions()

quiz_repaginate_questions ( $quizid,
$slotsperpage )

Repaginate the questions in a quiz.

Parameters
int$quizidthe id of the quiz to repaginate.
int$slotsperpagenumber of items to put on each page. 0 means unlimited.

◆ quiz_report_can_filter_only_graded()

quiz_report_can_filter_only_graded ( $quiz)
Parameters
stdClass$quizthe quiz settings.
Return values
boolwhether, for this quiz, it is possible to filter attempts to show only those that gave the final grade.

◆ quiz_report_default_report()

quiz_report_default_report ( $context)

Get the default report for the current user.

Parameters
stdClass$contextthe quiz context.

◆ quiz_report_download_filename()

quiz_report_download_filename ( $report,
$courseshortname,
$quizname )

Create a filename for use when downloading data from a quiz report.

It is expected that this will be passed to flexible_table\is_downloading, which cleans the filename of bad characters and adds the file extension.

Parameters
string$reportthe type of report.
string$courseshortnamethe course shortname.
string$quiznamethe quiz name.
Return values
stringthe filename.

◆ quiz_report_feedback_for_grade()

quiz_report_feedback_for_grade ( $grade,
$quizid,
$context )

Get the feedback text for a grade on this quiz.

The feedback is processed ready for display.

Parameters
float$gradea grade on this quiz.
int$quizidthe id of the quiz object.
Return values
stringthe comment that corresponds to this grade (empty string if there is not one.

◆ quiz_report_get_significant_questions()

quiz_report_get_significant_questions ( $quiz)

Get the slots of real questions (not descriptions) in this quiz, in order.

Parameters
stdClass$quizthe quiz.
Return values
arrayof slot => objects with fields ->slot, ->id, ->qtype, ->length, ->number, ->maxmark, ->category (for random questions).

◆ quiz_report_grade_bands()

quiz_report_grade_bands ( $bandwidth,
$bands,
$quizid,
core\dml\sql_join $usersjoins = null )

Get the number of students whose score was in a particular band for this quiz.

Parameters
number$bandwidththe width of each band.
int$bandsthe number of bands
int$quizidthe quiz id.
core\dml\sql_join$usersjoins(joins, wheres, params) to get enrolled users
Return values
arrayband number => number of users with scores in that band.

◆ quiz_report_grade_method_sql()

quiz_report_grade_method_sql ( $grademethod,
$quizattemptsalias = 'quiza' )

Given a quiz grading method return sql to test if this is an attempt that will be contribute towards the grade of the user.

Or return an empty string if the grading method is QUIZ_GRADEAVERAGE and thus all attempts contribute to final grade.

Parameters
string$grademethodquiz grading method.
string$quizattemptsaliassql alias for 'quiz_attempts' table
Return values
stringsql to test if this is an attempt that will contribute towards the graded of the user

◆ quiz_report_index_by_keys()

quiz_report_index_by_keys ( $datum,
$keys,
$keysunique = true )

Takes an array of objects and constructs a multidimensional array keyed by the keys it finds on the object.

Parameters
array$datuman array of objects with properties on the object including the keys passed as the next param.
array$keysArray of strings with the names of the properties on the objects in datum that you want to index the multidimensional array by.
bool$keysuniqueIf there is not only one object for each combination of keys you are using you should set $keysunique to true. Otherwise all the object will be added to a zero based array. So the array returned will have count($keys) + 1 indexs.
Return values
arraymultidimensional array properly indexed.

◆ quiz_report_list()

quiz_report_list ( $context)

Returns an array of reports to which the current user has access to.

Return values
arrayreports are ordered as they should be for display in tabs.

◆ quiz_report_qm_filter_select()

quiz_report_qm_filter_select ( $quiz,
$quizattemptsalias = 'quiza' )

This is a wrapper for quiz_report_grade_method_sql that takes the whole quiz object instead of just the grading method as a param.

See definition for quiz_report_grade_method_sql below.

Parameters
stdClass$quiz
string$quizattemptsaliassql alias for 'quiz_attempts' table
Return values
stringsql to test if this is an attempt that will contribute towards the grade of the user

◆ quiz_report_scale_summarks_as_percentage()

quiz_report_scale_summarks_as_percentage ( $rawmark,
$quiz,
$round = true )

Format a number as a percentage out of $quiz->sumgrades.

Parameters
number$rawgradethe mark to format.
stdClass$quizthe quiz settings
bool$roundwhether to round the results ot $quiz->decimalpoints.

◆ quiz_report_should_show_grades()

quiz_report_should_show_grades ( $quiz,
context $context )

Should the grades be displayed in this report.

That depends on the quiz display options, and whether the quiz is graded.

Parameters
stdClass$quizthe quiz settings.
context$contextthe quiz context.
Return values
bool

◆ quiz_require_question_use()

quiz_require_question_use ( $questionid)

Verify that the question exists, and the user has permission to use it.

Does not return. Throws an exception if the question cannot be used.

Parameters
int$questionidThe id of the question.

◆ quiz_rescale_grade()

quiz_rescale_grade ( $rawgrade,
$quiz,
$format = true )

Convert the raw grade stored in $attempt into a grade out of the maximum grade for this quiz.

Parameters
float$rawgradethe unadjusted grade, fof example $attempt->sumgrades
stdClass$quizthe quiz object. Only the fields grade, sumgrades and decimalpoints are used.
bool | string$formatwhether to format the results for display or 'question' to format a question grade (different number of decimal places.
Return values
float|stringthe rescaled grade, or null/the lang string 'notyetgraded' if the $grade is null.

◆ quiz_reset_course_form_defaults()

quiz_reset_course_form_defaults ( $course)

Course reset form defaults.

Return values
arraythe defaults.

◆ quiz_reset_course_form_definition()

quiz_reset_course_form_definition ( $mform)

Implementation of the function for printing the form elements that control whether the course reset functionality affects the quiz.

Parameters
MoodleQuickForm$mformthe course reset form that is being built.

◆ quiz_reset_gradebook()

quiz_reset_gradebook ( $courseid,
$type = '' )

Removes all grades from gradebook.

Parameters
int$courseid
stringoptional type

◆ quiz_reset_userdata()

quiz_reset_userdata ( $data)

Actual implementation of the reset course functionality, delete all the quiz attempts for course $data->courseid, if $data->reset_quiz_attempts is set and true.

Also, move the quiz open and close dates, if the course start date is changing.

Parameters
stdClass$datathe data submitted from the reset course.
Return values
arraystatus array

◆ quiz_retrieve_tags_for_slot_ids()

quiz_retrieve_tags_for_slot_ids ( )
Deprecated
since Moodle 4.0

◆ quiz_review_option_form_to_db()

quiz_review_option_form_to_db ( $fromform,
$field )

Helper function for quiz_process_options().

Parameters
stdClass$fromformthe sumbitted form date.
string$fieldone of the review option field names.

◆ quiz_save_best_grade()

quiz_save_best_grade ( $quiz,
$userid = null,
$attempts = [] )

Save the overall grade for a user at a quiz in the quiz_grades table.

Parameters
stdClass$quizThe quiz for which the best grade is to be calculated and then saved.
int$useridThe userid to calculate the grade for. Defaults to the current user.
array$attemptsThe attempts of this user. Useful if you are looping through many users. Attempts can be fetched in one master query to avoid repeated querying.
Return values
boolIndicates success or failure.
Deprecated
since Moodle 4.2. Please use grade_calculator\update_quiz_maximum_grade.
Todo
MDL-76612 Final deprecation in Moodle 4.6

◆ quiz_send_confirmation()

quiz_send_confirmation ( $recipient,
$a,
$studentisonline )

Sends a confirmation message to the student confirming that the attempt was processed.

Parameters
stdClass$recipientuser object for the recipient.
stdClass$alots of useful information that can be used in the message subject and body.
bool$studentisonlineis the student currently interacting with Moodle?
Return values
int|falseas for message_send().

◆ quiz_send_notification()

quiz_send_notification ( $recipient,
$submitter,
$a )

Sends notification messages to the interested parties that assign the role capability.

Parameters
stdClass$recipientuser object of the intended recipient
stdClass$submitteruser object for the user who submitted the attempt.
stdClass$aassociative array of replaceable fields for the templates
Return values
int|falseas for message_send().

◆ quiz_send_notification_messages()

quiz_send_notification_messages ( $course,
$quiz,
$attempt,
$context,
$cm,
$studentisonline )

Send all the requried messages when a quiz attempt is submitted.

Parameters
stdClass$coursethe course
stdClass$quizthe quiz
stdClass$attemptthis attempt just finished
stdClass$contextthe quiz context
stdClass$cmthe coursemodule for this quiz
bool$studentisonlineis the student currently interacting with Moodle?
Return values
booltrue if all necessary messages were sent successfully, else false.

◆ quiz_send_notify_manual_graded_message()

quiz_send_notify_manual_graded_message ( quiz_attempt $attemptobj,
object $userto )

Send the notification message when a quiz attempt has been manual graded.

Parameters
quiz_attempt$attemptobjSome data about the quiz attempt.
stdClass$userto
Return values
int|falseAs for message_send.

◆ quiz_send_overdue_message()

quiz_send_overdue_message ( $attemptobj)

Send the notification message when a quiz attempt becomes overdue.

Parameters
quiz_attempt$attemptobjall the data about the quiz attempt.

◆ quiz_set_grade()

quiz_set_grade ( $newgrade,
$quiz )

The quiz grade is the maximum that student's results are marked out of.

When it changes, the corresponding data in quiz_grades and quiz_feedback needs to be rescaled. After calling this function, you probably need to call quiz_update_all_attempt_sumgrades, grade_calculator\recompute_all_final_grades(); quiz_update_grades. (At least, that is what this comment has said for years, but it seems to call recompute_all_final_grades itself.)

Parameters
float$newgradethe new maximum grade for the quiz.
stdClass$quizthe quiz we are updating. Passed by reference so its grade field can be updated too.
Return values
boolindicating success or failure.
Deprecated
since Moodle 4.2. Please use grade_calculator\update_quiz_maximum_grade.
Todo
MDL-76612 Final deprecation in Moodle 4.6

◆ quiz_start_attempt_built_on_last()

quiz_start_attempt_built_on_last ( $quba,
$attempt,
$lastattempt )

Start a subsequent new attempt, in each attempt builds on last mode.

Parameters
question_usage_by_activity$qubathis question usage
stdClass$attemptthis attempt
stdClass$lastattemptlast attempt
Return values
stdClassmodified attempt object

◆ quiz_start_new_attempt()

quiz_start_new_attempt ( $quizobj,
$quba,
$attempt,
$attemptnumber,
$timenow,
$questionids = [],
$forcedvariantsbyslot = [] )

Start a normal, new, quiz attempt.

Parameters
quiz_settings$quizobjthe quiz object to start an attempt for.
question_usage_by_activity$quba
stdClass$attempt
integer$attemptnumberstarting from 1
integer$timenowthe attempt start time
array$questionidsslot number => question id. Used for random questions, to force the choice of a particular actual question. Intended for testing purposes only.
array$forcedvariantsbyslotslot number => variant. Used for questions with variants, to force the choice of a particular variant. Intended for testing purposes only.
Return values
stdClassmodified attempt object

◆ quiz_supports()

quiz_supports ( $feature)
Parameters
string$featureFEATURE_xx constant for requested feature
Return values
mixedTrue if module supports feature, false if not, null if doesn't know or string for the module purpose.

◆ quiz_update_all_attempt_sumgrades()

quiz_update_all_attempt_sumgrades ( $quiz)

Update the sumgrades field of the attempts at a quiz.

Parameters
stdClass$quiza quiz.
Deprecated
since Moodle 4.2. Please use grade_calculator\recompute_all_attempt_sumgrades.
Todo
MDL-76612 Final deprecation in Moodle 4.6

◆ quiz_update_all_final_grades()

quiz_update_all_final_grades ( $quiz)

Update the final grade at this quiz for all students.

This function is equivalent to calling quiz_save_best_grade for all users, but much more efficient.

Parameters
stdClass$quizthe quiz settings.
Deprecated
since Moodle 4.2. Please use grade_calculator\recompute_all_final_grades.
Todo
MDL-76612 Final deprecation in Moodle 4.6

◆ quiz_update_effective_access()

quiz_update_effective_access ( $quiz,
$userid )

Updates a quiz object with override information for a user.

Algorithm: For each quiz setting, if there is a matching user-specific override, then use that otherwise, if there are group-specific overrides, return the most lenient combination of them. If neither applies, leave the quiz setting unchanged.

Special case: if there is more than one password that applies to the user, then quiz->extrapasswords will contain an array of strings giving the remaining passwords.

Parameters
stdClass$quizThe quiz object.
int$useridThe userid.
Return values
stdClass\$quizThe updated quiz object.

◆ quiz_update_events()

quiz_update_events ( $quiz,
$override = null )

This function updates the events associated to the quiz.

If $override is non-zero, then it updates only the events associated with the specified override.

Parameters
stdClass$quizthe quiz object.
stdClass | null$overridelimit to a specific override

◆ quiz_update_grades()

quiz_update_grades ( $quiz,
$userid = 0,
$nullifnone = true )

Update grades in central gradebook.

Parameters
stdClass$quizthe quiz settings.
int$useridspecific user only, 0 means all users.
bool$nullifnoneIf a single user is specified and $nullifnone is true a grade item with a null rawgrade will be inserted

◆ quiz_update_instance()

quiz_update_instance ( $quiz,
$mform )

Given an object containing all the necessary data, (defined by the form in mod_form.php) this function will update an existing instance with new data.

Parameters
stdClass$quizthe data that came from the form.
stdClass$mformno longer used.
Return values
mixedtrue on success, false or a string error message on failure.

◆ quiz_update_open_attempts()

quiz_update_open_attempts ( array $conditions)

Efficiently update check state time on all open attempts.

Parameters
array$conditionsoptional restrictions on which attempts to update Allowed conditions: courseid => (array|int) attempts in given course(s) userid => (array|int) attempts for given user(s) quizid => (array|int) attempts in given quiz(s) groupid => (array|int) quizzes with some override for given group(s)

◆ quiz_update_section_firstslots()

quiz_update_section_firstslots ( $quizid,
$direction,
$afterslot,
$beforeslot = null )

Move all the section headings in a certain slot range by a certain offset.

Parameters
int$quizidthe id of a quiz
int$directionamount to adjust section heading positions. Normally +1 or -1.
int$afterslotadjust headings that start after this slot.
int | null$beforeslotoptionally, only adjust headings before this slot.

◆ quiz_update_sumgrades()

quiz_update_sumgrades ( $quiz)

Update the sumgrades field of the quiz.

This needs to be called whenever the grading structure of the quiz is changed. For example if a question is added or removed, or a question weight is changed.

You should call {

See also
quiz_delete_previews()} before you call this function.
Parameters
stdClass$quiza quiz.
Deprecated
since Moodle 4.2. Please use grade_calculator\recompute_quiz_sumgrades.
Todo
MDL-76612 Final deprecation in Moodle 4.6

◆ quiz_user_complete()

quiz_user_complete ( $course,
$user,
$mod,
$quiz )

Print a detailed representation of what a user has done with a given particular instance of this module, for user activity reports.

Parameters
stdClass$course
stdClass$user
stdClass$mod
stdClass$quiz
Return values
bool

◆ quiz_user_outline()

quiz_user_outline ( $course,
$user,
$mod,
$quiz )

Return a small object with summary information about what a user has done with a given particular instance of this module Used for user activity reports.

$return->time = the time they did it $return->info = a short text description

Parameters
stdClass$course
stdClass$user
stdClass$mod
stdClass$quiz
Return values
stdClass|null

◆ quiz_validate_new_attempt()

quiz_validate_new_attempt ( quiz_settings $quizobj,
access_manager $accessmanager,
$forcenew,
$page,
$redirect )

Validate permissions for creating a new attempt and start a new preview attempt if required.

Parameters
quiz_settings$quizobjquiz object
access_manager$accessmanagerquiz access manager
bool$forcenewwhether was required to start a new preview attempt
int$pagepage to jump to in the attempt
bool$redirectwhether to redirect or throw exceptions (for web or ws usage)
Return values
arrayan array containing the attempt information, access error messages and the page to jump to in the attempt
Since
Moodle 3.1

◆ quiz_view()

quiz_view ( $quiz,
$course,
$cm,
$context )

Mark the activity completed (if required) and trigger the course_module_viewed event.

Parameters
stdClass$quizquiz object
stdClass$coursecourse object
stdClass$cmcourse module object
stdClass$contextcontext object
Since
Moodle 3.1

◆ refresh_page_numbers()

mod_quiz\refresh_page_numbers ( $slots = [])

Refresh page numbering of quiz slots.

Parameters
stdClass[]$slots(optional) array of slot objects.
Return values
stdClass[]array of slot objects.

◆ refresh_page_numbers_and_update_db()

mod_quiz\refresh_page_numbers_and_update_db ( )

Refresh page numbering of quiz slots and save to the database.

Return values
stdClass[]array of slot objects.

◆ remove_section_heading()

mod_quiz\remove_section_heading ( $sectionid)

Remove the section heading with the given id.

Parameters
int$sectionidthe section to remove.

◆ remove_slot()

mod_quiz\remove_slot ( $slotnumber)

Remove a slot from a quiz.

Parameters
int$slotnumberThe number of the slot to be deleted.
Exceptions
coding_exception

◆ restore_quiz()

restore_quiz ( string $backupid,
stdClass $course,
stdClass $user )
protected

A helper method to restore provided backup.

Parameters
string$backupidBackup ID to restore.
stdClass$course
stdClass$user

◆ set_section_heading()

mod_quiz\set_section_heading ( $id,
$newheading )

Change the heading for a section.

Parameters
int$idthe id of the section to change.
string$newheadingthe new heading for this section.

◆ set_section_shuffle()

mod_quiz\set_section_shuffle ( $id,
$shuffle )

Change the shuffle setting for a section.

Parameters
int$idthe id of the section to change.
bool$shufflewhether this section should be shuffled.

◆ unset_question()

mod_quiz\unset_question ( $slotid)

Unset the question object after deletion.

Parameters
int$slotid

◆ update_grade_item()

mod_quiz\update_grade_item ( stdClass $gradeitemdata)

Update a grade item.

Parameters
stdClass$gradeitemdatamust have properties id and name.

◆ update_page_break()

mod_quiz\update_page_break ( $slotid,
$type )

Add/Remove a pagebreak.

Save changes to the slot page relationship in the quiz_slots table and reorders the paging for subsequent slots.

Parameters
int$slotidid of slot which we will add/remove the page break before.
int$typerepaginate\LINK or repaginate\UNLINK.
Return values
stdClass[]array of slot objects.

◆ update_question_dependency()

mod_quiz\update_question_dependency ( $slotid,
$requireprevious )

Set whether the question in a particular slot requires the previous one.

Parameters
int$slotidid of slot.
bool$requirepreviousif true, set this question to require the previous one.

◆ update_slot_display_number()

mod_quiz\update_slot_display_number ( int $slotid,
string $displaynumber )

Update the question display number when is set as customised display number or empy string.

When the field displaynumber is set to empty string, the automated numbering is used. Log the updated displatnumber field.

Parameters
int$slotidid of slot.
string$displaynumberset to customised string as question number or empty string fo autonumbering.

◆ update_slot_grade_item()

mod_quiz\update_slot_grade_item ( stdClass $slot,
?int $gradeitemid )

Change which grade this slot contributes to, for quizzes with multiple grades.

It does not update 'sumgrades' in the quiz table. If this method returns true, it will be necessary to recompute all the quiz grades.

Parameters
stdClass$slotrow from the quiz_slots table.
int | null$gradeitemidid of the grade item this slot should contribute to. 0 or null means none.
Return values
booltrue if the new $gradeitemid is different from the previous one.

◆ update_slot_maxmark()

mod_quiz\update_slot_maxmark ( $slot,
$maxmark )

Change the max mark for a slot.

Save changes to the question grades in the quiz_slots table and any corresponding question_attempts.

It does not update 'sumgrades' in the quiz table.

Parameters
stdClass$slotrow from the quiz_slots table.
float$maxmarkthe new maxmark.
Return values
booltrue if the new grade is different from the old one.

◆ verify_grade_item_is_ours()

mod_quiz\verify_grade_item_is_ours ( int $gradeitemid)

Check the grade item with the given id belongs to this quiz.

Parameters
int$gradeitemidid of a quiz grade item.
Exceptions
coding_exceptionif the grade item does not belong to this quiz.

◆ xmldb_quiz_upgrade()

xmldb_quiz_upgrade ( $oldversion)

Quiz module upgrade function.

Parameters
string$oldversionthe version we are upgrading from.

Variable Documentation

◆ $definitions

$definitions
Initial value:
= [
'overrides' => [
'mode' => cache_store::MODE_APPLICATION,
'simplekeys' => true,
'datasource' => '\mod_quiz\cache\overrides',
'invalidationevents' => [
mod_quiz\local\override_cache::INVALIDATION_USERDATARESET,
],
],
]

◆ $logs

$logs
Initial value:
= [
['module' => 'quiz', 'action' => 'add', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'update', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'view', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'report', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'attempt', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'submit', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'review', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'editquestions', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'preview', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'start attempt', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'close attempt', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'continue attempt', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'edit override', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'delete override', 'mtable' => 'quiz', 'field' => 'name'],
['module' => 'quiz', 'action' => 'view summary', 'mtable' => 'quiz', 'field' => 'name'],
]

◆ $tasks

$tasks
Initial value:
= [
[
'classname' => 'mod_quiz\task\update_overdue_attempts',
'blocking' => 0,
'minute' => '*',
'hour' => '*',
'day' => '*',
'dayofweek' => '*',
'month' => '*'
],
[
'classname' => 'mod_quiz\task\quiz_notify_attempt_manual_grading_completed',
'blocking' => 0,
'minute' => 'R',
'hour' => '*',
'day' => '*',
'dayofweek' => '*',
'month' => '*'
]
]

◆ else

if($ADMIN->fulltree) if (empty( $reportsbyname) &&empty( $rulesbyname)) else
Initial value:
{
$pagetitle = get_string('generalsettings', 'admin')

◆ if

if ( ! defined 'MOODLE_INTERNAL')
Initial value:
{
$ADMIN->add('modsettings', new admin_category('modsettingsquizcat',
get_string('modulename', 'quiz'), $module->is_enabled() === false))
The object used to represent folders (a.k.a.
Definition adminlib.php:785

◆ QUIZ_EVENT_TYPE_OPEN

const QUIZ_EVENT_TYPE_OPEN 'open'

#-

Event types.

◆ QUIZ_GRADEHIGHEST

const QUIZ_GRADEHIGHEST '1'

#-

#+ Options determining how the grades from individual attempts are combined to give the overall grade for a user

◆ QUIZ_MAX_EVENT_LENGTH

const QUIZ_MAX_EVENT_LENGTH 5*24*60*60

#-

If start and end date for the quiz are more than this many seconds apart they will be represented by two separate events in the calendar

◆ QUIZ_MIN_TIME_TO_CONTINUE

const QUIZ_MIN_TIME_TO_CONTINUE '2'

If there are fewer than this many seconds left when the student submits a page of the quiz, then do not take them to the next page of the quiz.

Instead close the quiz immediately.

◆ quiz_question_helper_test_trait

trait quiz_question_helper_test_trait
Initial value:
{
protected stdClass $course
Author
Safat Shahin safat.nosp@m.shah.nosp@m.in@ca.nosp@m.taly.nosp@m.st-au.nosp@m..net
License
http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later

◆ QUIZ_SHOW_TIME_BEFORE_DEADLINE

const QUIZ_SHOW_TIME_BEFORE_DEADLINE '3600'

We show the countdown timer if there is less than this amount of time left before the the quiz close date.

(1 hour)