From 73cbeeabb3f652fae55ecb58df415082ef4d5853 Mon Sep 17 00:00:00 2001
From: SofianeLasri <43948827+SofianeLasri@users.noreply.github.com>
Date: Fri, 30 Jul 2021 10:58:18 +0200
Subject: [PATCH] =?UTF-8?q?Upload=20du=20bout=20du=20module=20d'=C3=A9cans?=
 =?UTF-8?q?=20de=20chargements?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../vbcms-loadingscreen/admin/create.php      | 117 ++++++
 .../vbcms-loadingscreen/admin/list.php        |  36 ++
 .../vbcms-loadingscreen/admin/themes.php      |  24 ++
 .../vbcms-loadingscreen/assets/css/admin.css  |  25 ++
 .../modules/vbcms-loadingscreen/back.php      |  13 +
 .../vbcms-loadingscreen/client/index.php      |   3 +
 .../includes/admin-functions.php              | 359 ++++++++++++++++++
 .../includes/translations/FR.php              |  13 +
 .../modules/vbcms-loadingscreen/init.php      |  30 ++
 .../vbcms-loadingscreen/module-logo.jpg       | Bin 0 -> 1643 bytes
 .../modules/vbcms-loadingscreen/module.json   |  12 +
 .../vbcms-loadingscreen/moduleLoadPage.php    |  41 ++
 12 files changed, 673 insertions(+)
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/admin/create.php
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/admin/list.php
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/admin/themes.php
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/assets/css/admin.css
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/back.php
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/client/index.php
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/includes/admin-functions.php
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/includes/translations/FR.php
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/init.php
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/module-logo.jpg
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/module.json
 create mode 100644 vbcms-content/modules/vbcms-loadingscreen/moduleLoadPage.php

