From 369f1a2bdcd9bdf3996b3dc8de8921f8954a069d Mon Sep 17 00:00:00 2001 From: Miguel Ribeiro Date: Tue, 25 Jun 2024 19:44:24 +0200 Subject: [PATCH] feat: add calendar view (#399) --- calendar.php | 224 +++++++++++++++++ endpoints/subscription/getcalendar.php | 50 ++++ includes/header.php | 1 + includes/i18n/de.php | 327 ++++++++++++------------ includes/i18n/el.php | 327 ++++++++++++------------ includes/i18n/en.php | 327 ++++++++++++------------ includes/i18n/es.php | 327 ++++++++++++------------ includes/i18n/fr.php | 33 ++- includes/i18n/it.php | 46 +++- includes/i18n/jp.php | 325 ++++++++++++------------ includes/i18n/ko.php | 330 +++++++++++++------------ includes/i18n/pl.php | 309 ++++++++++++----------- includes/i18n/pt.php | 321 +++++++++++++----------- includes/i18n/pt_br.php | 323 +++++++++++++----------- includes/i18n/ru.php | 327 ++++++++++++------------ includes/i18n/sl.php | 139 ++++++----- includes/i18n/sr.php | 327 ++++++++++++------------ includes/i18n/sr_lat.php | 309 ++++++++++++----------- includes/i18n/tr.php | 31 ++- includes/i18n/zh_cn.php | 316 ++++++++++++----------- includes/i18n/zh_tw.php | 287 +++++++++++---------- includes/version.php | 2 +- scripts/calendar.js | 71 ++++++ scripts/i18n/de.js | 7 + scripts/i18n/el.js | 7 + scripts/i18n/en.js | 7 + scripts/i18n/es.js | 7 + scripts/i18n/fr.js | 7 + scripts/i18n/it.js | 7 + scripts/i18n/jp.js | 7 + scripts/i18n/ko.js | 7 + scripts/i18n/pl.js | 7 + scripts/i18n/pt.js | 71 +++--- scripts/i18n/pt_br.js | 7 + scripts/i18n/ru.js | 7 + scripts/i18n/sl.js | 7 + scripts/i18n/sr.js | 7 + scripts/i18n/sr_lat.js | 7 + scripts/i18n/tr.js | 9 +- scripts/i18n/zh_cn.js | 7 + scripts/i18n/zh_tw.js | 71 +++--- scripts/settings.js | 2 +- service-worker.js | 4 + styles/dark-theme.css | 18 +- styles/font-awesome.min.css | 10 +- styles/fontawesome.min.css | 9 - styles/styles.css | 149 ++++++++++- 47 files changed, 3262 insertions(+), 2265 deletions(-) create mode 100644 calendar.php create mode 100644 endpoints/subscription/getcalendar.php create mode 100644 scripts/calendar.js delete mode 100644 styles/fontawesome.min.css diff --git a/calendar.php b/calendar.php new file mode 100644 index 0000000..61bc0eb --- /dev/null +++ b/calendar.php @@ -0,0 +1,224 @@ +prepare($query); +$stmt->bindValue(':user_id', $userId, SQLITE3_INTEGER); +$result = $stmt->execute(); +$subscriptions = []; +while ($row = $result->fetchArray(SQLITE3_ASSOC)) { + $subscriptions[] = $row; +} + +$yearsToLoad = $calendarYear - $currentYear + 1; +?> + +
+
+

Calendar

+
+ + + + + + +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+   +
+
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+
+   +
+
+
+ +
+
+
+
+ +
+ +
+ + + \ No newline at end of file diff --git a/endpoints/subscription/getcalendar.php b/endpoints/subscription/getcalendar.php new file mode 100644 index 0000000..493dd17 --- /dev/null +++ b/endpoints/subscription/getcalendar.php @@ -0,0 +1,50 @@ + false, + "message" => translate('session_expired', $i18n) + ])); +} + +if ($_SERVER["REQUEST_METHOD"] === "POST") { + $postData = file_get_contents("php://input"); + $data = json_decode($postData, true); + + $id = $data['id']; + + $stmt = $db->prepare('SELECT * FROM subscriptions WHERE id = :id AND user_id = :userId'); + $stmt->bindParam(':id', $id, SQLITE3_INTEGER); + $stmt->bindParam(':userId', $_SESSION['userId'], SQLITE3_INTEGER); // Assuming $_SESSION['userId'] holds the logged-in user's ID + $result = $stmt->execute(); + + if ($result === false) { + die(json_encode([ + 'success' => false, + 'message' => "Subscription not found" + ])); + } + + $subscription = $result->fetchArray(SQLITE3_ASSOC); // Fetch the subscription details as an associative array + + if ($subscription) { + // get payer name from household object + $subscription['payer_user'] = $members[$subscription['payer_user_id']]['name']; + $subscription['category'] = $categories[$subscription['category_id']]['name']; + $subscription['payment_method'] = $payment_methods[$subscription['payment_method_id']]['name']; + $subscription['currency'] = $currencies[$subscription['currency_id']]['symbol']; + + echo json_encode([ + 'success' => true, + 'data' => $subscription + ]); + } else { + echo json_encode([ + 'success' => false, + 'message' => "Subscription not found" + ]); + } +} +?> \ No newline at end of file diff --git a/includes/header.php b/includes/header.php index 77c945a..e066be9 100644 --- a/includes/header.php +++ b/includes/header.php @@ -95,6 +95,7 @@