Example #1
0
if (!has_capability('mod/emarking:printordersview', $context)) {
    print_error('Not allowed!');
}
$PAGE->set_url($url);
$PAGE->set_pagelayout('incourse');
$PAGE->navbar->add($category->name, $categoryurl);
$PAGE->navbar->add(get_string('printorders', 'mod_emarking'), $ordersurl);
$PAGE->navbar->add(get_string('statistics', 'mod_emarking'));
$PAGE->set_context($context);
$PAGE->set_heading(get_site()->fullname);
$PAGE->set_title(get_string('emarking', 'mod_emarking'));
require_login();
$pagenumber = optional_param('pag', 1, PARAM_INT);
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('statisticstotals', 'mod_emarking'));
echo $OUTPUT->tabtree(emarking_printoders_tabs($category), "printdetails");
$form = new emarking_dates_form(null, array('period' => $period, 'startdate' => $startdate, 'enddate' => $enddate, 'category' => $categoryid));
$form->display();
if ($form->get_data()) {
    if ($form->get_data()->period == 50) {
        $startdate = $form->get_data()->startdate;
        $enddate = $form->get_data()->enddate;
    }
    // TODO: More periods.
}
$filter = "WHERE (cc.path like '%/{$categoryid}/%' OR cc.path like '%/{$categoryid}')";
$datefilter = " AND e.examdate >= {$startdate} AND e.examdate < {$enddate}";
$sqlstats = "\n    SELECT EXAMS.id AS courseid,\n\tcategory,\n    coursename,\n    editingteachernames,\n    totalpages,\n    exams,\n    pagesperexam,\n    categorypath,\n    editingteacherids\nFROM (\nSELECT\n\tc.id,\n    c.fullname AS coursename,\n\tCOUNT(DISTINCT e.id) AS exams,\n    SUM((e.totalpages + e.extrasheets) * (e.totalstudents + e.extraexams)) AS totalpages,\n    AVG((e.totalpages + e.extrasheets) * (e.totalstudents + e.extraexams)) AS pagesperexam,\n    cc.name AS category,\n    cc.path AS categorypath\nFROM {emarking_exams} AS e\nINNER JOIN {course} AS c ON (e.course = c.id)\nINNER JOIN {user} AS u ON (e.requestedby = u.id)\nINNER JOIN {course_categories} AS cc ON (c.category = cc.id)\n{$filter}\n{$datefilter}\nGROUP BY c.id) AS EXAMS\nINNER JOIN (\nSELECT id,\n\tfullname,\n    SUM(editingteachers) AS editingteachers,\n    SUM(teachers) AS teachers,\n    SUM(students) AS students,\n    MAX(editingteachernames) AS editingteachernames,\n    MAX(teachernames) AS teachernames,\n    MAX(studentnames) AS studentnames,\n    MAX(editingteacherids) AS editingteacherids,\n    MAX(teacherids) AS teacherids,\n    MAX(studentids) AS studentids\nFROM (\nSELECT c.id,\n\tc.fullname,\n    ro.shortname,\n    CASE WHEN ro.shortname = 'editingteacher' THEN COUNT(DISTINCT uen.id) ELSE 0 END AS editingteachers,\n    CASE WHEN ro.shortname = 'editingteacher'\n        THEN GROUP_CONCAT(uen.firstname, ' ', uen.lastname SEPARATOR '#') ELSE '' END AS editingteachernames,\n    CASE WHEN ro.shortname = 'editingteacher' THEN GROUP_CONCAT(uen.id)  ELSE '' END AS editingteacherids,\n    CASE WHEN ro.shortname = 'teacher' THEN COUNT(DISTINCT uen.id) ELSE 0 END AS teachers,\n    CASE WHEN ro.shortname = 'teacher'\n        THEN GROUP_CONCAT(uen.firstname, ' ', uen.lastname SEPARATOR '#') ELSE '' END AS teachernames,\n    CASE WHEN ro.shortname = 'teacher' THEN GROUP_CONCAT(uen.id)  ELSE '' END AS teacherids,\n    CASE WHEN ro.shortname = 'student' THEN COUNT(DISTINCT uen.id) ELSE 0 END AS students,\n    CASE WHEN ro.shortname = 'student'\n        THEN GROUP_CONCAT(uen.firstname, ' ', uen.lastname SEPARATOR '#') ELSE '' END AS studentnames,\n    CASE WHEN ro.shortname = 'student' THEN GROUP_CONCAT(uen.id)  ELSE '' END AS studentids\nFROM {course} c\nINNER JOIN {course_categories} cc ON (c.category = cc.id)\nINNER JOIN {context} ctx ON (ctx.contextlevel = 50 AND ctx.instanceid = c.id)\nINNER JOIN {enrol} en ON (en.courseid = c.id)\nINNER JOIN {user_enrolments} ue ON (ue.enrolid = en.id)\nINNER JOIN {role_assignments} ra ON (ra.contextid = ctx.id AND ra.userid = ue.userid)\nINNER JOIN {role} ro ON (ra.roleid = ro.id)\nINNER JOIN {user} uen ON (ue.userid = uen.id)\n{$filter}\nGROUP BY c.id, ro.id) AS COURSE\nGROUP BY COURSE.id) AS TEACHERS\nON (EXAMS.id = TEACHERS.id)";
$stats = $DB->get_recordset_sql($sqlstats, array($categoryid));
$statstable = new html_table();
$statstable->head = array(ucfirst(get_string('course')), ucfirst(get_string('teachers')), get_string('exams', 'mod_emarking'), ucfirst(get_string('pages', 'mod_emarking')), get_string('pagesperexam', 'mod_emarking'));
Example #2
0
            $examstable->rowclasses[$current] = 'examisok';
        } else {
            $examstable->rowclasses[$current] = 'examislate';
        }
    }
    $notification = $exam->notified ? $OUTPUT->pix_icon('t/approve', get_string('printnotificationsent', 'mod_emarking')) : '<a href="' . $CFG->wwwroot . '/mod/emarking/print/sendprintnotification.php?id=' . $exam->id . '">' . $OUTPUT->pix_icon('i/email', get_string('printsendnotification', 'mod_emarking')) . '</a>';
    $enrolments = html_writer::start_tag("div", array("class" => "printdetails"));
    $enrolments .= emarking_enrolments_div($exam);
    $enrolments .= html_writer::end_tag("div");
    $examstable->data[] = array(date("l jS F g:ia", $exam->examdate), $exam->name, $OUTPUT->action_link($urlcourse, $exam->coursefullname), $exam->category . '<br/>' . $enrolments, $OUTPUT->action_link($urlprofile, $exam->userfullname), '$' . number_format($exam->cost) . $OUTPUT->action_icon($urlcost, new pix_icon("i/edit", get_string("downloadform", "mod_emarking"))), $statusicon == 1 ? emarking_time_ago($exam->timecreated) : emarking_time_ago($exam->printdate), $statusicon == 1 ? $pagestoprint : $actions, $statusicon == 1 ? $actions : $notification);
    $current++;
}
echo $OUTPUT->header();
echo $OUTPUT->heading($pagetitle . ' ' . $category->name);
$activetab = $statusicon == 1 ? 'printorders' : 'printordershistory';
echo $OUTPUT->tabtree(emarking_printoders_tabs($category), $activetab);
if (count($exams) > 0) {
    echo core_text::strtotitle(get_string("filter")) . "&nbsp;&nbsp;";
    echo html_writer::tag("input", null, array("id" => "searchInput"));
    echo html_writer::table($examstable);
    // Print the table.
    echo $OUTPUT->paging_bar($examscount, $page, $perpage, $CFG->wwwroot . '/mod/emarking/print/printorders.php?category=' . $categoryid . '&status=' . $statusicon . '&page=');
} else {
    echo $OUTPUT->notification(get_string('noexamsforprinting', 'mod_emarking'), 'notifyproblem');
}
$downloadurl = new moodle_url('/mod/emarking/print/download.php');
if ($CFG->emarking_usesms) {
    $message = get_string('smsinstructions', 'mod_emarking', $USER);
} else {
    $message = get_string('emailinstructions', 'mod_emarking', $USER);
}
Example #3
0
$categoryurl = new moodle_url('/course/index.php', array('categoryid' => $categoryid));
if (!has_capability('mod/emarking:printordersview', $context)) {
    print_error('Not allowed!');
}
$PAGE->set_url($url);
$PAGE->set_pagelayout('course');
$PAGE->navbar->add($category->name, $categoryurl);
$PAGE->navbar->add(get_string('printorders', 'mod_emarking'), $ordersurl);
$PAGE->navbar->add(get_string('statistics', 'mod_emarking'));
$PAGE->set_context($context);
$PAGE->set_heading(get_site()->fullname);
$PAGE->set_title(get_string('emarking', 'mod_emarking'));
require_login();
$pagenumber = optional_param('pag', 1, PARAM_INT);
echo $OUTPUT->header();
echo $OUTPUT->tabtree(emarking_printoders_tabs($category), "statistics");
$sqlstats = 'select
ifnull(year,\'Total\') as year,
ifnull(month,\'Total anual\') as month,
round(sum(totalpagestoprint)) as totalpages,
count(*) as totalexams from (
select
year(from_unixtime(e.examdate)) as year,
month(from_unixtime(e.examdate)) as month,
case
when e.usebackside = 1 then (e.totalstudents + e.extraexams) * (e.extrasheets + e.totalpages) / 2
else (e.totalstudents + e.extraexams) * (e.extrasheets + e.totalpages)
end as totalpagestoprint
from {emarking_exams} e, {course} c
where e.course = c.id and c.category = ?
and e.status = 2 order by examdate asc, c.shortname