HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/8.0.30
System: Linux multiplicar 3.10.0-1160.102.1.el7.x86_64 #1 SMP Tue Oct 17 15:42:21 UTC 2023 x86_64
User: root (0)
PHP: 8.0.30
Disabled: NONE
Upload Files
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();