libdir.'/blocklib.php'); require_once("$CFG->libdir/rsslib.php"); require_once('pagelib.php'); $id = optional_param('id', 0, PARAM_INT); // course module id $d = optional_param('d', 0, PARAM_INT); // database id $search = optional_param('search','',PARAM_NOTAGS); //search string $page = optional_param('page', 0, PARAM_INT); //offset of the current record $rid = optional_param('rid', 0, PARAM_INT); //record id $approve = optional_param('approve', 0, PARAM_INT); //approval recordid $delete = optional_param('delete', 0, PARAM_INT); //delete recordid $perpagemenu = optional_param('perpage1', 0, PARAM_INT); //value from drop down $sort = optional_param('sort',-1,PARAM_INT); //sort by field $order = optional_param('order','ASC',PARAM_ALPHA); //sort order $group = optional_param('group','0',PARAM_INT); //groupid if ($id) { if (! $cm = get_record('course_modules', 'id', $id)) { error('Course Module ID was incorrect'); } if (! $course = get_record('course', 'id', $cm->course)) { error('Course is misconfigured'); } if (! $data = get_record('data', 'id', $cm->instance)) { error('Course module is incorrect'); } } else { if (! $data = get_record('data', 'id', $d)) { error('Data ID is incorrect'); } if (! $course = get_record('course', 'id', $data->course)) { error('Course is misconfigured'); } if (! $cm = get_coursemodule_from_instance('data', $data->id, $course->id)) { error('Course Module ID was incorrect'); } } require_course_login($course, true, $cm); if (isteacher($course->id)) { if (!record_exists('data_fields','dataid',$data->id)) { // Brand new database! redirect($CFG->wwwroot.'/mod/data/field.php?d='.$data->id); // Redirect to field entry } } /// If we haven't set a sort field use the default sort field if ($sort == -1) { $sort = $data->defaultsort; $order = ($data->defaultsortdir == 0) ? 'ASC' : 'DESC'; } //set user preference if available if (isset($_GET['updatepref'])){ if (!$perpage = $perpagemenu){ //if menu not in use, use the text field $perpage = (int)optional_param('perpage',10); } $perpage = ($perpage <= 0) ? 10 : $perpage ; set_user_preference('data_perpage', $perpage); } $d = $data->id;//set this so tabs can work properly add_to_log($course->id, 'data', 'view', "view.php?id=$cm->id", $data->id, $cm->id); // Initialize $PAGE, compute blocks $PAGE = page_create_instance($data->id); $pageblocks = blocks_setup($PAGE); $blocks_preferred_width = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]), 210); if (!empty($edit) && $PAGE->user_allowed_editing()) { if ($edit == 'on') { $USER->editing = true; } else if ($edit == 'off') { $USER->editing = false; } } /// RSS meta $rssmeta = ''; if (isset($CFG->enablerssfeeds) && isset($CFG->data_enablerssfeeds) && $data->rssarticles > 0) { $rsspath = rss_get_url($course->id, $USER->id, 'data', $data->id); $rssmeta = 'shortname.': %fullname%" href="'.$rsspath.'" />'; } /// Print the page header $PAGE->print_header($course->shortname.': %fullname%', '', $rssmeta); echo '
| '; blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); echo ' | '; } echo '';
print_heading(format_string($data->name));
// Do we need to show a link to the RSS feed for the records?
if (isset($CFG->enablerssfeeds) && isset($CFG->data_enablerssfeeds) && $data->rssarticles > 0) {
echo ' ';
rss_print_link($course->id, $USER->id, 'data', $data->id, get_string('rsstype'));
echo ' ';
echo '';
}
if ($data->intro and empty($sort) and empty($search) and empty($page) and empty($rid)) {
print_simple_box(format_text($data->intro), 'center', '70%', '', 5, 'generalbox', 'intro');
}
/// Check to see if groups are being used here
if ($groupmode = groupmode($course, $cm)) { // Groups are being used
$currentgroup = setup_and_print_groups($course, $groupmode,
'view.php?d='.$data->id.'&search='.s($search).'&sort='.s($sort).
'&order='.s($order).'&');
} else {
$currentgroup = 0;
}
if ($currentgroup) {
$groupselect = " AND (r.groupid = '$currentgroup' OR r.groupid = 0)";
$groupparam = "&groupid=$currentgroup";
} else {
$groupselect = "";
$groupparam = "";
}
/// Print the tabs
$currenttab = 'browse';
include('tabs.php');
$perpage = get_user_preferences('data_perpage', 10); //get default per page
/// Approve any requested records
if ($approve && confirm_sesskey() && isteacher($course->id)) {
if ($record = get_record('data_records', 'id', $approve)) { // Need to check this is valid
if ($record->dataid == $data->id) { // Must be from this database
$newrecord->id = $record->id;
$newrecord->approved = 1;
if (update_record('data_records', $newrecord)) {
notify(get_string('recordapproved','data'), 'notifysuccess');
}
if ($perpage == 1) {
$rid = $approve;
}
}
}
}
/// Delete any requested records
if ($delete && confirm_sesskey()) {
if (isteacher($course->id) or data_isowner($delete)){
if ($confirm = optional_param('confirm',0,PARAM_INT)) {
if ($contents = get_records('data_content','recordid', $delete)) {
foreach ($contents as $content) { // Delete files or whatever else this field allows
if ($field = data_get_field_from_id($content->fieldid, $data)) { // Might not be there
$field->delete_content($content->recordid);
}
}
}
delete_records('data_content','recordid',$delete);
delete_records('data_records','id',$delete);
add_to_log($course->id, 'data', 'record delete', "view.php?id=$cm->id", $data->id, $cm->id);
notify(get_string('recorddeleted','data'), 'notifysuccess');
if ($perpage == 1) {
$rid = $delete;
}
} else { // Print a confirmation page
notice_yesno(get_string('confirmdeleterecord','data'),
'view.php?d='.$data->id.'&delete='.$delete.'&confirm=1&sesskey='.sesskey(),
'view.php?d='.$data->id);
print_footer($course);
exit;
}
}
}
// If not teacher, check whether user has sufficient records to view
if (!isteacher($course->id) and data_numentries($data) < $data->requiredentriestoview){
notify (($data->requiredentriestoview - data_numentries($data)).' '.get_string('insufficiententries','data'));
echo ' |