Fix OPO URL's
This commit is contained in:
21
cron.php
21
cron.php
@@ -3,6 +3,7 @@
|
|||||||
require __DIR__.'/vendor/autoload.php';
|
require __DIR__.'/vendor/autoload.php';
|
||||||
require __DIR__.'/config/config.php';
|
require __DIR__.'/config/config.php';
|
||||||
|
|
||||||
|
use Sabre\VObject;
|
||||||
|
|
||||||
info("Retrieving courses...");
|
info("Retrieving courses...");
|
||||||
$urls = retrieve_courses();
|
$urls = retrieve_courses();
|
||||||
@@ -14,6 +15,8 @@ if (empty($urls)) {
|
|||||||
info("Downloading ics files...");
|
info("Downloading ics files...");
|
||||||
download_ics($urls);
|
download_ics($urls);
|
||||||
|
|
||||||
|
parseCourses($urls);
|
||||||
|
|
||||||
info("Updating database...");
|
info("Updating database...");
|
||||||
update_db($urls);
|
update_db($urls);
|
||||||
|
|
||||||
@@ -21,15 +24,15 @@ function update_db(array $icsUrls)
|
|||||||
{
|
{
|
||||||
$db = new PDO("sqlite:".__DIR__."/roosters_new.db");
|
$db = new PDO("sqlite:".__DIR__."/roosters_new.db");
|
||||||
$db->exec(
|
$db->exec(
|
||||||
"CREATE TABLE courses(id VARCHAR PRIMARY KEY, `file` VARCHAR, `course` VARCHAR, `opo` VARCHAR, `group` VARCHAR)"
|
"CREATE TABLE courses(`id` VARCHAR PRIMARY KEY, `file` VARCHAR, `course` VARCHAR, `opo` VARCHAR, `url` VARCHAR, `group` VARCHAR)"
|
||||||
);
|
);
|
||||||
|
|
||||||
$db->beginTransaction();
|
$db->beginTransaction();
|
||||||
|
|
||||||
$stmt = $db->prepare("INSERT INTO courses (id, `file`,`course`,`opo`,`group`) VALUES(?,?,?,?,?)");
|
$stmt = $db->prepare("INSERT INTO courses (`id`, `file`,`course`,`opo`,`url`,`group`) VALUES(?,?,?,?,?,?)");
|
||||||
|
|
||||||
foreach ($icsUrls as $key => $item) {
|
foreach ($icsUrls as $key => $item) {
|
||||||
$stmt->execute([substr(md5($key), 0, 8), $key, $item['course'], $item['opo'], $item['group']]);
|
$stmt->execute([substr(md5($key), 0, 8), $key, $item['course'], $item['opo'], $item['url'], $item['group']]);
|
||||||
}
|
}
|
||||||
$db->commit();
|
$db->commit();
|
||||||
rename(__DIR__.'/roosters_new.db', __DIR__.'/roosters.db');
|
rename(__DIR__.'/roosters_new.db', __DIR__.'/roosters.db');
|
||||||
@@ -119,6 +122,18 @@ function retrieve_courses() :array
|
|||||||
return $icsUrls;
|
return $icsUrls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseCourses(array &$icsData) {
|
||||||
|
foreach ($icsData as $key => $course) {
|
||||||
|
|
||||||
|
$v = VObject\Reader::read(
|
||||||
|
fopen(__DIR__."/var/cache/$key", 'r'),
|
||||||
|
VObject\Reader::OPTION_FORGIVING
|
||||||
|
);
|
||||||
|
|
||||||
|
$icsData[$key]['url'] = $v->VEVENT[0]->URL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function get_base_url(string $url) :string
|
function get_base_url(string $url) :string
|
||||||
{
|
{
|
||||||
$rawPath = parse_url($url, PHP_URL_PATH);
|
$rawPath = parse_url($url, PHP_URL_PATH);
|
||||||
|
@@ -66,7 +66,7 @@ foreach ($courses as $course) {
|
|||||||
<span>
|
<span>
|
||||||
{$course['course']}
|
{$course['course']}
|
||||||
<span class=\"d-block text-muted\">
|
<span class=\"d-block text-muted\">
|
||||||
<a class='text-decoration-none' target='_blank' href=\"https://onderwijsaanbod.kuleuven.be/syllabi/n/{$course['opo']}N.htm\">
|
<a class='text-decoration-none' target='_blank' href=\"{$course['url']}\">
|
||||||
<span class=\"badge bg-secondary\"><i class=\"bi bi-link-45deg\"></i> {$course['opo']}</span>
|
<span class=\"badge bg-secondary\"><i class=\"bi bi-link-45deg\"></i> {$course['opo']}</span>
|
||||||
|
|
||||||
</a>
|
</a>
|
||||||
|
@@ -3,5 +3,5 @@
|
|||||||
@unlink(__DIR__.'short_links.db');
|
@unlink(__DIR__.'short_links.db');
|
||||||
$db = new PDO("sqlite:".__DIR__."/short_links.db");
|
$db = new PDO("sqlite:".__DIR__."/short_links.db");
|
||||||
$db->exec(
|
$db->exec(
|
||||||
"CREATE TABLE links(id VARCHAR PRIMARY KEY, `courses` VARCHAR)"
|
"CREATE TABLE links(`id` VARCHAR PRIMARY KEY, `courses` VARCHAR)"
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user