diff --git a/vbcms-content/modules/vbcms-loadingscreen/admin/create.php b/vbcms-content/modules/vbcms-loadingscreen/admin/create.php
new file mode 100644
index 0000000..c8f4de7
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/admin/create.php
@@ -0,0 +1,117 @@
+<?php
+$loadingScreenId = $bdd->query("SELECT COUNT(*) FROM `vbcms-loadingscreeens`")->fetchColumn() + 1;
+?>
+<!-- Contenu -->
+<div class="page-content" leftSidebar="240" rightSidebar="0">
+	<h3><?=$translation["loadingscreen_create"]?></h3>
+	<p>Vous pouvez créer plusieurs écrans de chargement.</p>
+	<div class="d-flex flex-column width-50em" id="page-content">
+		<h5>Prévisualisation</h5>
+		<div class="loadsingScreenPreviewTop rounded d-flex p-2 justify-content-center">
+				<div class="loadingScreenPreview rounded" style="background-image: url('https://api.apiflash.com/v1/urltoimage?access_key=65e037cb81b44087ba537b58dd19e4ff&format=jpeg&height=1080&quality=80&response_type=image&url=<?php echo urlencode($websiteUrl."loadingscreen/".$loadingScreenId."?preview"); ?>&width=1920');"></div>
+		</div>
+
+		<h5 class="mt-5">Paramètres</h5>
+		
+		<form class="needs-validation" novalidate>
+			<div class="form-group">
+				<label>Nom de l'écran de chargement</label>
+				<input type="text" name="name" class="form-control" value="<?= $_GET["name"] ?? '' ?>" placeholder="Un super écran de chargement" required>
+				<div class="valid-feedback">
+					Nickel!
+				</div>
+				<div class="invalid-feedback">
+					Veuillez donner un nom à l'écran de chargement.
+				</div>
+			</div>
+
+			<label>Images de fond</label>
+
+			<div class="form-row">
+
+				<div class="col-md-6 mb-3">
+					<input type="text" id="backgroundPics" name="backgroundPics" class="form-control" value="<?= $_GET["backgroundPics"] ?? '[]' ?>" required readonly>
+					<div class="valid-feedback">
+						Nickel!
+					</div>
+					<div class="invalid-feedback">
+						Veuillez choisir des images de fond
+					</div>
+				</div>
+				<div class="col-md-6 mb-3">
+					<button type="button" onclick="openGallery('backgroundPics')" id="chooseBackgroundPics" class="btn btn-brown">Choisir des images</button>
+				</div>
+					
+				
+			</div>
+			<button type="submit" name="submit" class="btn btn-brown">Créer l'écran de chargement</button>
+		</form>
+
+	</div>
+</div>
+
+<div class="modal fade" id="galleryModal" tabindex="-1">
+		<div class="modal-dialog galleryIncludeModal">
+			<div class="modal-content">
+				<div class="modal-header">
+					<h5 class="modal-title" id="exampleModalLabel">Choisir une image</h5>
+					<button type="button" class="close" data-dismiss="modal" aria-label="Close">
+						<span aria-hidden="true">&times;</span>
+					</button>
+				</div>
+
+				<!-- C'est ici que la galerie est incluse -->
+				<div class="modal-body">
+					<div id="alertContainer">
+						
+					</div>
+					<div id="includeGallery"></div>
+				</div>
+			</div>
+		</div>
+	</div>
+
+<script type="text/javascript">
+	var element = "";
+	(function() {
+		'use strict';
+		window.addEventListener('load', function() {
+		    // Fetch all the forms we want to apply custom Bootstrap validation styles to
+		    var forms = document.getElementsByClassName('needs-validation');
+		    // Loop over them and prevent submission
+		    var validation = Array.prototype.filter.call(forms, function(form) {
+		    	form.addEventListener('submit', function(event) {
+		    		if (form.checkValidity() === false) {
+		    			event.preventDefault();
+		          		event.stopPropagation();
+		       		}
+		        	form.classList.add('was-validated');
+		      	}, false);
+		    });
+	  	}, false);
+	})();
+
+	function openGallery(element){
+		$('#galleryModal').modal('toggle');
+		if ($('#includeGallery').html()=="")
+			$('#includeGallery').load('<?=$websiteUrl?>vbcms-content/modules/vbcms-filemanager/admin/gallery-include.php');
+		element = this.element;
+	}
+
+	// Contournement pour ne sélectionner que les images
+	function openViewer(path){
+		$("#websiteLogoPreview").css("background", "url(\"<?=$websiteUrl?>vbcms-content/uploads"+path+"\"),linear-gradient(180deg, rgba(65,65,65,1) 0%, rgba(1,1,1,1) 100%)");
+		$("#websiteLogo").val("<?=$websiteUrl?>vbcms-content/uploads"+path);
+		$('#galleryModal').modal('hide');
+	}
+	function openVideo(path){
+		$('#alertContainer').html("\
+			<div id=\"fileChooseAlert\" class=\"alert alert-warning alert-dismissible fade show\" role=\"alert\">\
+						<strong>Désolé,</strong> mais le fichier sélectionné ne semble pas être une image. :/\
+						<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\
+							<span aria-hidden=\"true\">&times;</span>\
+						</button>\
+					</div>\
+			");
+	}
+</script>
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/admin/list.php b/vbcms-content/modules/vbcms-loadingscreen/admin/list.php
new file mode 100644
index 0000000..ce024c5
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/admin/list.php
@@ -0,0 +1,36 @@
+<!-- Contenu -->
+<div class="page-content" leftSidebar="240" rightSidebar="0">
+	<h3><?=$translation["loadingscreens_list"]?></h3>
+	<p></p>
+	<div class="d-flex flex-column" id="page-content">
+		<div class="d-flex flex-wrap">
+			<div class="ld-card border rounded mx-1 my-1" style="background-image: url('https://sofianelasri.mtxserv.com/vbcms-content/uploads/stayonline.jpg');">
+				<div class="ld-card-content p-2">
+					<span><strong>Un super loading screen</strong></span>
+					<a href="#" class="btn btn-sm btn-brown float-right">Modifier</a>
+				</div>
+			</div>
+
+			<div class="ld-card border rounded mx-1 my-1" style="background-image: url('https://sofianelasri.mtxserv.com/vbcms-content/uploads/doubleload.jpg');">
+				<div class="ld-card-content p-2">
+					<span><strong>Un super loading screen</strong></span>
+					<a href="#" class="btn btn-sm btn-brown float-right">Modifier</a>
+				</div>
+			</div>
+
+			<div class="ld-card border rounded mx-1 my-1" style="background-image: url('https://sofianelasri.mtxserv.com/vbcms-content/uploads/themeTopImage.jpg');">
+				<div class="ld-card-content p-2">
+					<span><strong>Un super loading screen</strong></span>
+					<a href="#" class="btn btn-sm btn-brown float-right">Modifier</a>
+				</div>
+			</div>
+
+			<div class="ld-card border rounded mx-1 my-1" style="background-image: url('https://sofianelasri.mtxserv.com/vbcms-content/uploads/scp2.jpg');">
+				<div class="ld-card-content p-2">
+					<span><strong>Un super loading screen</strong></span>
+					<a href="#" class="btn btn-sm btn-brown float-right">Modifier</a>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/admin/themes.php b/vbcms-content/modules/vbcms-loadingscreen/admin/themes.php
new file mode 100644
index 0000000..88662a7
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/admin/themes.php
@@ -0,0 +1,24 @@
+<!-- Contenu -->
+<div class="page-content" leftSidebar="240" rightSidebar="0">
+	<h3><?=$translation["loadingscreens_themes"]?></h3>
+	<p>Les thèmes de VBcms 1 ont été portés.</p>
+	<div class="d-flex flex-column" id="page-content">
+		<div class="d-flex flex-wrap">
+			<?php
+			$themes = $bdd->query("SELECT * FROM `vbcms-themes` WHERE designedFor = 6")->fetchAll(PDO::FETCH_ASSOC);
+			foreach ($themes as $theme) {
+				$themePath = $GLOBALS['vbcmsRootPath']."/vbcms-content/themes".$theme['path'];
+				$themeInfos = json_decode(file_get_contents($themePath."/theme.json") ,true);
+				echo '
+				<div class="ld-card border rounded" style="background-image: url(\''.$GLOBALS['websiteUrl']."/vbcms-content/themes".$theme['path'].'/themeLargePic.jpg\');">
+					<div class="ld-card-content p-2">
+						<span><strong>'.$themeInfos['showname'].'</strong></span>
+						<a href="/create?themeId='.$themeInfos['workshopId'].'" class="btn btn-sm btn-brown float-right">Choisir</a>
+					</div>
+				</div>';
+			}
+			?>
+		</div>
+		
+	</div>
+</div>
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/assets/css/admin.css b/vbcms-content/modules/vbcms-loadingscreen/assets/css/admin.css
new file mode 100644
index 0000000..dcc09c4
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/assets/css/admin.css
@@ -0,0 +1,25 @@
+.ld-card{
+	position: relative;
+	width: 27em;
+	height: 15em;
+	background-color: #dadada;
+	overflow: hidden;
+	background-size: cover;
+}
+.ld-card-content{
+	position: absolute;
+	width: 100%;
+	bottom: 0;
+	background: linear-gradient(0deg, rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.75));
+	color: white;
+}
+.loadsingScreenPreviewTop {
+	width: 100%;
+	background-color: var(--mainBrown);
+}
+.loadingScreenPreview{
+	position: relative;
+	width: 34em;
+	height: 19em;
+	background-size: cover;
+}
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/back.php b/vbcms-content/modules/vbcms-loadingscreen/back.php
new file mode 100644
index 0000000..b549240
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/back.php
@@ -0,0 +1,13 @@
+<?php
+switch ($language) {
+    case "FR":
+        include $_SERVER['DOCUMENT_ROOT'].'/vbcms-content/modules/vbcms-loadingscreen/includes/translations/FR.php';
+        break;
+    case "EN":
+        include $_SERVER['DOCUMENT_ROOT'].'/vbcms-content/modules/vbcms-loadingscreen/includes/translations/EN.php';
+        break;
+    default:
+    	include $_SERVER['DOCUMENT_ROOT'].'/vbcms-content/modules/vbcms-loadingscreen/includes/translations/FR.php';
+        break;
+}
+?>
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/client/index.php b/vbcms-content/modules/vbcms-loadingscreen/client/index.php
new file mode 100644
index 0000000..9d38d56
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/client/index.php
@@ -0,0 +1,3 @@
+<?php
+print_r($GLOBALS['params']);
+echo "string";
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/includes/admin-functions.php b/vbcms-content/modules/vbcms-loadingscreen/includes/admin-functions.php
new file mode 100644
index 0000000..b7ec8ab
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/includes/admin-functions.php
@@ -0,0 +1,359 @@
+<?php
+function getSizeName($numOctets){
+    // Array contenant les differents unités 
+    $unite = array('octet','ko','mo','go');
+    
+    if ($numOctets < 1000){
+        return $numOctets.$unite[0];
+    } else {
+        if ($numOctets < 1000000){
+            $ko = round($numOctets/1024,2);
+            return $ko.$unite[1];
+        } else {
+            if ($numOctets < 1000000000){
+                $mo = round($numOctets/(1024*1024),2);
+                return $mo.$unite[2];
+            } else{ //Normalement on est pas censé attendre le Gigaoctet sur VBcms -> /!\ int 32bit = 2Go
+                $go = round($numOctets/(1024*1024*1024),2);
+                return $go.$unite[3];    
+            }
+        }
+    }
+}
+
+function getFolderContent($dir, $type) {
+    global $uploadFolderPath, $bdd;
+
+    if (substr($dir, -1)=="/") {
+        $dir=substr($dir, 0, -1);
+    }
+
+    $results = array();
+
+    $response = $bdd->prepare("SELECT * FROM `vbcms-folders` WHERE fullpath = ?");
+    $response->execute([$dir]);
+    if (empty($response->fetch())) {
+        $response = $bdd->prepare("INSERT INTO `vbcms-folders` (id, name, fullpath) VALUES (?,?,?)");
+        $response->execute([null, basename($dir), $dir]);
+    }
+
+    if (strpos($dir, $uploadFolderPath)===false){ //Si le chemin complet n'est pas déjà indiqué
+        $fullDir = $uploadFolderPath.$dir;
+    } else {
+        $fullDir = $dir;
+    }
+
+    if (substr($dir, -1)=="/") {// Permet de check si le dossier a un / à la fin
+                                // A MODIFIER CAR CA SERT A RIEN
+        $directorySeparator="";
+    }else{
+        $directorySeparator="/";
+    }
+
+    $files = scandir($fullDir);
+    if ($type == 0){ // Liste tout récursivement
+        foreach ($files as $key => $value) {
+            $path = $fullDir.$directorySeparator.$value;
+            if (!is_dir($path)) {
+                $results[] = $path;
+            } else if ($value != "." && $value != "..") {
+                $results[] = $path;
+                $results=array_merge($results, getFolderContent($path, 0));
+            }
+        }
+    } elseif ($type == 1) { // liste les fichiers et dossiers
+        foreach ($files as $key => $value) {
+            $path = $fullDir.$directorySeparator.$value;
+            if (!is_dir($path)) {
+                $securePath = str_replace($uploadFolderPath, "", $path);
+                $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent
+                $response->execute([$dir]);
+                $parentId = $response->fetch();
+
+                //Cherche si le fichier est déjà indexé
+                $response = $bdd->prepare("SELECT id FROM `vbcms-files` WHERE parentFolder = ? AND name = ?"); // Je récupère l'id du dossier parent
+                $response->execute([$parentId[0], basename($securePath)]);
+
+                if (empty($response->fetch())){
+                    $response = $bdd->prepare("INSERT INTO `vbcms-files` (id, name, parentFolder, size, title, description, articles) VALUES (?,?,?,?,?,?,?)");
+                    $response->execute([null, basename($securePath), $parentId[0], filesize($path), "", "", "[]"]);
+                }
+
+                $results[] = $path;
+            } else if ($value != "." && $value != "..") {
+                $results[] = $path;
+            }
+        }
+    } elseif ($type == 2) { //Liste uniquement les dossiers
+        foreach ($files as $key => $value) {
+            $path = $fullDir.$directorySeparator.$value;
+            if (is_dir($path) && $value != "." && $value != "..") {
+                $results[] = $path;
+            }
+        }
+    } elseif ($type == 3) { //Liste uniquement les fichiers
+        foreach ($files as $key => $value) {
+            $path = $fullDir.$directorySeparator.$value;
+            if (!is_dir($path)) {
+                $securePath = str_replace($uploadFolderPath, "", $path);
+                $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent
+                $response->execute([$dir]);
+                $parentId = $response->fetch();
+
+                //Cherche si le fichier est déjà indexé
+                $response = $bdd->prepare("SELECT id FROM `vbcms-files` WHERE parentFolder = ? AND name = ?"); // Je récupère l'id du dossier parent
+                $response->execute([$parentId[0], basename($securePath)]);
+
+                if (empty($response->fetch())){
+                    $response = $bdd->prepare("INSERT INTO `vbcms-files` (id, name, parentFolder, size, title, description, articles) VALUES (?,?,?,?,?,?,?)");
+                    $response->execute([null, basename($securePath), $parentId[0], filesize($path), "", "", "[]"]);
+                }
+
+                $results[] = $path;
+            }
+        }
+    }
+
+    for ($i=0;$i<count($results);$i++) { 
+        $results[$i]=str_replace($uploadFolderPath, "", $results[$i]);
+    }
+    
+    return $results;
+}
+
+function deleteContent($path, $alreadyFullPath){
+    global $uploadFolderPath, $bdd;
+    if ($alreadyFullPath) {
+        $fullPath = $path;
+    } else {
+        $fullPath = $uploadFolderPath.$path;
+    }
+    
+    $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier
+    $response->execute([$path]);
+    $folderId = $response->fetch();
+
+    if (is_dir($fullPath)) {
+        //echo "Suppression du dossier";
+        $scan = getFolderContent($path, 0);
+        foreach ($scan as $element) {
+            if (strpos($element, $uploadFolderPath)===false) { //S'il ne s'agit pas du chemin d'accès complet
+                $element = $uploadFolderPath.$element; //Je le créé
+            }
+            
+            if (is_dir($element)) {
+                deleteContent($element, true);
+            } else {
+                if (unlink($element)) { //Supprime le fichier et vérifie que c'est bon
+                    $response = $bdd->prepare("DELETE FROM `vbcms-files` WHERE parentFolder = ?");
+                    $response->execute([$folderId[0]]);
+                } else {
+                    echo "Impossible de supprimer le fichier";
+                }
+            }
+        }
+
+        if (rmdir($fullPath)) { //Supprime le dossier et vérifie que c'est bon
+            $response = $bdd->prepare("DELETE FROM `vbcms-folders` WHERE id = ?");
+            $response->execute([$folderId[0]]);
+        } else {
+            echo "Impossible de supprimer le dossier";
+        }
+    } else {
+        //echo "Suppression du fichier";
+        if (unlink($fullPath)) { //Supprime le fichier et vérifie que c'est bon
+            $response = $bdd->prepare("DELETE FROM `vbcms-files` WHERE parentFolder = ?");
+            $response->execute([$folderId[0]]);
+        } else {
+            echo "Impossible de supprimer le fichier";
+        }
+    }
+}
+
+function getFileDetails($filePath){ //string ou id
+    global $uploadFolderPath, $bdd;
+    $details = array();
+    if (!is_numeric($filePath)) {
+        array_push($details, basename($filePath)); //Ajoute le nom du fichier
+        array_push($details, getSizeName(filesize($uploadFolderPath.$filePath))); //Ajoute la taille du fichier en questions
+
+        if (filemtime($uploadFolderPath.$filePath)!=false) {
+            array_push($details, date("F d Y H:i:s.", filemtime($uploadFolderPath.$filePath))); //Ajout de la date de modification
+        }else{
+            array_push($details, "Date inconnue");
+        }
+        $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent
+        $response->execute([dirname($filePath)]);
+        $parentId = $response->fetch();
+
+        $response = $bdd->prepare("SELECT * FROM `vbcms-files` WHERE parentFolder = ? AND name = ?"); // Je récupère l'id du dossier parent
+        $response->execute([$parentId[0], basename($filePath)]);
+        $response = $response->fetch(PDO::FETCH_ASSOC);
+        array_push($details, $response["title"]);
+        array_push($details, $response["description"]);
+        array_push($details, $response["id"]);
+        array_push($details, $filePath);
+    }else{
+        $response = $bdd->prepare("SELECT * FROM `vbcms-files` WHERE id = ?"); // Je récupère l'id du dossier parent
+        $response->execute([$filePath]);
+        $response = $response->fetch(PDO::FETCH_ASSOC);
+        $parentId = $response["parentFolder"];
+        $filename = $response["name"];
+        array_push($details, $response["name"]); //Ajoute le nom du fichier
+        array_push($details, getSizeName($response["size"])); //Ajoute la taille du fichier en questions
+
+        $response2 = $bdd->prepare("SELECT * FROM `vbcms-folders` WHERE id = ?"); // Je récupère le fullpath
+        $response2->execute([$parentId]);
+        $response2 = $response2->fetch(PDO::FETCH_ASSOC);
+
+        if (filemtime($uploadFolderPath.$response2["fullpath"]."/".$filename)!=false) {
+            array_push($details, date("F d Y H:i:s.", filemtime($uploadFolderPath.$response2["fullpath"]."/".$filename))); //Ajout de la date de modification
+        }else{
+            array_push($details, "Date inconnue");
+        }
+        array_push($details, $response["title"]);
+        array_push($details, $response["description"]);
+        array_push($details, $response["id"]);
+
+        $response = $bdd->prepare("SELECT * FROM `vbcms-folders` WHERE id = ?"); // Je récupère le fullpath
+        $response->execute([$parentId]);
+        $response = $response->fetch(PDO::FETCH_ASSOC);
+        array_push($details, $response2["fullpath"]."/".$filename);
+    }
+    
+    return $details;
+}
+
+function getFolderDetails($folderPath){
+    global $uploadFolderPath, $bdd;
+    $details = array();
+    if (!is_numeric($folderPath)) {
+        array_push($details, basename($folderPath)); //Ajoute le nom du fichier
+        array_push($details, getSizeName(filesize($uploadFolderPath.$folderPath))); //Ajoute la taille du fichier en questions
+
+        if (filemtime($uploadFolderPath.$folderPath)!=false) {
+            array_push($details, date("F d Y H:i:s.", filemtime($uploadFolderPath.$folderPath))); //Ajout de la date de modification
+        }else{
+            array_push($details, "Date inconnue");
+        }
+        $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent
+        $response->execute([$folderPath]);
+        $response = $response->fetch(PDO::FETCH_ASSOC);
+        array_push($details, $response["id"]);
+        array_push($details, $folderPath);
+    }else{
+        $response = $bdd->prepare("SELECT * FROM `vbcms-folders` WHERE id = ?"); // Je récupère l'id du dossier parent
+        $response->execute([$folderPath]);
+        $response = $response->fetch(PDO::FETCH_ASSOC);
+        array_push($details, $response["name"]); //Ajoute le nom du fichier
+        array_push($details, getSizeName(filesize($uploadFolderPath.$response["fullpath"]))); //Ajoute la taille du fichier en questions
+
+        if (filemtime($uploadFolderPath.$response["fullpath"])!=false) {
+            array_push($details, date("F d Y H:i:s.", filemtime($uploadFolderPath.$response["fullpath"]))); //Ajout de la date de modification
+        }else{
+            array_push($details, "Date inconnue");
+        }
+        array_push($details, $response["id"]);
+        array_push($details, $response["fullpath"]);
+    }
+    
+    return $details;
+}
+
+function updateFileDetails($path, $title, $description){
+    global $bdd;
+    $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent
+    $response->execute([dirname($path)]);
+    $parentId = $response->fetch();
+
+    $filename = basename($path);
+    $response = $bdd->prepare("SELECT id FROM `vbcms-files` WHERE parentFolder = ? AND name = ?"); // Je récupère l'id du dossier parent
+    $response->execute([$parentId[0], basename($path)]);
+    $fileId = $response->fetch();
+
+    $response = $bdd->prepare("UPDATE `vbcms-files` SET title= ?, description=? WHERE id = ?");
+    $response->execute([$title, $description, $fileId[0]]);
+}
+
+function renameFile($path, $name){
+    global $uploadFolderPath, $bdd;
+    $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent
+    $response->execute([dirname($path)]);
+    $parentId = $response->fetch();
+
+    $filename = basename($path);
+    $response = $bdd->prepare("SELECT id FROM `vbcms-files` WHERE parentFolder = ? AND name = ?"); // Je récupère l'id du dossier parent
+    $response->execute([$parentId[0], basename($path)]);
+    $fileId = $response->fetch();
+
+    rename($uploadFolderPath.$path, $uploadFolderPath.dirname($path)."/".$name);
+
+    $response = $bdd->prepare("UPDATE `vbcms-files` SET name= ? WHERE id = ?");
+    $response->execute([$name, $fileId[0]]);
+}
+
+function copyMove($path, $destination, $action){
+    global $uploadFolderPath, $bdd;
+    if ($action == "copy") {
+        copy($uploadFolderPath.$path, $uploadFolderPath.$destination);
+        $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent original
+        $response->execute([dirname($path)]);
+        $parentId = $response->fetch();
+        $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent de destination
+        $response->execute([dirname($destination)]);
+        $parentDestId = $response->fetch();
+
+        $response = $bdd->prepare("INSERT INTO `vbcms-files` (id, name, parentFolder, size, title, description, articles) VALUES (?,?,?,?,?,?,?)"); // Je créé la ligne du nouveau fichier
+        $response->execute([null, basename($destination), $parentDestId[0], filesize($uploadFolderPath.$destination), "", "", "[]"]);
+    } elseif($action == "move"){
+        copy($uploadFolderPath.$path, $uploadFolderPath.$destination);
+        unlink($uploadFolderPath.$path);
+        $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent original
+        $response->execute([dirname($path)]);
+        $parentId = $response->fetch();
+        $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent de destination
+        $response->execute([dirname($destination)]);
+        $parentDestId = $response->fetch();
+
+        $response = $bdd->prepare("SELECT id FROM `vbcms-files` WHERE parentFolder = ? AND name = ?"); // Je récupère l'id du fichier à délacer
+        $response->execute([$parentId[0], basename($path)]);
+        $fileId = $response->fetch();
+
+        $response = $bdd->prepare("UPDATE `vbcms-files` SET name= ?, parentFolder= ? WHERE parentFolder = ? AND name = ?"); // Je modifie les données en question
+        $response->execute([basename($destination),$parentDestId[0] ,$parentId[0], basename($path)]);
+    }
+}
+
+function deleteFileFolder($path){
+    global $uploadFolderPath, $bdd;
+    if (is_dir($uploadFolderPath.$path)) { // Si c'est un dossier
+        $filesFolders=getFolderContent($path, 1); // Alors je scan le contenu du dossier
+        foreach ($filesFolders as $object) { // Et je supprime tous les éléments 1 par 1
+            deleteFileFolder($object);
+        }
+        $response = $bdd->prepare("DELETE FROM `vbcms-folders` WHERE fullpath = ?"); // Je supprime le dossier
+        $response->execute([$path]);
+        rmdir($uploadFolderPath.$path);
+    } else {
+        unlink($uploadFolderPath.$path);
+        $response = $bdd->prepare("SELECT id FROM `vbcms-folders` WHERE fullpath = ?"); // Je récupère l'id du dossier parent
+        $response->execute([dirname($path)]);
+        $parentId = $response->fetch();
+
+        $filename = basename($path);
+        $response = $bdd->prepare("SELECT id FROM `vbcms-files` WHERE parentFolder = ? AND name = ?"); // Je récupère l'id du fichier
+        $response->execute([$parentId[0], basename($path)]);
+        $fileId = $response->fetch();
+
+        $response = $bdd->prepare("DELETE FROM `vbcms-files` WHERE id = ?"); // Je supprime le fichier
+        $response->execute([$fileId[0]]);
+    }
+}
+
+function createFolder($path){
+    global $uploadFolderPath, $bdd;
+    mkdir($uploadFolderPath.$path, 0755);
+    $response = $bdd->prepare("INSERT INTO `vbcms-folders` (id, name, fullpath) VALUES (?,?,?)");
+    $response->execute([null, basename($path), $path]);
+}
+?>
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/includes/translations/FR.php b/vbcms-content/modules/vbcms-loadingscreen/includes/translations/FR.php
new file mode 100644
index 0000000..33ad0d0
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/includes/translations/FR.php
@@ -0,0 +1,13 @@
+<?php
+// Traduction module de site internet
+
+$translation["loadingscreen"] = "Écran de chargement";
+$translation["loadingscreens"] = "Écrans de chargement";
+$translation["loadingscreen_create"] = "Créer un loadingscreen";
+$translation["loadingscreen_modify"] = "Modifier un loadingscreen";
+$translation["loadingscreens_list"] = "Liste des loadingscreens";
+$translation["loadingscreens_themes"] = "Thèmes";
+$translation["sample"] = "sample";
+$translation["sample"] = "sample";
+$translation["sample"] = "sample";
+?>
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/init.php b/vbcms-content/modules/vbcms-loadingscreen/init.php
new file mode 100644
index 0000000..84c30a5
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/init.php
@@ -0,0 +1,30 @@
+<?php
+// Page d'initialisation
+adminNavbarAddCategory("vbcms-loadingscreen-system", "loadingscreen");
+adminNavbarAddItem("vbcms-loadingscreen-system", "fa-plus-circle", "loadingscreen_create", "/vbcms-admin/loadingscreen/create");
+adminNavbarAddItem("vbcms-loadingscreen-system", "fa-list", "loadingscreens_list", "/vbcms-admin/loadingscreen/list");
+adminNavbarAddItem("vbcms-loadingscreen-system", "fa-brush", "loadingscreens_themes", "/vbcms-admin/loadingscreen/themes");
+
+
+//Création des tables
+$bdd->query("CREATE TABLE IF NOT EXISTS `vbcms-loadingscreeens` (
+`id` INT(11) NOT NULL AUTO_INCREMENT,
+`themeId` INT(11) NOT NULL,
+`name` INT(255) NOT NULL,
+PRIMARY KEY (`id`)
+) ENGINE = InnoDB;");
+
+$bdd->query("CREATE TABLE IF NOT EXISTS `vbcms-tempLoadingscreeens` (
+`id` INT(11) NOT NULL AUTO_INCREMENT,
+`themeId` INT(11) NOT NULL,
+`name` INT(255) NOT NULL,
+PRIMARY KEY (`id`)
+) ENGINE = InnoDB;");
+
+$bdd->query("CREATE TABLE IF NOT EXISTS `vbcms-loadingscreensParameters` (
+`loadingScreenId` INT(11) NOT NULL,
+`name` VARCHAR(128) NOT NULL,
+`value` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+PRIMARY KEY (`loadingScreenId`, `name`)
+) ENGINE = InnoDB;");
+?>
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/module-logo.jpg b/vbcms-content/modules/vbcms-loadingscreen/module-logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5d61327ec5aff4aec0b54d3fd681fd304dfa2e9e
GIT binary patch
literal 1643
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

