/**
 * Script to show all the quizzes in the site with how many attempts they have
 * that will need to be upgraded.
 *
 * @package    local
 * @subpackage qeupgradehelper
 * @copyright  2010 The Open University
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
require_once dirname(__FILE__) . '/../../config.php';
require_once dirname(__FILE__) . '/locallib.php';
require_once $CFG->libdir . '/adminlib.php';
require_login();
require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
local_qeupgradehelper_require_not_upgraded();
admin_externalpage_setup('qeupgradehelper', '', array(), local_qeupgradehelper_url(''));
$PAGE->navbar->add(get_string('listpreupgrade', 'local_qeupgradehelper'));
$renderer = $PAGE->get_renderer('local_qeupgradehelper');
$quizzes = new local_qeupgradehelper_pre_upgrade_quiz_list();
// Look to see if the admin has set things up to only upgrade certain attempts.
$partialupgradefile = $CFG->dirroot . '/local/qeupgradehelper/partialupgrade.php';
$partialupgradefunction = 'local_qeupgradehelper_get_quizzes_to_upgrade';
if (is_readable($partialupgradefile)) {
    include_once $partialupgradefile;
    if (function_exists($partialupgradefunction)) {
        $quizzes = new local_qeupgradehelper_pre_upgrade_quiz_list_restricted($partialupgradefunction());
    }
}
$numveryoldattemtps = local_qeupgradehelper_get_num_very_old_attempts();
if ($quizzes->is_empty()) {
    echo $renderer->simple_message_page(get_string('noquizattempts', 'local_qeupgradehelper'));
 public function get_row($quizinfo)
 {
     $row = parent::get_row($quizinfo);
     $row[] = html_writer::link(local_qeupgradehelper_url('resetquiz', array('quizid' => $quizinfo->id)), get_string('resetquiz', 'local_qeupgradehelper'));
     return $row;
 }
 * database from backup, and then use this script to extract the problem case
 * as a unit test. Then you can fix that unit tests. Then you can repeat the upgrade.)
 *
 * @package    local
 * @subpackage qeupgradehelper
 * @copyright  2009 The Open University
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
require_once dirname(__FILE__) . '/../../config.php';
require_once dirname(__FILE__) . '/locallib.php';
require_once dirname(__FILE__) . '/extracttestcase_form.php';
require_once $CFG->libdir . '/questionlib.php';
require_once $CFG->libdir . '/adminlib.php';
require_login();
require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
admin_externalpage_setup('qeupgradehelper', '', array(), local_qeupgradehelper_url('extracttestcase'));
$PAGE->navbar->add(get_string('extracttestcase', 'local_qeupgradehelper'));
$renderer = $PAGE->get_renderer('local_qeupgradehelper');
$mform = new local_qeupgradehelper_extract_options_form(new moodle_url('/local/qeupgradehelper/extracttestcase.php'), null, 'get');
echo $OUTPUT->header();
if ($fromform = $mform->get_data()) {
    $qsid = null;
    if (!empty($fromform->attemptid) && !empty($fromform->questionid)) {
        $qsid = local_qeupgradehelper_get_session_id($fromform->attemptid, $fromform->questionid);
        $name = 'qsession' . $qsid;
    } else {
        if (!empty($fromform->statehistory)) {
            notify('Searching ...', 'notifysuccess');
            flush();
            $qsid = local_qeupgradehelper_find_test_case($fromform->behaviour, $fromform->statehistory, $fromform->qtype, $fromform->extratests);
            $name = 'history' . $fromform->statehistory;
 */
require_once dirname(__FILE__) . '/../../config.php';
require_once dirname(__FILE__) . '/locallib.php';
require_once dirname(__FILE__) . '/afterupgradelib.php';
require_once $CFG->libdir . '/adminlib.php';
$quizid = required_param('quizid', PARAM_INT);
$confirmed = optional_param('confirmed', false, PARAM_BOOL);
require_login();
require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
local_qeupgradehelper_require_upgraded();
admin_externalpage_setup('qeupgradehelper', '', array(), local_qeupgradehelper_url('resetquiz', array('quizid' => $quizid)));
$PAGE->navbar->add(get_string('listupgraded', 'local_qeupgradehelper'), local_qeupgradehelper_url('listtodo'));
$PAGE->navbar->add(get_string('resetquiz', 'local_qeupgradehelper'));
$renderer = $PAGE->get_renderer('local_qeupgradehelper');
$quizsummary = local_qeupgradehelper_get_resettable_quiz($quizid);
if (!$quizsummary) {
    print_error('invalidquizid', 'local_qeupgradehelper', local_qeupgradehelper_url('listupgraded'));
}
$quizsummary->name = format_string($quizsummary->name);
if ($confirmed && data_submitted() && confirm_sesskey()) {
    // Actually do the conversion.
    echo $renderer->header();
    echo $renderer->heading(get_string('resettingquizattempts', 'local_qeupgradehelper', $quizsummary));
    $upgrader = new local_qeupgradehelper_attempt_upgrader($quizsummary->id, $quizsummary->resettableattempts);
    $upgrader->reset_all_resettable_attempts();
    echo $renderer->heading(get_string('resetcomplete', 'local_qeupgradehelper'));
    echo $renderer->end_of_page_link(local_qeupgradehelper_url('listupgraded'), get_string('listupgraded', 'local_qeupgradehelper'));
    echo $renderer->footer();
    exit;
}
echo $renderer->reset_quiz_are_you_sure($quizsummary);
 /**
  * Output a link back to the plugin index page.
  * @return string html to output.
  */
 public function back_to_index()
 {
     return $this->end_of_page_link(local_qeupgradehelper_url('index'), get_string('backtoindex', 'local_qeupgradehelper'));
 }