From 14d56c4f4028545cfb22b9504b1eb136cac95dc8 Mon Sep 17 00:00:00 2001 From: Arthur Bols Date: Thu, 16 Feb 2023 13:28:49 +0100 Subject: [PATCH] Fix OPO URL's --- cron.php | 21 ++++++++++++++++++--- public/index.php | 2 +- short_links.php | 2 +- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cron.php b/cron.php index 410d0a8..0598a1c 100644 --- a/cron.php +++ b/cron.php @@ -3,6 +3,7 @@ require __DIR__.'/vendor/autoload.php'; require __DIR__.'/config/config.php'; +use Sabre\VObject; info("Retrieving courses..."); $urls = retrieve_courses(); @@ -14,6 +15,8 @@ if (empty($urls)) { info("Downloading ics files..."); download_ics($urls); +parseCourses($urls); + info("Updating database..."); update_db($urls); @@ -21,15 +24,15 @@ function update_db(array $icsUrls) { $db = new PDO("sqlite:".__DIR__."/roosters_new.db"); $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(); - $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) { - $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(); rename(__DIR__.'/roosters_new.db', __DIR__.'/roosters.db'); @@ -119,6 +122,18 @@ function retrieve_courses() :array 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 { $rawPath = parse_url($url, PHP_URL_PATH); diff --git a/public/index.php b/public/index.php index 018ff61..e61dd58 100644 --- a/public/index.php +++ b/public/index.php @@ -66,7 +66,7 @@ foreach ($courses as $course) { {$course['course']} - + {$course['opo']} diff --git a/short_links.php b/short_links.php index 13adc1b..3b12e76 100644 --- a/short_links.php +++ b/short_links.php @@ -3,5 +3,5 @@ @unlink(__DIR__.'short_links.db'); $db = new PDO("sqlite:".__DIR__."/short_links.db"); $db->exec( - "CREATE TABLE links(id VARCHAR PRIMARY KEY, `courses` VARCHAR)" + "CREATE TABLE links(`id` VARCHAR PRIMARY KEY, `courses` VARCHAR)" );