File: /var/www/html/demo.sumarbc.com.py/local/presentialtracker/view.php
<?php
// /local/presentialtracker/view.php
require_once(__DIR__ . '/../../../config.php');
require_login();
require_capability('moodle/site:config', context_system::instance());
global $DB, $OUTPUT, $PAGE;
$PAGE->set_url(new moodle_url('/local/presentialtracker/view.php'));
$PAGE->set_context(context_system::instance());
$PAGE->set_title('Presential Records');
$PAGE->set_heading('Presential Records');
echo $OUTPUT->header();
$mform = new stdClass();
$mform->userid = optional_param('userid', 0, PARAM_INT);
$mform->coursename = optional_param('coursename', '', PARAM_RAW);
echo '<form method="get">';
echo 'User ID: <input type="text" name="userid" value="' . $mform->userid . '">';
echo ' Course name: <input type="text" name="coursename" value="' . s($mform->coursename) . '">';
echo ' <input type="submit" value="Filter">';
echo ' <button type="submit" name="export" value="1">Export CSV</button>';
echo '</form>';
$where = [];
$params = [];
if ($mform->userid) {
$where[] = 'userid = :userid';
$params['userid'] = $mform->userid;
}
if ($mform->coursename !== '') {
$where[] = 'coursename LIKE :coursename';
$params['coursename'] = '%' . $mform->coursename . '%';
}
$sqlwhere = $where ? 'WHERE ' . implode(' AND ', $where) : '';
$sql = "SELECT lp.*, u.username, u.firstname, u.lastname
FROM {local_presentialtracker} lp
JOIN {user} u ON u.id = lp.userid
$sqlwhere
ORDER BY timecreated DESC";
$records = $DB->get_records_sql($sql, $params);
if (optional_param('export', 0, PARAM_INT)) {
// Export CSV
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=presential_records.csv');
$output = fopen('php://output', 'w');
fputcsv($output, ['Username', 'First Name', 'Last Name', 'Course Name', 'Grade', 'Comments', 'Completion Date', 'Record Created']);
foreach ($records as $r) {
fputcsv($output, [
$r->username,
$r->firstname,
$r->lastname,
$r->coursename,
$r->grade,
$r->comments,
$r->completiondate ? date('Y-m-d', $r->completiondate) : '',
date('Y-m-d H:i:s', $r->timecreated)
]);
}
fclose($output);
exit;
}
echo '<table class="generaltable">';
echo '<thead><tr><th>Username</th><th>Name</th><th>Course</th><th>Grade</th><th>Comments</th><th>Completion Date</th><th>Created</th></tr></thead><tbody>';
foreach ($records as $r) {
echo '<tr>';
echo '<td>' . s($r->username) . '</td>';
echo '<td>' . s($r->firstname) . ' ' . s($r->lastname) . '</td>';
echo '<td>' . s($r->coursename) . '</td>';
echo '<td>' . s($r->grade) . '</td>';
echo '<td>' . s($r->comments) . '</td>';
echo '<td>' . ($r->completiondate ? date('Y-m-d', $r->completiondate) : '') . '</td>';
echo '<td>' . date('Y-m-d H:i:s', $r->timecreated) . '</td>';
echo '</tr>';
}
echo '</tbody></table>';
echo $OUTPUT->footer();