Moodle PHP Documentation 4.2
Moodle 4.2.8 (Build: 20240610) (2d41ac46f45)
mod_quiz\question\bank\custom_view Class Reference

Subclass to customise the view of the question bank for the quiz editing screen. More...

Inheritance diagram for mod_quiz\question\bank\custom_view:
core_question\local\bank\view

Public Member Functions

 __construct ($contexts, $pageurl, $course, $cm, $quiz)
 Constructor.
 
 add_searchcondition ($searchcondition)
 Add another search control to this view.
 
 add_to_quiz_url ($questionid)
 URL of add to quiz.
 
 base_url ()
 Returns the base url.
 
 copy_question_moodle_url ($questionid)
 Get the URL for duplicating a question as a moodle url.
 
 copy_question_url ($questionid)
 Get the URL for duplicating a given question.
 
 display ($pagevars, $tabname)
 Shows the question bank interface.
 
 edit_question_moodle_url ($questionid)
 Get the URL for editing a question as a moodle url.
 
 edit_question_url ($questionid)
 Get the URL for editing a question as a HTML-escaped string.
 
 get_aggregate_statistic (int $questionid, string $fieldname)
 Get the aggregated value of a particular statistic for a particular question.
 
 get_column_count ()
 Get the count of the columns.
 
 get_courseid ()
 Get course id.
 
 get_most_specific_context ()
 Get the context we are displaying the question bank for.
 
 get_primary_sort_order ($sort)
 Gets the primary sort order according to the default sort.
 
 get_visiblecolumns ()
 Gets visible columns.
 
 has_column ($colname)
 Checks if the column included in the output.
 
 is_listing_specific_versions ()
 Is this view showing separate versions of a question?
 
 new_sort_url ($sort, $newsortreverse)
 Get a URL to redisplay the page with a new sort for the question bank.
 
 preview_question_url ($question)
 Question preview url.
 
 process_actions ()
 Process actions for the selected action.
 
 process_actions_needing_ui ()
 Process actions with ui.
 
 render ($pagevars, $tabname)
 Renders the html question bank (same as display, but returns the result).
 
 set_quiz_has_attempts ($quizhasattempts)
 Let the question bank display know whether the quiz has been attempted, hence whether some bits of UI, like the add this question to the quiz icon, should be displayed.
 
 wanted_filters ($cat, $tagids, $showhidden, $recurse, $editcontexts, $showquestiontext)
 The filters for the question bank.
 

Public Attributes

array $bulkactions = []
 $bulkactions to identify the bulk actions for the api.
 
object cm_info null $cm
 if we are in a module context, the cm.
 
object $course
 the course we are within.
 
array $customfilterobjects = null
 to pass custom filters instead of the specified ones.
 
bool $enablefilters = true
 enable or disable filters while calling the API.
 
string $returnurl
 url of the new question page.
 
int const DEFAULT_PAGE_SIZE = 20
 number of questions per page to show in the add from question bank modal.
 
const MAX_SORTS = 3
 Maximum number of sorts allowed.
 
int const MAX_TEXT_LENGTH = 200
 The maximum displayed length of the category info.
 

