/**
  * Create an instance of this class representing the structure of a given offlinequiz.
  * @param \offlinequiz $offlinequizobj the offlinequiz.
  * @return structure
  */
 public static function create_for_offlinequiz($offlinequizobj)
 {
     $structure = self::create();
     $structure->offlinequizobj = $offlinequizobj;
     $structure->populate_structure($offlinequizobj->get_offlinequiz());
     return $structure;
 }
$pageaction = optional_param('action', '', PARAM_ALPHA);
// Used to simulate a DELETE command.
$maxmark = optional_param('maxmark', '', PARAM_RAW);
$page = optional_param('page', '', PARAM_INT);
$PAGE->set_url('/mod/offlinequiz/edit-rest.php', array('offlinequizid' => $offlinequizid, 'class' => $class));
require_sesskey();
$offlinequiz = $DB->get_record('offlinequiz', array('id' => $offlinequizid), '*', MUST_EXIST);
if ($offlinequizgroup = $DB->get_record('offlinequiz_groups', array('id' => $offlinegroupid))) {
    $offlinequiz->groupid = $offlinequizgroup->id;
} else {
    print_error('invalidgroupnumber', 'offlinequiz');
}
$cm = get_coursemodule_from_instance('offlinequiz', $offlinequiz->id, $offlinequiz->course);
$course = $DB->get_record('course', array('id' => $offlinequiz->course), '*', MUST_EXIST);
require_login($course, false, $cm);
$offlinequizobj = new offlinequiz($offlinequiz, $cm, $course);
$structure = $offlinequizobj->get_structure();
$modcontext = context_module::instance($cm->id);
echo $OUTPUT->header();
// Send headers.
// OK, now let's process the parameters and do stuff
// MDL-10221 the DELETE method is not allowed on some web servers,
// so we simulate it with the action URL param.
$requestmethod = $_SERVER['REQUEST_METHOD'];
if ($pageaction == 'DELETE') {
    $requestmethod = 'DELETE';
}
switch ($requestmethod) {
    case 'POST':
    case 'GET':
        // For debugging.
 /**
  * Render the edit grade page
  *
  * @param \offlinequiz $offlinequizobj object containing all the offlinequiz settings information.
  * @param structure $structure object containing the structure of the offlinequiz.
  * @param \question_edit_contexts $contexts the relevant question bank contexts.
  * @param \moodle_url $pageurl the canonical URL of this page.
  * @param array $pagevars the variables from {@link question_edit_setup()}.
  * @return string HTML to output.
  */
 public function edit_grades_page(\offlinequiz $offlinequizobj, structure $structure, \question_edit_contexts $contexts, \moodle_url $pageurl, array $pagevars, array $groupletters)
 {
     $offlinequiz = $offlinequizobj->get_offlinequiz();
     $output = '';
     // Page title.
     $output .= $this->heading_with_help(get_string('gradingofflinequizx', 'offlinequiz', format_string($offlinequizobj->get_offlinequiz_name())) . ' (' . get_string('group', 'offlinequiz') . ' ' . $groupletters[$offlinequiz->groupnumber] . ') ', 'editingofflinequiz', 'offlinequiz', '', get_string('basicideasofofflinequiz', 'offlinequiz'), 2);
     ///echo $OUTPUT->heading(get_string('gradingofflinequiz', 'offlinequiz') . ': ' . $offlinequiz->name. ' (' .
     //             get_string('group', 'offlinequiz') . ' ' . $groupletters[$offlinequiz->groupnumber] . ')');
     // Information at the top.
     $output .= $this->offlinequiz_group_selector($offlinequiz, $pageurl);
     $output .= $this->offlinequiz_information($structure);
     $output .= html_writer::div('<br/>', 'clear');
     $output .= $this->maximum_grade_input($offlinequiz, $this->page->url);
     $output .= $this->offlinequiz_state_warnings($structure);
     $output .= $this->total_marks($offlinequiz);
     $output .= $this->start_grading_form($offlinequiz, $pageurl);
     // Show the questions organised into sections and pages.
     $output .= $this->start_section_list();
     // Show the questions in one form for single submit.
     $sections = $structure->get_offlinequiz_sections();
     foreach ($sections as $section) {
         $output .= $this->start_section($section);
         $questionhtml = '';
         foreach ($structure->get_questions_in_section($section->id) as $question) {
             $questionhtml .= $this->question_row_for_grading($structure, $question, $contexts, $pagevars, $pageurl);
         }
         $output .= html_writer::tag('ul', $questionhtml, array('class' => 'section img-text'));
         $output .= $this->end_section();
     }
     $output .= $this->end_section_list();
     $output .= $this->end_grading_form();
     return $output;
 }
Esempio n. 4
0
$thispageurl->param('groupnumber', $offlinequiz->groupnumber);
// Load the offlinequiz group and set the groupid in the offlinequiz object.
if ($offlinequizgroup = offlinequiz_get_group($offlinequiz, $groupnumber)) {
    $offlinequiz->groupid = $offlinequizgroup->id;
    $groupquestions = offlinequiz_get_group_question_ids($offlinequiz);
    $offlinequiz->questions = $groupquestions;
} else {
    print_error('invalidgroupnumber', 'offlinequiz');
}
$offlinequiz->sumgrades = $offlinequizgroup->sumgrades;
$offlinequizhasattempts = offlinequiz_has_scanned_pages($offlinequiz->id);
$docscreated = $offlinequiz->docscreated;
$PAGE->set_url($thispageurl);
// Get the course object and related bits.
$course = $DB->get_record('course', array('id' => $offlinequiz->course), '*', MUST_EXIST);
$offlinequizobj = new offlinequiz($offlinequiz, $cm, $course);
$structure = $offlinequizobj->get_structure();
if ($warning = optional_param('warning', '', PARAM_TEXT)) {
    $structure->add_warning(urldecode($warning));
}
// You need mod/offlinequiz:manage in addition to question capabilities to access this page.
require_capability('mod/offlinequiz:manage', $contexts->lowest());
// Log this visit.
$params = array('courseid' => $course->id, 'context' => $contexts->lowest(), 'other' => array('offlinequizid' => $offlinequiz->id));
$event = \mod_offlinequiz\event\edit_page_viewed::create($params);
$event->trigger();
// Process commands ============================================================.
// Get the list of question ids had their check-boxes ticked.
$selectedslots = array();
$params = (array) data_submitted();
foreach ($params as $key => $value) {
 * @package       mod
 * @subpackage    offlinequiz
 * @author        Juergen Zimmer <*****@*****.**>
 * @copyright     2015 Academic Moodle Cooperation {@link http://www.academic-moodle-cooperation.org}
 * @since         Moodle 2.8
 * @license       http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
require_once __DIR__ . '/../../config.php';
require_once $CFG->dirroot . '/mod/offlinequiz/locallib.php';
require_once $CFG->dirroot . '/mod/offlinequiz/offlinequiz.class.php';
$cmid = required_param('cmid', PARAM_INT);
$offlinequizid = required_param('offlinequizid', PARAM_INT);
$offlinegroupid = required_param('offlinegroupid', PARAM_INT);
$slotnumber = required_param('slot', PARAM_INT);
$repagtype = required_param('repag', PARAM_INT);
require_sesskey();
$offlinequizobj = offlinequiz::create($offlinequizid, $offlinegroupid);
$group = $DB->get_record('offlinequiz_groups', array('id' => $offlinegroupid));
require_login($offlinequizobj->get_course(), false, $offlinequizobj->get_cm());
require_capability('mod/offlinequiz:manage', $offlinequizobj->get_context());
if (offlinequiz_has_scanned_pages($offlinequizid)) {
    $reportlink = offlinequiz_attempt_summary_link_to_reports($offlinequizobj->get_offlinequiz(), $offlinequizobj->get_cm(), $offlinequizobj->get_context());
    throw new \moodle_exception('cannoteditafterattempts', 'offlinequiz', new moodle_url('/mod/offlinequiz/edit.php', array('cmid' => $cmid)), $reportlink);
}
$slotnumber++;
$repage = new \mod_offlinequiz\repaginate($offlinequizid, $offlinegroupid);
$repage->repaginate_slots($slotnumber, $repagtype);
offlinequiz_delete_template_usages($offlinequizobj->get_offlinequiz());
$structure = $offlinequizobj->get_structure();
$slots = $structure->refresh_page_numbers_and_update_db($structure->get_offlinequiz());
redirect(new moodle_url('edit.php', array('cmid' => $offlinequizobj->get_cmid(), 'groupnumber' => $group->number)));