Skip to content
Snippets Groups Projects
Commit 55abf99c authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

15H23 : Ajout de commentaires&corrections mineures

parent a9d3403f
Branches
Tags
No related merge requests found
<?php
// Fichier de test
$deTest = function($index){
$translation['test1'] = "Magnifique premier test";
$translation['test2'] = "Magnifique premier test";
......
<?php
// Ici j'ai recréé la fonction que l'on appel pour les modules, car la flemme de faire autrement
// Et puis ça marche pareil donc bon...
// Une amélioration de la structure pourrait en revanche être une bonne idée, là c'est un peu le bazar
function getSettingsHTML($params){
global $bdd, $translation;
$curentUpdateCanal = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='updateCanal'")->fetchColumn();
......@@ -173,6 +177,10 @@ function getSettingsHTML($params){
<div class="d-flex">
<div class="flex-grow-1 d-flex flex-column">
<div class="mt-2">
<a href="#" class="btn btn-brown btn-sm"><i class="fas fa-envelope"></i> Inviter un utilisateur</a>
<a href="#" class="btn btn-outline-brown btn-sm"><i class="fas fa-user-plus"></i> Créer un utilisateur local</a>
</div>
<?php
$userGroups=$bdd->query("SELECT * FROM `vbcms-userGroups` ORDER BY `groupId` ASC")->fetchAll(PDO::FETCH_ASSOC);
foreach($userGroups as $userGroup){
......@@ -250,7 +258,7 @@ function getSettingsHTML($params){
<div class="admin-tips" style="position: relative !important; ">
<div class="tip">
<h5>Gérer les utilisateurs</h5>
<p>VBcms peut être utilisé par plusieurs peronnes en même temps. Ici tu peux gérer leur compte utilisateur, fais bien attention à qui à accès au panel admin.</p>
<p>VBcms peut être utilisé par plusieurs peronnes en même temps. Ici tu peux gérer leur compte, mais également inviter d'autres personnes.<br><strong>Fais bien attention à qui aura accès au panneau d'administration.</strong></p>
</div>
......
<?php
if ($paths[3]=="" OR $paths[3]=="browse") {
if ($urlPath[3]=="" OR $urlPath[3]=="browse") {
echo "Vitrine du workshop";
} elseif ($paths[3]=="manage") {
} elseif ($urlPath[3]=="manage") {
include $GLOBALS['vbcmsRootPath']."/vbcms-admin/manage-ws-addons.php";
} elseif ($paths[3]=="create") {
} elseif ($urlPath[3]=="create") {
include $GLOBALS['vbcmsRootPath']."/vbcms-admin/create-ws-addons.php";
} else {
include $GLOBALS['vbcmsRootPath']."/vbcms-admin/404.php";
......
......@@ -80,7 +80,7 @@ if(isset($_POST['paths'])){
$name = $_POST['names'][$key];
}
list($path,$path_thumb,$name) = returnPaths($path,$name,$config);
$paths[] = $path;
$urlPath[] = $path;
$paths_thumb[] = $path_thumb;
$names = $name;
}
......
<?php
// Ici on est sur le script des tâches automatisées
// On check les mises à jour
$datetime = new DateTime(date("Y-m-d H:i:s"));
......
......@@ -3,20 +3,28 @@
// Puis on va vérifier qu'il a bien le droit d'être ici
if (!isset($_SESSION["user_id"])) { // Si l'utilisateur n'est pas connecté
if (basename($_SERVER['PHP_SELF'])!="login.php" && !isset($sessionData) && !isset($sessionData['error'])) { // On check que la page actuelle n'est pas la page de login, mais également de rediriger pendant la création de la session
// On check que la page actuelle n'est pas la page de login, mais également que le panel n'est pas en train de traiter une connexion
if (basename($_SERVER['PHP_SELF'])!="login.php" && !isset($sessionData) && !isset($sessionData['error'])) {
// On le renvoie vers la page de connexion
header("Location: https://vbcms.net/manager/login?from=".urlencode("$http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));
}
} else {
// On va vérifier qu'il a accès au panel admin
if ($_SESSION['accessAdmin']!= 1){
if ($_SERVER['HTTP_HOST'] != "vbcms.net") {
session_destroy(); // On détruit la session
}
// Le message d'erreur sera à changer, je ne l'ai pas encore fait car je dois refaire le drm
header("Location: https://vbcms.net/manager/?error=".urlencode("Tu n'as pas le droit de te connecter à ce site <img height=\"16\" src=\"https://vbcms.net/vbcms-content/uploads/emoji/oiseau-pas-content.png\">"));
exit(); // Pour être sûr qu'il n'y ai pas de problèmes
}
// On inclu les scripts de fond des modules activés
// NOTE : On pourrait le faire en instanciant la classe module
$response = $bdd->query("SELECT * FROM `vbcms-activatedExtensions` WHERE type='module'");
$response = $response->fetchAll(PDO::FETCH_ASSOC);
if (!empty($response)) {
......@@ -26,19 +34,22 @@ if (!isset($_SESSION["user_id"])) { // Si l'utilisateur n'est pas connecté
}
}
// On inclue les associations de page admin
require_once 'adminPagesAssoc.php';
// Maintenant on va vérifier la présence du chemin demandé dans cette page d'associations
if (array_key_exists($paths[2], $adminPagesAssoc)) {
if($adminPagesAssoc[$paths[2]]!="") // On évite "" même si adminPagesAssoc renvoie un lien vide
include $GLOBALS['vbcmsRootPath']."/vbcms-admin/".$adminPagesAssoc[$paths[2]]; // Charge la page admin
if (array_key_exists($urlPath[2], $adminPagesAssoc)) {
if($adminPagesAssoc[$urlPath[2]]!="") // On évite "" même si adminPagesAssoc renvoie un lien vide
include $GLOBALS['vbcmsRootPath']."/vbcms-admin/".$adminPagesAssoc[$urlPath[2]]; // Charge la page admin
// On a pas de page 404 pour les inclusions menant à rien du tout, on considère qu'elle doivent toujours mener à quelque chsoe
} else {
// Si le chemin demandé n'y est pas, alors on va appeler le module qui gère ce chemin
$moduleParams = array();
for ($i=2; $i<count($paths); $i++) {
array_push($moduleParams, $paths[$i]);
for ($i=2; $i<count($urlPath); $i++) {
array_push($moduleParams, $urlPath[$i]);
}
loadModule("admin", $paths[2], $moduleParams); // Charge le module admin
loadModule("admin", $urlPath[2], $moduleParams); // Charge le module admin
}
}
// Le reste est géré par le module ou la page admin
<?php
// Le gestionnaire client est assez vide comparé à celui qui gère la partie admin
// En fait je dois encore faire quelques ajouts, comment par exemple si un module utilise l'alias de l'index en partie client
// Il faudra dans un premier temps, vérifier que ce module ne gère pas le premier chemin de l'url,
// Puis on cherchera sur la liste des modules activés si ce dernier ne le gère pas.
// On vérifie que le premier chemin ne soit pas vbcms-content afin de permettre aux extension de pouvoir communiquer
if ($paths[1]!="vbcms-content") {
if($paths[1]=="backTasks"){
if ($urlPath[1]!="vbcms-content") {
if($urlPath[1]=="backTasks"){
include $GLOBALS['vbcmsRootPath']."/vbcms-core/clientBackTasks.php";
} else {
// J'indique que l'utilisateur ayant l'ip X a visité cette page à cet instant t
$response = $bdd->prepare("INSERT INTO `vbcms-websiteStats` (id, date, page, ip) VALUES (?,?,?,?)");
$response->execute([null, date("Y-m-d H:i:s"), $_SERVER['REQUEST_URI'], $ip]);
$moduleParams = array();
for ($i=2; $i<count($paths); $i++) {
array_push($moduleParams, $paths[$i]);
for ($i=2; $i<count($urlPath); $i++) {
array_push($moduleParams, $urlPath[$i]);
}
loadModule("client", $paths[1], $moduleParams);
loadModule("client", $urlPath[1], $moduleParams);
}
}
\ No newline at end of file
<?php
// Ce qu'on fait ici c'est récupérer le dossier racine de VBcms
// Sur la pre2.0 toute la partie logique se passait dans /vbcms-admin
// Ce raisonnement était donc logique car toujours valable.
// On pourra récupérer cette variable sur l'ensemble du cms
// Il faudra en revanche, voir si cela fonctionnera toujours avec la nouvelle architecture.
if(!isset($vbcmsRootPath)){
$vbcmsRootPath = getcwd();
if(strpos($vbcmsRootPath, "/vbcms-core") !== false){
......@@ -28,33 +26,12 @@ require_once 'functions.php';
// On inclue le fichier des classes
require_once 'classes.php';
// On inclue les classes et fonctions du Namespace VBcms
//require_once 'ns-VBcms.php';
// On inclue le fichier responsable de la session utilisateur
// L'API de la pre 2.0 est encore UP, mais il faudra revoir ce fichier dès que la pre 2.1 sera terminée
require_once 'sessionHandler.php';
/*
// Switch pour la langue
if(!isset($_SESSION["language"])){
$geoPlugin_array = unserialize( file_get_contents('http://www.geoplugin.net/php.gp?ip=' . $_SERVER['REMOTE_ADDR']) );
$language = $geoPlugin_array['geoplugin_countryCode'];
} else $language = $_SESSION["language"];
switch ($language) {
case "FR":
require_once $GLOBALS['vbcmsRootPath'].'/vbcms-content/translations/FR.php';
break;
case "EN":
require_once $GLOBALS['vbcmsRootPath'].'/vbcms-content/translations/EN.php';
break;
default:
require_once $GLOBALS['vbcmsRootPath'].'/vbcms-content/translations/FR.php';
break;
}
*/
// Maintenant on va gérer l'affichage des pages selon l'url
if($paths[1]=="vbcms-admin"){
if($urlPath[1]=="vbcms-admin"){
// L'utilisateur est sur le panel admin du cms
require_once "adminHandler.php";
// On va executer les tâches de fond du panel admin
......
......@@ -57,6 +57,7 @@ function loadModule($type, $moduleAlias, $moduleParams){
}
}
// Cette fonction est appelée par les modules afin de créer des pages selon 3 modes (pas vraiment besoin de l'appeler pour le 3ème)
function extensionCreatePage($panelMode, $creationMode, $pageToInclude, $title, $description, $depedencies){
// Le mode 0 correspond à l'inclusion d'une page qui retourne du code HTML
// Le mode 1 correspond à l'inclusion d'une page qui ne fait que passer des paramètres
......@@ -75,8 +76,10 @@ function extensionCreatePage($panelMode, $creationMode, $pageToInclude, $title,
}
}
// Cette fonction permet la traduction des textures en fcontion de la langue utilisée par l'utilisateur
function translate($index){
global $bdd;
// Peut probable, mais il se peut que la langue n'ai pas été définie plus tôt
if(!isset($_SESSION["language"])){
$geoPlugin_array = unserialize( file_get_contents('http://www.geoplugin.net/php.gp?ip=' . $_SERVER['REMOTE_ADDR']) );
$_SESSION["language"] = $geoPlugin_array['geoplugin_countryCode'];
......@@ -95,8 +98,11 @@ function translate($index){
break;
}
// En gros, s'il existe une traduction, on la récupère
if(isset($translation[$index])) $response = $translation[$index];
else {
// Sinon on suppose que c'est une traduction d'un module
// Et donc on va la chercher
$response = $bdd->query("SELECT * FROM `vbcms-activatedExtensions`");
$activatedExtensions = $response->fetchAll(PDO::FETCH_ASSOC);
foreach ($activatedExtensions as $activatedExtension){
......@@ -107,6 +113,7 @@ function translate($index){
}
}
// S'il n'y a vraiment rien....
if(!isset($translation[$index])) $response = $translation["unknownTranslation"];
return $response;
}
......@@ -164,13 +171,8 @@ function adminNavbarAddItem($moduleName, $icon, $name, $link){
$response = $bdd->prepare("INSERT INTO `vbcms-adminNavbar` (id, parentId, position, parentPosition, value1, value2, value3) VALUES (?,?,?,?,?,?,?)");
$response->execute([null, $parentInfos["id"], $parentInfos["position"], $parentPosition, $icon, $name, $link]);
}
function modifyNavItem($item){
global $bdd;
$item = json_decode($item);
$response = $bdd->prepare("UPDATE `vbcms-clientNavbar` SET value1=?, value2=? WHERE id=?");
$response->execute([$item[1], $item[2], $item[0]]);
}
// Permet de vérifier qu'un utilisateur a bien les permissions pour visualiser ou effectuer une tâche
function verifyUserPermission($userId, $extensionName, $action){
global $bdd;
// On va récupérer les infos de l'utilisateur
......
<?php
// Ce namespace est réservé aux modules
// On ne pourra pas empêcher l'utilisation de fonction natives, mais on peu essayer de sécuriser le plus possible
\ No newline at end of file
<?php
// On ne met dans ce fichier, que les variables qui seront constament utilisées
// On récupère l'ip
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
......@@ -13,7 +15,7 @@ if(isset($_SERVER['HTTPS'])) $http = "https"; else $http = "http";
// Variables permettant la gestion des pages à afficher
$url = parse_url("$http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
$paths = explode("/", $url["path"]);
$urlPath = explode("/", $url["path"]);
// Variables propres à l'installation
$encryptionKey = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='encryptionKey'")->fetchColumn();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment