die; } // Creating tables and adding columns header $examstable = new html_table(); if ($status == 1) { $examstable->head = array(get_string('examdate', 'mod_emarking'), get_string('examname', 'mod_emarking'), get_string('course'), get_string('building', 'mod_emarking'), get_string('requestedby', 'mod_emarking'), get_string('examdatesent', 'mod_emarking'), ucfirst(get_string('pages', 'mod_emarking')), get_string('actions')); $examstable->size = array('10%', '10%', '10%', '5%', '5%', '10%', '5%', '7%'); $examstable->align = array('left', 'center', 'center', 'center', 'center', 'center', 'center', 'right'); } else { $examstable->head = array(get_string('examdate', 'mod_emarking'), get_string('examname', 'mod_emarking'), get_string('course'), get_string('building', 'mod_emarking'), get_string('requestedby', 'mod_emarking'), get_string('examdateprinted', 'mod_emarking'), get_string('actions'), get_string('printnotification', 'mod_emarking')); $examstable->size = array('5%', '10%', '10%', '5%', '5%', '10%', '7%', '5%'); $examstable->align = array('left', 'center', 'center', 'center', 'center', 'center', 'center', 'center'); } // Parameters for SQL calls $statussql = $status == 1 ? EMARKING_EXAM_UPLOADED : EMARKING_EXAM_SENT_TO_PRINT . "," . EMARKING_EXAM_PRINTED; $ids_children = emarking_get_categories_childs($categoryid); $params = array($statussql); /* * $sqlcount = " SELECT count(*) * FROM {emarking_exams} as e * INNER JOIN {course} as c ON (e.course = c.id) * WHERE c.category = ? AND e.status in (?)"; */ $sqlcount = " SELECT count(*)\n FROM {emarking_exams} as e\nINNER JOIN {course} as c ON (e.course = c.id)\nWHERE c.category in ({$ids_children}) AND e.status in (?)"; // Get the count so we can use pagination $examscount = $DB->count_records_sql($sqlcount, $params); /* * $sql = "SELECT e.*, * c.id as courseid, * c.fullname as coursefullname, * u.id as userid,
// Creating tables and adding columns header. $examstable = new html_table(); $examstable->head = array(get_string('date'), get_string('exam', 'mod_emarking'), get_string('course'), get_string('details', 'mod_emarking'), get_string('requestedby', 'mod_emarking'), get_string('cost', 'mod_emarking'), $statusicon == 1 ? get_string('sent', "mod_emarking") : get_string('examdateprinted', 'mod_emarking'), $statusicon == 1 ? ucfirst(get_string('pages', 'mod_emarking')) : get_string('actions'), $statusicon == 1 ? get_string('actions') : get_string('printnotification', 'mod_emarking')); $examstable->id = "fbody"; $examstable->size = array('15%', '15%', '15%', '10%', '10%', '10%', '7%', '7%', '10%'); $examstable->align = array('left', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center'); $examstable->colclasses[1] = 'exams_examname'; // Parameters for SQL calls. if ($statusicon == 1) { $statuses = array(EMARKING_EXAM_UPLOADED, EMARKING_EXAM_BEING_PROCESSED, EMARKING_EXAM_ERROR_PROCESSING, EMARKING_EXAM_PROCESSED); } else { $statuses = array(EMARKING_EXAM_SENT_TO_PRINT, EMARKING_EXAM_ERROR_PRINTING, EMARKING_EXAM_PRINTED); } list($statussql, $params) = $DB->get_in_or_equal($statuses); $order = $statusicon == 1 ? "e.examdate asc, c.shortname ASC" : "e.examdate desc, c.shortname ASC"; list($childrensql, $childrenparams) = $DB->get_in_or_equal(emarking_get_categories_childs($categoryid)); $childrenparams = array($categoryid, $categoryid); $sqlcount = " SELECT count(*)\n FROM {emarking_exams} as e\nINNER JOIN {course} as c ON (e.course = c.id)\nINNER JOIN {course_categories} as cc ON (cc.id = c.category)\nWHERE (cc.path LIKE '%/{$categoryid}' OR cc.path LIKE '%/{$categoryid}/%') AND e.status {$statussql}"; // Get the count so we can use pagination. $examscount = $DB->count_records_sql($sqlcount, $params); $sql = "SELECT e.*,\n\t\t\tc.id as courseid,\n\t\t\tc.fullname as coursefullname,\n\t\t\tu.id as userid,\n\t\t\tCONCAT(u.firstname, ' ', u.lastname) as userfullname,\n\t\t\tcc.name as category,\n\t\t\te.printingcost as cost\n\t\tFROM {emarking_exams} as e\n\t\tINNER JOIN {course} as c ON (e.course = c.id)\n\t\tINNER JOIN {user} as u ON (e.requestedby = u.id)\n\t\tINNER JOIN {course_categories} as cc ON (cc.id = c.category)\n\t\tWHERE (cc.path LIKE '%/{$categoryid}' OR cc.path LIKE '%/{$categoryid}/%') AND e.status {$statussql}\n\t\tORDER BY " . $order; // Getting all print orders. $exams = $DB->get_records_sql($sql, $params, $page * $perpage, ($page + 1) * $perpage); // Status = 1 means still not downloaded. $currentdate = time(); $current = 0; foreach ($exams as $exam) { // Url for the course. $urlcourse = new moodle_url('/course/view.php', array('id' => $exam->course)); // Url for the user profile of the person who requested the exam. $urlprofile = new moodle_url('/user/profile.php', array('id' => $exam->userid));
function emarking_get_categories_childs($id_category) { $coursecat = coursecat::get($id_category); $ids = $id_category; foreach ($coursecat->get_children() as $categories_children) { $coursecat_children = coursecat::get($categories_children->id); if ($coursecat_children->has_children()) { $array_children = emarking_get_categories_childs($categories_children->id); $ids .= "," . $array_children; } else { $ids .= "," . $categories_children->id; } } return $ids; }