mirror of
https://github.com/moodle/moodle.git
synced 2025-01-29 19:50:14 +01:00
MDL-16409 Make a new admin report to list all questions of a particular type, by context
Partially done. This has the settings form, and queries the database for the right data, but does not format it correctly yet.
This commit is contained in:
parent
2ddd044af8
commit
3041a0dfed
@ -10,6 +10,7 @@
|
||||
require_login();
|
||||
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
|
||||
require_capability('moodle/question:config', $systemcontext);
|
||||
$canviewreports = has_capability('moodle/site:viewreports', $systemcontext);
|
||||
|
||||
admin_externalpage_setup('manageqtypes');
|
||||
|
||||
@ -179,8 +180,12 @@
|
||||
} else {
|
||||
$strcount = $counts[$qtypename]->numquestions;
|
||||
}
|
||||
$row[] = '<a href="' . admin_url('/report/questioninstances/index.php?qtype=' . $qtypename) .
|
||||
'">' . $strcount . '</a>';
|
||||
if ($canviewreports) {
|
||||
$row[] = '<a href="' . admin_url('/report/questioninstances/index.php?qtype=' . $qtypename) .
|
||||
'">' . $strcount . '</a>';
|
||||
} else {
|
||||
$strcount;
|
||||
}
|
||||
} else {
|
||||
$row[] = 0;
|
||||
}
|
||||
|
83
admin/report/questioninstances/index.php
Normal file
83
admin/report/questioninstances/index.php
Normal file
@ -0,0 +1,83 @@
|
||||
<?php // $Id$
|
||||
/**
|
||||
* For a given question type, list the number of
|
||||
*
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
|
||||
* @package roles
|
||||
*/
|
||||
|
||||
/** */
|
||||
require_once(dirname(__FILE__).'/../../../config.php');
|
||||
require_once($CFG->libdir.'/adminlib.php');
|
||||
require_once($CFG->libdir.'/questionlib.php');
|
||||
|
||||
// Check permissions.
|
||||
require_login();
|
||||
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
|
||||
require_capability('moodle/site:viewreports', $systemcontext);
|
||||
|
||||
// Get URL parameters.
|
||||
$requestedqtype = optional_param('qtype', '', PARAM_SAFEDIR);
|
||||
|
||||
// Log.
|
||||
add_to_log(SITEID, "admin", "report questioninstances", "report/questioninstances/index.php?qtype=$requestedqtype", $requestedqtype);
|
||||
|
||||
// Print the header.
|
||||
admin_externalpage_setup('reportquestioninstances');
|
||||
admin_externalpage_print_header();
|
||||
|
||||
// Prepare the list of capabilites to choose from
|
||||
$qtypechoices = array();
|
||||
foreach ($QTYPES as $qtype) {
|
||||
$qtypechoices[$qtype->name()] = $qtype->local_name();
|
||||
}
|
||||
|
||||
// Print the settings form.
|
||||
print_box_start('generalbox boxwidthwide boxaligncenter centerpara');
|
||||
echo '<form method="get" action="." id="settingsform"><div>';
|
||||
print_heading(get_string('reportsettings', 'report_questioninstances'));
|
||||
echo '<p id="intro">', get_string('intro', 'report_questioninstances') , '</p>';
|
||||
echo '<p><label for="menuqtype"> ' . get_string('questiontype', 'admin') . '</label> ';
|
||||
choose_from_menu($qtypechoices, 'qtype', $requestedqtype);
|
||||
echo '</p>';
|
||||
echo '<p><input type="submit" id="settingssubmit" value="' .
|
||||
get_string('getreport', 'report_questioninstances') . '" /></p>';
|
||||
echo '</div></form>';
|
||||
print_box_end();
|
||||
|
||||
// If we have a qtype to report on, generate the report.
|
||||
if ($requestedqtype) {
|
||||
|
||||
// Work out the bits needed for the SQL WHERE clauses.
|
||||
if ($requestedqtype == 'missingtype') {
|
||||
$othertypes = array_keys($QTYPES);
|
||||
$key = array_search('missingtype', $othertypes);
|
||||
unset($othertypes[$key]);
|
||||
list($sqlqtypetest, $params) = $DB->get_in_or_equals($othertypes, SQL_PARAMS_QM, '', false);
|
||||
} else {
|
||||
$sqlqtypetest = '= ?';
|
||||
$params = array($requestedqtype);
|
||||
}
|
||||
|
||||
// Get all the role_capabilities rows for this capability - that is, all
|
||||
// role definitions, and all role overrides.
|
||||
$counts = $DB->get_records_sql("
|
||||
SELECT qc.contextid, count(1) as numquestions, sum(hidden) as numhidden, con.id, con.contextlevel, con.instanceid, con.path, con.depth
|
||||
FROM {question} q
|
||||
JOIN {question_categories} qc ON q.category = qc.id
|
||||
JOIN {context} con ON con.id = qc.contextid
|
||||
WHERE qtype $sqlqtypetest
|
||||
GROUP BY contextid, con.id, con.contextlevel, con.instanceid, con.path, con.depth
|
||||
ORDER BY numquestions DESC, numhidden ASC", $params);
|
||||
|
||||
// Print the report heading.
|
||||
print_heading(get_string('reportforqtype', 'report_questioninstances', $QTYPES[$requestedqtype]->local_name()));
|
||||
|
||||
// Now, print the table of results.
|
||||
// TODO
|
||||
print_object($counts);
|
||||
}
|
||||
|
||||
// Footer.
|
||||
admin_externalpage_print_footer();
|
||||
?>
|
8
lang/en_utf8/report_questioninstances.php
Normal file
8
lang/en_utf8/report_questioninstances.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?PHP // $Id$
|
||||
|
||||
$string['getreport'] = 'Get the report';
|
||||
$string['intro'] = 'This report lists all the contexts in the system where there are questions of a particular type.';
|
||||
$string['reportforqtype'] = 'Report for question type \'$a\'';
|
||||
$string['reportsettings'] = 'Report settings';
|
||||
$string['questioninstances'] = 'Question instances';
|
||||
?>
|
@ -965,6 +965,12 @@ body#admin-modules table.generaltable td.c0
|
||||
#admin-report-capability-index h3 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
#admin-report-questioninstances-index #settingsform h2 {
|
||||
margin-top: 0;
|
||||
}
|
||||
#admin-report-questioninstances-index #settingsform p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#admin-roles-allowassign .buttons,
|
||||
#admin-roles-allowoverride .buttons,
|
||||
|
Loading…
x
Reference in New Issue
Block a user