literal 0
HcmV?d00001

diff --git a/vbcms-content/modules/vbcms-loadingscreen/module.json b/vbcms-content/modules/vbcms-loadingscreen/module.json
new file mode 100644
index 0000000..818a483
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/module.json
@@ -0,0 +1,12 @@
+{
+  "workshopId" : "6",
+  "requiredModules" : "[3]",
+  "name": "vbcms-loadingscreen-system",
+  "showname": "Système d'écran de chargement",
+  "version": "1.0",
+  "compatible": "2.0",
+  "author": "76561198148455403",
+  "description": "Il s'agit du système d'écran de chargement de base de VBcms.",
+  "clientAccess": "loadingscreen",
+  "adminAccess": "loadingscreen"
+}
\ No newline at end of file
diff --git a/vbcms-content/modules/vbcms-loadingscreen/moduleLoadPage.php b/vbcms-content/modules/vbcms-loadingscreen/moduleLoadPage.php
new file mode 100644
index 0000000..f3cd05b
--- /dev/null
+++ b/vbcms-content/modules/vbcms-loadingscreen/moduleLoadPage.php
@@ -0,0 +1,41 @@
+<?php
+// Je rappel qu'on a $type et $params
+$params = $moduleParams;
+$uploadFolderPath = $GLOBALS['vbcmsRootPath'].'/vbcms-content/uploads';
+
+
+if($type=="admin") {
+	// Variables nécessaire à création d'une page
+	$pageDepedencies = '<link href="'.$websiteUrl.'vbcms-content/modules/vbcms-loadingscreen/assets/css/admin.css" rel="stylesheet">';
+
+	if ($params[1]=="create") {
+		
+		// Variables Modifier la navbar à création d'une page
+		$pageTitle = $translation["loadingscreen_create"];
+		$pageToInclude = $GLOBALS['vbcmsRootPath']."/vbcms-content/modules/vbcms-loadingscreen/admin/create.php";
+		createModulePage($pageTitle, "", $pageDepedencies, $pageToInclude, 0);
+	}elseif ($params[1]=="list") {
+		
+		// Variables Modifier la navbar à création d'une page
+		$pageTitle = $translation["loadingscreens_list"];
+		$pageToInclude = $GLOBALS['vbcmsRootPath']."/vbcms-content/modules/vbcms-loadingscreen/admin/list.php";
+		createModulePage($pageTitle, "", $pageDepedencies, $pageToInclude, 0);
+	}elseif ($params[1]=="themes") {
+		
+		// Variables Modifier la navbar à création d'une page
+		$pageTitle = $translation["loadingscreens_themes"];
+		$pageToInclude = $GLOBALS['vbcmsRootPath']."/vbcms-content/modules/vbcms-loadingscreen/admin/themes.php";
+		createModulePage($pageTitle, "", $pageDepedencies, $pageToInclude, 0);
+	}
+	
+}elseif($type=="client"){
+	if (!empty($params[0])) {
+		
+		echo $params[0];
+	}
+}
+
+// Fonctions publiques
+
+
+?>
\ No newline at end of file
-- 
GitLab