if (!($course = get_record("course", "id", $qcreate->course))) { error("Course is misconfigured"); } if (!($cm = get_coursemodule_from_instance("qcreate", $qcreate->id, $course->id))) { error("Course Module ID was incorrect"); } } $qcreate->cmidnumber = $cm->id; $requireds = get_records('qcreate_required', 'qcreateid', $qcreate->id, 'qtype', 'qtype, no, id'); $thisurl = new moodle_url($CFG->wwwroot . '/mod/qcreate/view.php'); $thisurl->params(array('id' => $cm->id)); $modulecontext = get_context_instance(CONTEXT_MODULE, $cm->id); //modedit.php forwards to this page after creating coursemodule record. //this is the first chance we get to set capabilities in the newly created //context. qcreate_student_q_access_sync($qcreate, $modulecontext, $course); require_login($course->id); if (has_capability('mod/qcreate:grade', $modulecontext)) { redirect($CFG->wwwroot . '/mod/qcreate/edit.php?cmid=' . $cm->id); } /// Print the page header $strqcreates = get_string("modulenameplural", "qcreate"); $strqcreate = get_string("modulename", "qcreate"); $navlinks = array(); $navlinks[] = array('name' => $strqcreates, 'link' => "index.php?id={$course->id}", 'type' => 'activity'); $navlinks[] = array('name' => format_string($qcreate->name), 'link' => '', 'type' => 'activityinstance'); $navigation = build_navigation($navlinks); $headerargs = array(format_string($qcreate->name), "", $navigation, "", "", true, update_module_button($cm->id, $course->id, $strqcreate), navmenu($course, $cm)); if (!($cats = get_categories_for_contexts($modulecontext->id))) { //if it has not been made yet then make a default cat question_make_default_categories(array($modulecontext));
/** * Function to be run periodically according to the moodle cron * This function searches for things that need to be done, such * as sending out mail, toggling flags etc ... * * @uses $CFG * @return boolean * @todo Finish documenting this function **/ function qcreate_cron() { global $CFG; $sql = "SELECT q.*, cm.id as cmidnumber, q.course as courseid\n FROM {$CFG->prefix}qcreate q, {$CFG->prefix}course_modules cm, {$CFG->prefix}modules m\n WHERE m.name='qcreate' AND m.id=cm.module AND cm.instance=q.id"; $rs = get_recordset_sql($sql); while ($qcreate = rs_fetch_next_record($rs)) { $context = get_context_instance(CONTEXT_MODULE, $qcreate->cmidnumber); if ($users = get_users_by_capability($context, 'mod/qcreate:submit', '', '', '', '', '', '', false)) { $users = array_keys($users); $sql = 'SELECT q.* FROM ' . $CFG->prefix . 'question_categories qc, ' . $CFG->prefix . 'question q ' . 'LEFT JOIN ' . $CFG->prefix . 'qcreate_grades g ON q.id = g.questionid ' . 'WHERE g.timemarked IS NULL AND q.createdby IN (' . implode(',', $users) . ') ' . 'AND qc.id = q.category ' . 'AND q.hidden=\'0\' AND q.parent=\'0\' ' . 'AND qc.contextid =' . $context->id; $questionrs = get_recordset_sql($sql); $toupdates = array(); while ($question = rs_fetch_next_record($questionrs)) { qcreate_process_local_grade($qcreate, $question, true); $toupdates[] = $question->createdby; } rs_close($questionrs); $toupdates = array_unique($toupdates); foreach ($toupdates as $toupdate) { qcreate_update_grades($qcreate, $toupdate); } } qcreate_student_q_access_sync($qcreate); } rs_close($rs); return true; }