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/upload/index.php
<?php
require_once(__DIR__ . '/../../../config.php');
require_login();
require_capability('moodle/site:config', context_system::instance());

$PAGE->set_url(new moodle_url('/local/presentialtracker/upload/index.php'));
$PAGE->set_context(context_system::instance());
$PAGE->set_title(get_string('uploadcsv', 'local_presentialtracker'));

echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('uploadheader', 'local_presentialtracker'));

echo '<form method="post" enctype="multipart/form-data">';
echo '<input type="file" name="csvfile" accept=".csv" required>';
echo '<br><br><input type="submit" value="' . get_string('submit', 'local_presentialtracker') . '">';
echo '</form>';

if (!empty($_FILES['csvfile']['tmp_name'])) {
    $csv = array_map('str_getcsv', file($_FILES['csvfile']['tmp_name']));
    $header = array_map('trim', $csv[0]);
    unset($csv[0]);

    global $DB;
    $time = time();

    foreach ($csv as $row) {
        $data = array_combine($header, $row);
        if (!isset($data['username'], $data['coursename'])) {
            continue;
        }

        if ($user = $DB->get_record('user', ['username' => $data['username']])) {
            $record = new stdClass();
            $record->userid = $user->id;
            $record->coursename = $data['coursename'];
            $record->grade = $data['grade'] ?? '';
            $record->comments = $data['comments'] ?? '';
            $record->completiondate = strtotime($data['completiondate'] ?? '') ?: null;
            $record->timecreated = $time;

            $DB->insert_record('local_presentialtracker', $record);
        }
    }

    echo $OUTPUT->notification(get_string('success', 'local_presentialtracker'), 'notifysuccess');
}

echo $OUTPUT->footer();