Protected Member Functions

 build_query ()
 Create the SQL query to retrieve the indicated questions, based on core_question\bank\search\condition filters.
 
 create_new_question_form ($category, $canadd)
 Create a new question form.
 
 default_sort ()
 Default sort for question data.
 
 determine_required_statistics ()
 Work out the list of all the required statistics fields for this question bank view.
 
 display_advanced_search_form ($advancedsearch)
 Print the "advanced" UI elements for the form to select which questions.
 
 display_bottom_controls (\context $catcontext)
 Display the controls at the bottom of the list of questions.
 
 display_bottom_pagination ($pagination, $totalnumber, $perpage, $pageurl)
 Display bottom pagination bar.
 
 display_options_form ($showquestiontext)
 Display the form with options for which questions are displayed and how they are displayed.
 
 display_question_bank_header ()
 Override the base implementation in core_question\local\bank\view because we don't want to print the headers in the fragment for the modal.
 
 display_question_list ($pageurl, $categoryandcontext, $recurse=1, $page=0, $perpage=null, $addcontexts=[])
 Prints the table of questions in a category with interactions.
 
 display_questions ($questions)
 Display the questions.
 
 display_showtext_checkbox ($showquestiontext)
 Display the checkbox UI for toggling the display of the question text in the list.
 
 display_top_pagnation ($pagination)
 Display the top pagination bar.
 
 end_table ()
 End of the table html.
 
 get_column_type ($columnname)
 Check a column object from its name and get the object for sort.
 
 get_current_category ($categoryandcontext)
 Gets current selected category.
 
 get_question_bank_plugins ()
 Get the list of qbank plugins with available objects for features.
 
 get_question_count ()
 Get the number of questions.
 
 get_row_classes ($question, $rowcount)
 Gets the classes for the row.
 
 heading_column ()
 Specify the column heading.
 
 init_bulk_actions ()
 Initialize bulk actions.
 
 init_columns ($wanted, $heading='')
 Initializing table columns.
 
 init_search_conditions ()
 Initialize search conditions from plugins local_*_get_question_bank_search_conditions() must return an array of core_question\bank\search\condition objects.
 
 init_sort ()
 Initialise sorting.
 
 init_sort_from_params ()
 Override the base implementation in core_question\bank\view because we don't want it to read from the $_POST global variables for the sort parameters since they are not present in a fragment.
 
 load_page_questions ($page, $perpage)
 Load the questions we need to display.
 
 load_required_statistics (array $questions)
 Load the aggregate statistics that all the columns require.
 
 parse_subsort ($sort)
 Deal with a sort name of the form columnname, or colname_subsort by breaking it up, validating the bits that are present, and returning them.
 
 print_choose_category_message ()
 Print the text if category id not available.
 
 print_table ($questions)
 Prints the actual table with question.
 
 print_table_headers ()
 Print table headers from child classes.
 
 print_table_row ($question, $rowcount)
 Prints the table row from child classes.
 
 sort_to_params ($sorts)
 Sort to parameters.
 
 start_table ()
 Start of the table html.
 
 wanted_columns ()
 Loads all the available columns.
 

Protected Attributes

moodle_url $baseurl
 base URL for the current page.
 
core_question local bank question_edit_contexts $contexts
 
string $countsql
 SQL to count the number of questions matching the current search conditions.
 
moodle_url $editquestionurl
 used as a basis for URLs that edit a question.
 
