From 859e83ddd87753d9434db5adc141cfda1fe54269 Mon Sep 17 00:00:00 2001 From: emnbdx Date: Mon, 24 Feb 2025 13:28:23 +0100 Subject: [PATCH] add mp4 support on alert, fix token refresh, fix typo --- .github/workflows/php-sandbox.yml | 2 +- public/index.php | 6 +++++- public/js/alert.js | 26 ++++++++++++++++------ public/js/alert.min.js | 2 +- src/Controllers/WidgetController.php | 32 ++++++++++++++-------------- src/Repositories/FileManager.php | 5 +++-- src/Services/ApiWrapper.php | 2 +- src/views/index.html.twig | 2 +- src/views/stream/edit.html.twig | 4 ++-- src/views/stream/index.html.twig | 2 +- 10 files changed, 50 insertions(+), 33 deletions(-) diff --git a/.github/workflows/php-sandbox.yml b/.github/workflows/php-sandbox.yml index 13aab6c..10a077c 100644 --- a/.github/workflows/php-sandbox.yml +++ b/.github/workflows/php-sandbox.yml @@ -47,7 +47,7 @@ jobs: envkey_DBUSER: ${{ secrets.SANDBOX_DBUSER }} envkey_DBPASSWORD: ${{ secrets.SANDBOX_DBPASSWORD }} envkey_DBPREFIX: "sandbox_" - envkey_LOGLEVEL: "ERROR" + envkey_LOGLEVEL: "DEBUG" envkey_BLOB_URL: "https://stockagehaovh.blob.core.windows.net" envkey_BLOB_CONNECTION_STRING: ${{ secrets.SANDBOX_BLOB_CONNECTION_STRING }} envkey_HA_URL: "https://www.helloasso-sandbox.com" diff --git a/public/index.php b/public/index.php index 60fe514..bebf5ee 100644 --- a/public/index.php +++ b/public/index.php @@ -111,7 +111,11 @@ if (!session_id()) @session_start(); -$errorMiddleware = $app->addErrorMiddleware(false, true, true, $container->get(Logger::class)); +if ($_SERVER['LOGLEVEL'] == "DEBUG") { + $errorMiddleware = $app->addErrorMiddleware(true, true, true, $container->get(Logger::class)); +} else { + $errorMiddleware = $app->addErrorMiddleware(false, true, true, $container->get(Logger::class)); +} $app->get('/', [HomeController::class, 'index'])->setName('app_index'); $app->get('/forgot_password', [HomeController::class, 'forgotPassword'])->setName('app_forgot_password'); diff --git a/public/js/alert.js b/public/js/alert.js index d5e7816..e79c4ec 100644 --- a/public/js/alert.js +++ b/public/js/alert.js @@ -22,11 +22,23 @@ function processAlertQueue() { var container = document.querySelector('.widget-alert-box'); container.innerHTML = ''; - var img = document.createElement('img'); - img.src = window.image; - img.style.maxWidth = '100%'; - img.classList.add('fade'); - container.appendChild(img); + let mediaElement; + if (window.image.endsWith('.mp4')) { + mediaElement = document.createElement('video'); + mediaElement.src = window.image; + mediaElement.autoplay = true; + mediaElement.loop = true; + mediaElement.muted = false; + mediaElement.style.maxWidth = '100%'; + mediaElement.classList.add('fade'); + } else { + mediaElement = document.createElement('img'); + mediaElement.src = window.image; + mediaElement.style.maxWidth = '100%'; + mediaElement.classList.add('fade'); + } + + container.appendChild(mediaElement); let eur = new Intl.NumberFormat('fr-FR', { style: 'currency', @@ -40,7 +52,7 @@ function processAlertQueue() { var audio = new Audio(window.sound); setTimeout(function () { - img.classList.add('show'); + mediaElement.classList.add('show'); messageTemplate.classList.add('show'); audio.volume = window.sound_volume; @@ -48,7 +60,7 @@ function processAlertQueue() { }, 100) setTimeout(function () { - img.classList.remove('show'); + mediaElement.classList.remove('show'); messageTemplate.classList.remove('show'); audio.pause(); audio.currentTime = 0; diff --git a/public/js/alert.min.js b/public/js/alert.min.js index 2f29039..a25a730 100644 --- a/public/js/alert.min.js +++ b/public/js/alert.min.js @@ -1 +1 @@ -function displayAlertBox(e,t,s){t=t.substring(0,255),alertQueue.push({pseudo:e,message:t,amount:s}),isAlertActive||processAlertQueue()}function processAlertQueue(){if(0===alertQueue.length)return void(isAlertActive=!1);isAlertActive=!0;const e=alertQueue.shift(),{pseudo:t,message:s,amount:r}=e;var o=document.querySelector(".widget-alert-box");o.innerHTML="";var n=document.createElement("img");n.src=window.image,n.style.maxWidth="100%",n.classList.add("fade"),o.appendChild(n);let a=new Intl.NumberFormat("fr-FR",{style:"currency",currency:"EUR"});var i=document.createElement("p");i.innerHTML=window.message_template.replace("{pseudo}",t).replace("{message}",s).replace("{amount}",a.format(r/100)),i.style.marginTop="10px",i.classList.add("fade"),o.appendChild(i);var u=new Audio(window.sound);setTimeout(function(){n.classList.add("show"),i.classList.add("show"),u.volume=window.sound_volume,u.play()},100),setTimeout(function(){n.classList.remove("show"),i.classList.remove("show"),u.pause(),u.currentTime=0,o.innerHTML="",processAlertQueue()},window.alert_duration)}function fetch(){const e=new XMLHttpRequest;e.open("GET","/widget-stream-alert/"+window.charityStreamId+"/fetch",!0),e.onload=(()=>{if(200===e.status){const t=JSON.parse(e.response);t.donations.forEach(e=>{displayAlertBox(e.pseudo,e.message,e.amount)})}else console.error("Erreur lors de la récupération des données de donation:",e.response)}),e.send()}var alertQueue=[],isAlertActive=!1; \ No newline at end of file +function displayAlertBox(e,t,s){t=t.substring(0,255),alertQueue.push({pseudo:e,message:t,amount:s}),isAlertActive||processAlertQueue()}function processAlertQueue(){if(0===alertQueue.length)return void(isAlertActive=!1);isAlertActive=!0;const e=alertQueue.shift(),{pseudo:t,message:s,amount:o}=e;var a=document.querySelector(".widget-alert-box");let r;a.innerHTML="",window.image.endsWith(".mp4")?(r=document.createElement("video"),r.src=window.image,r.autoplay=!0,r.loop=!0,r.muted=!1,r.style.maxWidth="100%",r.classList.add("fade")):(r=document.createElement("img"),r.src=window.image,r.style.maxWidth="100%",r.classList.add("fade")),a.appendChild(r);let n=new Intl.NumberFormat("fr-FR",{style:"currency",currency:"EUR"});var i=document.createElement("p");i.innerHTML=window.message_template.replace("{pseudo}",t).replace("{message}",s).replace("{amount}",n.format(o/100)),i.style.marginTop="10px",i.classList.add("fade"),a.appendChild(i);var d=new Audio(window.sound);setTimeout(function(){r.classList.add("show"),i.classList.add("show"),d.volume=window.sound_volume,d.play()},100),setTimeout(function(){r.classList.remove("show"),i.classList.remove("show"),d.pause(),d.currentTime=0,a.innerHTML="",processAlertQueue()},window.alert_duration)}function fetch(){const e=new XMLHttpRequest;e.open("GET","/widget-stream-alert/"+window.charityStreamId+"/fetch",!0),e.onload=(()=>{if(200===e.status){const t=JSON.parse(e.response);t.donations.forEach(e=>{displayAlertBox(e.pseudo,e.message,e.amount)})}else console.error("Erreur lors de la récupération des données de donation:",e.response)}),e.send()}var alertQueue=[],isAlertActive=!1; \ No newline at end of file diff --git a/src/Controllers/WidgetController.php b/src/Controllers/WidgetController.php index a78fbe1..3039507 100644 --- a/src/Controllers/WidgetController.php +++ b/src/Controllers/WidgetController.php @@ -78,7 +78,7 @@ public function widgetEventDonation(Request $request, Response $response, array ); $streamCache['amount'] = $result['amount']; - $streamCache['continuation_token'] = $result['continuationToken']; + $streamCache['continuation_token'] = $result['continuation_token']; $totalAmount += $result['amount']; } @@ -145,7 +145,7 @@ public function widgetEventDonationFetch(Request $request, Response $response, a ); $streamCache['amount'] = $result['amount']; - $streamCache['continuation_token'] = $result['continuationToken']; + $streamCache['continuation_token'] = $result['continuation_token']; $totalAmount += $result['amount']; } @@ -196,12 +196,12 @@ public function widgetAlert(Request $request, Response $response, array $args): $charityStream->organization_slug, $charityStream->form_slug, 0, - $cacheData->continuation_token, + $cacheData["continuation_token"], ); - if ($cacheData->continuation_token != $result['continuationToken']) { + if ($cacheData["continuation_token"] != $result['continuation_token']) { $this->widgetRepository->updateAlertWidgetCacheData($charityStream->guid, [ - "continuation_token" => $result['continuationToken'] + "continuation_token" => $result['continuation_token'] ]); } @@ -235,12 +235,12 @@ public function widgetAlertFetch(Request $request, Response $response, array $ar $charityStream->organization_slug, $charityStream->form_slug, 0, - $cacheData->continuation_token + $cacheData['continuation_token'] ); - if ($cacheData->continuation_token != $result['continuationToken']) { + if ($cacheData['continuation_token'] != $result['continuation_token']) { $this->widgetRepository->updateAlertWidgetCacheData($charityStream->guid, [ - "continuation_token" => $result['continuationToken'] + "continuation_token" => $result['continuation_token'] ]); } @@ -280,14 +280,14 @@ public function widgetDonation(Request $request, Response $response, array $args $result = $this->apiWrapper->getAllOrders( $charityStream->organization_slug, $charityStream->form_slug, - $cacheData->amount, - $cacheData->continuation_token, + $cacheData['amount'], + $cacheData['continuation_token'], ); - if ($cacheData->continuation_token != $result['continuationToken']) { + if ($cacheData['continuation_token'] != $result['continuation_token']) { $this->widgetRepository->updateStreamDonationWidgetCacheData($charityStream->guid, [ "amount" => $result['amount'], - "continuation_token" => $result['continuationToken'] + "continuation_token" => $result['continuation_token'] ]); } @@ -320,14 +320,14 @@ public function widgetDonationFetch(Request $request, Response $response, array $result = $this->apiWrapper->getAllOrders( $charityStream->organization_slug, $charityStream->form_slug, - $cacheData->amount, - $cacheData->continuation_token + $cacheData['amount'], + $cacheData['continuation_token'] ); - if ($cacheData->continuation_token != $result['continuationToken']) { + if ($cacheData['continuation_token'] != $result['continuation_token']) { $this->widgetRepository->updateStreamDonationWidgetCacheData($charityStream->guid, [ "amount" => $result['amount'], - "continuation_token" => $result['continuationToken'] + "continuation_token" => $result['continuation_token'] ]); } diff --git a/src/Repositories/FileManager.php b/src/Repositories/FileManager.php index 0d86ef0..a578307 100644 --- a/src/Repositories/FileManager.php +++ b/src/Repositories/FileManager.php @@ -40,14 +40,15 @@ private function checkType($formdata, $ext, $mimes) private function isPicture($formdata) { - $ext = ["gif", "heic", "heif", "jpg", "jpeg", "png", "webp"]; + $ext = ["gif", "heic", "heif", "jpg", "jpeg", "png", "webp", "mp4"]; $mimes = [ "image/gif", "image/heic", "image/heif", "image/jpeg", "image/png", - "image/webp" + "image/webp", + "video/mp4" ]; $this->checkType($formdata, $ext, $mimes); } diff --git a/src/Services/ApiWrapper.php b/src/Services/ApiWrapper.php index e3b80b8..722c141 100644 --- a/src/Services/ApiWrapper.php +++ b/src/Services/ApiWrapper.php @@ -296,7 +296,7 @@ public function getAllOrders($organizationSlug, $formSlug, $currentAmount = 0, $ return [ 'amount' => $currentAmount, 'donations' => $donations, - 'continuationToken' => $continuationToken + 'continuation_token' => $continuationToken ]; } } diff --git a/src/views/index.html.twig b/src/views/index.html.twig index 062091c..dcece41 100644 --- a/src/views/index.html.twig +++ b/src/views/index.html.twig @@ -58,7 +58,7 @@