column_base[] $extrarows
 these are the 'columns' that are actually displayed as an additional row (e.g.
 
int null $lastchangedid
 id of the a question to highlight in the list (if present).
 
array $loadedstatistics = null
 Stores all the average statistics that this question bank view needs.
 
string $loadsql
 SQL to actually load the question data to display.
 
int $pagesize = DEFAULT_QUESTIONS_PER_PAGE
 page size to use (when we are not showing all questions).
 
stdClass $quiz = false
 $quiz the quiz settings.
 
bool $quizhasattempts = false
 $quizhasattempts whether the quiz this is used by has been attemptd.
 
column_base[] $requiredcolumns
 these are all the 'columns' that are part of the display.
 
condition[] $searchconditions = []
 search conditions.
 
array $sort
 list of column class names for which columns to sort on.
 
array $sqlparams
 params used by $countsql and $loadsql (which currently must be the same).
 
column_base[] $visiblecolumns
 these are the 'columns' that are actually displayed as a column, in order.
 

Detailed Description

Subclass to customise the view of the question bank for the quiz editing screen.

Author
2021 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

Constructor & Destructor Documentation

◆ __construct()

mod_quiz\question\bank\custom_view::__construct ( $contexts,
$pageurl,
$course,
$cm,
$quiz )

Constructor.

Parameters
core_question\local\bank\question_edit_contexts$contexts
moodle_url$pageurl
stdClass$coursecourse settings
stdClass$cmactivity settings.
stdClass$quizquiz settings.

Member Function Documentation

◆ add_searchcondition()

core_question\local\bank\view::add_searchcondition ( $searchcondition)
inherited

Add another search control to this view.

Parameters
condition$searchconditionthe condition to add.

◆ add_to_quiz_url()

mod_quiz\question\bank\custom_view::add_to_quiz_url ( $questionid)

URL of add to quiz.

Parameters
$questionid
Return values
moodle_url

◆ build_query()

mod_quiz\question\bank\custom_view::build_query ( )
protected

Create the SQL query to retrieve the indicated questions, based on core_question\bank\search\condition filters.

Reimplemented from core_question\local\bank\view.

◆ copy_question_moodle_url()

core_question\local\bank\view::copy_question_moodle_url ( $questionid)
inherited

Get the URL for duplicating a question as a moodle url.

Parameters
int$questionidthe question id.
Return values
moodle_urlthe URL.

◆ copy_question_url()

core_question\local\bank\view::copy_question_url ( $questionid)
inherited

Get the URL for duplicating a given question.

Parameters
int$questionidthe question id.
Return values
stringthe URL, HTML-escaped.

◆ create_new_question_form()

mod_quiz\question\bank\custom_view::create_new_question_form ( $category,
$canadd )
protected

Create a new question form.

Parameters
false | mixed | stdClass$category
bool$canadd

Reimplemented from core_question\local\bank\view.

◆ default_sort()

mod_quiz\question\bank\custom_view::default_sort ( )
protected

Default sort for question data.

Return values
int[]

Reimplemented from core_question\local\bank\view.

◆ determine_required_statistics()

core_question\local\bank\view::determine_required_statistics ( )
protectedinherited

Work out the list of all the required statistics fields for this question bank view.

This gathers all the required fields from all columns, so they can all be loaded at once.

Return values
string[]the names of all the required fields for this question bank view.

◆ display()

core_question\local\bank\view::display ( $pagevars,
$tabname )
inherited

Shows the question bank interface.

The function also processes a number of actions:

Actions affecting the question pool: move Moves a question to a different category deleteselected Deletes the selected questions from the category Other actions: category Chooses the category params: $tabname question bank edit tab name, for permission checking $pagevars current list of page variables

Parameters
string$tabname
array$pagevars

◆ display_advanced_search_form()

core_question\local\bank\view::display_advanced_search_form ( $advancedsearch)
protectedinherited

Print the "advanced" UI elements for the form to select which questions.

Hidden by default.

Parameters
array$advancedsearch

Reimplemented in qbank_history\question_history_view.

◆ display_bottom_controls()

mod_quiz\question\bank\custom_view::display_bottom_controls ( \context $catcontext)
protected

Display the controls at the bottom of the list of questions.

Parameters
context$catcontextThe context of the category being displayed.

Reimplemented from core_question\local\bank\view.

◆ display_bottom_pagination()

core_question\local\bank\view::display_bottom_pagination ( $pagination,
$totalnumber,
$perpage,
$pageurl )
protectedinherited

Display bottom pagination bar.

Parameters
string$pagination
int$totalnumber
int$perpage
moodle_url$pageurl

◆ display_options_form()

core_question\local\bank\view::display_options_form ( $showquestiontext)
protectedinherited

Display the form with options for which questions are displayed and how they are displayed.

Parameters
bool$showquestiontextDisplay the text of the question within the list.

◆ display_question_bank_header()

mod_quiz\question\bank\custom_view::display_question_bank_header ( )
protected

Override the base implementation in core_question\local\bank\view because we don't want to print the headers in the fragment for the modal.

Reimplemented from core_question\local\bank\view.

◆ display_question_list()

core_question\local\bank\view::display_question_list ( $pageurl,
$categoryandcontext,
$recurse = 1,
$page = 0,
$perpage = null,
$addcontexts = [] )
protectedinherited

Prints the table of questions in a category with interactions.

Parameters
moodle_url$pageurlThe URL to reload this page.
string$categoryandcontext'categoryID,contextID'.
int$recurseWhether to include subcategories.
int$pageThe number of the page to be displayed
int | null$perpageNumber of questions to show per page
array$addcontextscontexts where the user is allowed to add new questions.

◆ display_questions()

core_question\local\bank\view::display_questions ( $questions)
protectedinherited

Display the questions.

Parameters
array$questions

◆ display_showtext_checkbox()

core_question\local\bank\view::display_showtext_checkbox ( $showquestiontext)
protectedinherited

Display the checkbox UI for toggling the display of the question text in the list.

Parameters
bool$showquestiontextthe current or default value for whether to display the text.

◆ display_top_pagnation()

core_question\local\bank\view::display_top_pagnation ( $pagination)
protectedinherited

Display the top pagination bar.

Parameters
object$pagination

◆ edit_question_moodle_url()

core_question\local\bank\view::edit_question_moodle_url ( $questionid)
inherited

Get the URL for editing a question as a moodle url.

Parameters
int$questionidthe question id.
Return values
moodle_urlthe URL, HTML-escaped.

◆ edit_question_url()

core_question\local\bank\view::edit_question_url ( $questionid)
inherited

Get the URL for editing a question as a HTML-escaped string.

Parameters
int$questionidthe question id.
Return values
stringthe URL, HTML-escaped.

◆ end_table()

core_question\local\bank\view::end_table ( )
protectedinherited

End of the table html.

Deprecated
since Moodle 4.0
See also
print_table()
Todo
Final deprecation on Moodle 4.4 MDL-72438

◆ get_aggregate_statistic()

core_question\local\bank\view::get_aggregate_statistic ( int $questionid,
string $fieldname )
inherited

Get the aggregated value of a particular statistic for a particular question.

You can only get values for the questions on the current page of the question bank view, and only if you declared the need for this statistic in the get_required_statistics_fields() method of your question bank column.

Parameters
int$questionidthe id of a question
string$fieldnamethe name of a statistics field, e.g. 'facility'.
Return values
float|nullthe average (across all users) of this statistic for this question. Null if the value is not available right now.

◆ get_column_count()

core_question\local\bank\view::get_column_count ( )
inherited

Get the count of the columns.

Return values
intThe number of columns in the table.

◆ get_column_type()

core_question\local\bank\view::get_column_type ( $columnname)
protectedinherited

Check a column object from its name and get the object for sort.

Parameters
string$columnname

◆ get_courseid()

core_question\local\bank\view::get_courseid ( )
inherited

Get course id.

Return values
mixed

◆ get_current_category()

core_question\local\bank\view::get_current_category ( $categoryandcontext)
protectedinherited

Gets current selected category.

Parameters
string$categoryandcontext
Return values
false|mixed|stdClass

◆ get_most_specific_context()

core_question\local\bank\view::get_most_specific_context ( )
inherited

Get the context we are displaying the question bank for.

Return values
contextcontext object.

◆ get_primary_sort_order()

core_question\local\bank\view::get_primary_sort_order ( $sort)
inherited

Gets the primary sort order according to the default sort.

Parameters
string$sorta column or column_subsort name.
Return values
intthe current sort order for this column -1, 0, 1

◆ get_question_bank_plugins()

mod_quiz\question\bank\custom_view::get_question_bank_plugins ( )
protected

Get the list of qbank plugins with available objects for features.

Return values
array

Reimplemented from core_question\local\bank\view.

◆ get_question_count()

core_question\local\bank\view::get_question_count ( )
protectedinherited

Get the number of questions.

Return values
int

◆ get_row_classes()

core_question\local\bank\view::get_row_classes ( $question,
$rowcount )
protectedinherited

Gets the classes for the row.

Parameters
stdClass$question
int$rowcount
Return values
array

◆ get_visiblecolumns()

core_question\local\bank\view::get_visiblecolumns ( )
inherited

Gets visible columns.

Return values
arrayVisible columns.

◆ has_column()

core_question\local\bank\view::has_column ( $colname)
inherited

Checks if the column included in the output.

Parameters
string$colnamea column internal name.
Return values
boolis this column included in the output?

◆ heading_column()

mod_quiz\question\bank\custom_view::heading_column ( )
protected

Specify the column heading.

Return values
stringColumn name for the heading

Reimplemented from core_question\local\bank\view.

◆ init_columns()

core_question\local\bank\view::init_columns ( $wanted,
$heading = '' )
protectedinherited

Initializing table columns.

Parameters
array$wantedCollection of column names
string$headingThe name of column that is set as heading

◆ init_sort_from_params()

mod_quiz\question\bank\custom_view::init_sort_from_params ( )
protected

Override the base implementation in core_question\bank\view because we don't want it to read from the $_POST global variables for the sort parameters since they are not present in a fragment.

Unfortunately the best we can do is to look at the URL for those parameters (only marginally better really).

Reimplemented from core_question\local\bank\view.

◆ is_listing_specific_versions()

core_question\local\bank\view::is_listing_specific_versions ( )
inherited

Is this view showing separate versions of a question?

Return values
bool

Reimplemented in qbank_history\question_history_view.

◆ load_page_questions()

core_question\local\bank\view::load_page_questions ( $page,
$perpage )
protectedinherited

Load the questions we need to display.

Parameters
int$pagepage to display.
int$perpagenumber of questions per page.
Return values
moodle_recordsetquestionid => data about each question.

◆ load_required_statistics()

core_question\local\bank\view::load_required_statistics ( array $questions)
protectedinherited

Load the aggregate statistics that all the columns require.

Parameters
stdClass[]$questionsthe questions that will be displayed indexed by question id.

◆ new_sort_url()

core_question\local\bank\view::new_sort_url ( $sort,
$newsortreverse )
inherited

Get a URL to redisplay the page with a new sort for the question bank.

Parameters
string$sortthe column, or column_subsort to sort on.
bool$newsortreversewhether to sort in reverse order.
Return values
stringThe new URL.

◆ parse_subsort()

core_question\local\bank\view::parse_subsort ( $sort)
protectedinherited

Deal with a sort name of the form columnname, or colname_subsort by breaking it up, validating the bits that are present, and returning them.

If there is no subsort, then $subsort is returned as ''.

Parameters
string$sortthe sort parameter to process.
Return values
array[$colname, $subsort].

◆ preview_question_url()

mod_quiz\question\bank\custom_view::preview_question_url ( $question)

Question preview url.

Parameters
stdClass$question
Return values
moodle_url

Reimplemented from core_question\local\bank\view.

◆ print_table()

core_question\local\bank\view::print_table ( $questions)
protectedinherited

Prints the actual table with question.

Parameters
array$questions

◆ print_table_row()

core_question\local\bank\view::print_table_row ( $question,
$rowcount )
protectedinherited

Prints the table row from child classes.

Parameters
stdClass$question
int$rowcount

◆ process_actions()

core_question\local\bank\view::process_actions ( )
inherited

Process actions for the selected action.

Deprecated
since Moodle 4.0
Todo
Final deprecation on Moodle 4.4 MDL-72438

◆ process_actions_needing_ui()

core_question\local\bank\view::process_actions_needing_ui ( )
inherited

Process actions with ui.

Return values
bool
Deprecated
since Moodle 4.0
Todo
Final deprecation on Moodle 4.4 MDL-72438

◆ render()

mod_quiz\question\bank\custom_view::render ( $pagevars,
$tabname )

Renders the html question bank (same as display, but returns the result).

Note that you can only output this rendered result once per page, as it contains IDs which must be unique.

Parameters
array$pagevars
string$tabname
Return values
stringHTML code for the form

◆ set_quiz_has_attempts()

mod_quiz\question\bank\custom_view::set_quiz_has_attempts ( $quizhasattempts)

Let the question bank display know whether the quiz has been attempted, hence whether some bits of UI, like the add this question to the quiz icon, should be displayed.

Parameters
bool$quizhasattemptswhether the quiz has attempts.

◆ sort_to_params()

core_question\local\bank\view::sort_to_params ( $sorts)
protectedinherited

Sort to parameters.

Parameters
array$sorts
Return values
array

◆ start_table()

core_question\local\bank\view::start_table ( )
protectedinherited

Start of the table html.

Deprecated
since Moodle 4.0
See also
print_table()
Todo
Final deprecation on Moodle 4.4 MDL-72438

◆ wanted_columns()

core_question\local\bank\view::wanted_columns ( )
protectedinherited

Loads all the available columns.

Return values
array

Reimplemented in qbank_history\question_history_view.

◆ wanted_filters()

mod_quiz\question\bank\custom_view::wanted_filters ( $cat,
$tagids,
$showhidden,
$recurse,
$editcontexts,
$showquestiontext )

The filters for the question bank.

Parameters
string$cat'categoryid,contextid'
array$tagidscurrent list of selected tags
bool$showhiddenwhether deleted questions should be displayed
int$recurseWhether to include subcategories
array$editcontextsparent contexts
bool$showquestiontextwhether the text of each question should be shown in the list

Reimplemented from core_question\local\bank\view.

Member Data Documentation

◆ $baseurl

moodle_url core_question\local\bank\view::$baseurl
protectedinherited

base URL for the current page.

Used as the basis for making URLs for actions that reload the page.

◆ $extrarows

column_base [] core_question\local\bank\view::$extrarows
protectedinherited

these are the 'columns' that are actually displayed as an additional row (e.g.

question text), in order. Array keys are the class name.

◆ $loadedstatistics

array core_question\local\bank\view::$loadedstatistics = null
protectedinherited

Stores all the average statistics that this question bank view needs.

This field gets initialised in {

See also
display_question_list()}. It is a two dimensional $this->loadedstatistics[$questionid][$fieldname] = $average value of that statistics for that question. Column classes in qbank plugins can access these values using {
get_aggregate_statistic()}.

◆ $requiredcolumns

column_base [] core_question\local\bank\view::$requiredcolumns
protectedinherited

these are all the 'columns' that are part of the display.

Array keys are the class name.

◆ $visiblecolumns

column_base [] core_question\local\bank\view::$visiblecolumns
protectedinherited

these are the 'columns' that are actually displayed as a column, in order.

Array keys are the class name.


The documentation for this class was generated from the following file: