Files

1540 lines
74 KiB
PHP

<?php
include "../config/config.php";
Init_session(basename($_SERVER['SCRIPT_NAME'])); // Fonction ouvrant la session et vérifiant que les accès sont autorisés.
//************************************************************************************************************************************
// Initialisation des variables globales
//************************************************************************************************************************************
$message_erreur = "";
$message_information = "";
$flag_redirection = false;
$max_nb_types_version = 50;
$types_version = array(
array("ShipHeart", "TB_Versions", "Nom", "package", "", "/packages"),
array("Application", "TB_Versions_appli", "Fichier", "version", "ID_Version_appli", "/ressources/appli"),
array("QT", "TB_Versions_qt", "Fichier", "version", "ID_Version_qt", "/ressources/qt"),
array("Api", "TB_Versions_api", "Fichier", "version", "ID_Version_api", "/ressources/api"),
array("Compagnon_v1", "TB_Versions_compagnon_v1", "Fichier", "version", "ID_Version_compagnon_v1", "/ressources/compagnon_v1"),
array("Compagnon_v2", "TB_Versions_compagnon_v2", "Fichier", "version", "ID_Version_compagnon_v2", "/ressources/compagnon_v2"),
array("SP812", "TB_Versions_sp812", "Fichier", "version", "ID_Version_sp812", "/ressources/sp812"),
array("SP4AC", "TB_Versions_sp4ac", "Fichier", "version", "ID_Version_sp4ac", "/ressources/sp4ac"),
array("SP8DC", "TB_Versions_sp8dc", "Fichier", "version", "ID_Version_sp8dc", "/ressources/sp8dc"),
array("SBS", "TB_Versions_sbs", "Fichier", "version", "ID_Version_sbs", "/ressources/sbs"),
array("SQL", "TB_Versions_sql", "Fichier", "version", "ID_Version_sql", "/ressources/sql"),
array("WWW", "TB_Versions_www", "Repertoire", "version", "ID_Version_www", "/ressources/www"),
array("Updater", "TB_Versions_updater", "Fichier", "version", "ID_Version_updater", "/ressources/updater"),
array("", "", "", "", "", "") // Doit finir par une chaine vide en rang 0
);
Ouverture_bdd(); // Connexion à MySql
//************************************************************************************************************************************
// Traitement des variables d'entrées
//************************************************************************************************************************************
// Variables de SESSION :
if (!isset($_SESSION['Versions']['page'])) $_SESSION['Versions']['page'] = 'Accueil';
if (!isset($_SESSION['Versions']['ancre'])) $_SESSION['Versions']['ancre'] = "#";
if (!isset($_SESSION['Versions']['type_version'])) $_SESSION['Versions']['type_version'] = 0;
if (!isset($_SESSION['Versions']['version']['Cle_primaire'])) $_SESSION['Versions']['version']['Cle_primaire'] = 0;
if (!isset($_SESSION['Versions']['version']['Nom'])) $_SESSION['Versions']['version']['Nom'] = "";
if (!isset($_SESSION['Versions']['version']['Date'])) $_SESSION['Versions']['version']['Date'] = date("Y-m-d");
if (!isset($_SESSION['Versions']['version']['ID_Version_appli'])) $_SESSION['Versions']['version']['ID_Version_appli'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_qt'])) $_SESSION['Versions']['version']['ID_Version_qt'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_api'])) $_SESSION['Versions']['version']['ID_Version_api'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_compagnon_v1'])) $_SESSION['Versions']['version']['ID_Version_compagnon_v1'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_compagnon_v2'])) $_SESSION['Versions']['version']['ID_Version_compagnon_v2'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_sp812'])) $_SESSION['Versions']['version']['ID_Version_sp812'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_sp4ac'])) $_SESSION['Versions']['version']['ID_Version_sp4ac'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_sp8dc'])) $_SESSION['Versions']['version']['ID_Version_sp8dc'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_sbs'])) $_SESSION['Versions']['version']['ID_Version_sbs'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_sql'])) $_SESSION['Versions']['version']['ID_Version_sql'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_www'])) $_SESSION['Versions']['version']['ID_Version_www'] = 0;
if (!isset($_SESSION['Versions']['version']['ID_Version_updater'])) $_SESSION['Versions']['version']['ID_Version_updater'] = 0;
if (!isset($_SESSION['Versions']['version']['Description_interne'])) $_SESSION['Versions']['version']['Description_interne'] = "";
if (!isset($_SESSION['Versions']['version']['Description_externe'])) $_SESSION['Versions']['version']['Description_externe'] = "";
// Variables GET :
if (isset($_GET['action']))
{
switch ($_GET['action'])
{
//===================================
case "navigation":
{
if (isset($_GET['destination']))
{
$_SESSION['Versions']['page'] = $_GET['destination'];
// $_SESSION['display_menu'] = false;
}
if (isset($_GET['ancre']))
{
$_SESSION['Versions']['ancre'] = $_GET['ancre'];
// $_SESSION['display_menu'] = false;
}
break;
}
//===================================
case "changement_langue":
{
if (isset($_GET['langue']))
{
$_SESSION['langue'] = $_GET['langue'];
chargement_langue();
}
break;
}
//===================================
case "changement_type":
{
if (isset($_GET['type']))
{
$_SESSION['type_utilisateur'] = $_GET['type'];
chargement_langue();
}
break;
}
//===================================
case "toggle_edit":
{
if ($_SESSION['modifier_texte'] == 0) $_SESSION['modifier_texte'] = 1;
else if ($_SESSION['modifier_texte'] == 1) $_SESSION['modifier_texte'] = 0;
break;
}
//===================================
case "affichage_liste_versions":
{
if (isset($_GET['type_version']))
{
$_SESSION['Versions']['type_version'] = $_GET['type_version'];
$_SESSION['Versions']['page'] = "Liste_versions";
}
break;
}
//===================================
case "affichage_liste_evolutions":
{
$_SESSION['Versions']['page'] = "Liste_evolutions";
break;
}
//===================================
case "modification_version":
{
if ((isset($_GET['type_version'])) && (isset($_GET['id_version'])))
{
$_SESSION['Versions']['type_version'] = $_GET['type_version'];
$_SESSION['Versions']['version']['Cle_primaire'] = $_GET['id_version'];
$_SESSION['Versions']['page'] = "Modification_version";
}
break;
}
//===================================
case "creation_version":
{
if (isset($_GET['type_version']))
{
$_SESSION['Versions']['type_version'] = $_GET['type_version'];
$_SESSION['Versions']['page'] = "Creation_version";
}
break;
}
//===================================
case "demande_suppression_version":
{
if ((isset($_GET['type_version'])) && (isset($_GET['id_version'])))
{
$_SESSION['Versions']['type_version'] = $_GET['type_version'];
$_SESSION['Versions']['version']['Cle_primaire'] = $_GET['id_version'];
if ($types_version[$_SESSION['Versions']['type_version']][3] == "package") // Pour la version principale, on n'a pas besoin de vérifier si elle est utilisée par une sous-version...
{
$_SESSION['Versions']['page'] = "Confirmation_suppression_version";
}
else
{
// Recherche des versions de ShipHeart qui utiliseraient cette sous-version :
$nb_versions = 0;
$requete = 'SELECT * FROM TB_Versions WHERE Validite=1 AND '.$types_version[$_SESSION['Versions']['type_version']][4].'='.$_SESSION['Versions']['version']['Cle_primaire'].' ';
$flag_redirection = true;
// echo 'Requête = '.$requete.'<br />';
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$versions[$nb_versions ++] = $donnees;
}
Liberation_jeu_de_resultat_bdd($reponse);
if ($nb_versions == 0) $_SESSION['Versions']['page'] = "Confirmation_suppression_version"; // Si aucune version de ShipHeart ne l'utilise, on passe à l'étape de confitmation finale.
else // Sinon, on indique une erreur et on affiche les versions l'utilisant (limitée à N lignes...)
{
$flag_redirection = true; // Evite que le message d'erreur soit supprimé par la redirection de purge d'URL
$message_erreur = "Vous ne pouvez pas supprimer cette version qui est utilisée dans les versions de ShipHeart suivantes :";
for ($i = 0; $i < $nb_versions; $i ++)
{
if ($i < 10) $message_erreur .= "<br />".$versions[$i]['Nom']." <br />";
else
{
$message_erreur .= "<br />[...]";
break;
}
}
}
}
}
break;
}
//===================================
case "confirmation_suppression_version":
{
if ((isset($_GET['type_version'])) && (isset($_GET['id_version'])))
{
$_SESSION['Versions']['type_version'] = $_GET['type_version'];
$_SESSION['Versions']['version']['Cle_primaire'] = $_GET['id_version'];
// Suppression de la version (ou du package) :
// $requete = 'UPDATE '.$types_version[$_SESSION['Versions']['type_version']][1].' SET Validite=0 WHERE Cle_primaire=?';
$requete = 'DELETE FROM '.$types_version[$_SESSION['Versions']['type_version']][1].' WHERE Cle_primaire=?';
Requete_preparee_bdd($requete,
array(
array('s', $_SESSION['Versions']['version']['Cle_primaire'])),
__FILE__, __LINE__);
$flag_redirection = true; // Evite que le message d'erreur soit supprimé par la redirection de purge d'URL
if ($types_version[$_SESSION['Versions']['type_version']][3] != "package")
{
if ($types_version[$_SESSION['Versions']['type_version']][2] == "Fichier")
{
// Détermination du nom complet du fichier :
$dossier = REPERTOIRE_VERSIONS_SHIPHEART.$types_version[$_SESSION['Versions']['type_version']][5]; // Dossier de stockage des fichiers
$fichier = $dossier.'/'.$_SESSION['Versions']['version']['Fichier'];
// Suppression du fichier sur le serveur :
if (unlink($fichier)) $message_information = "La version ".$_SESSION['Versions']['version']['Fichier']." a été supprimée de la base de données et le fichier correspondant a été supprimé du serveur.";
else $message_erreur = "La version ".$_SESSION['Versions']['version']['Fichier']." a bien été supprimée de la base de données mais <span class=\"souligne\">le fichier correspondant n'a pas pu être supprimé du serveur</span>.";
}
// RAZ des variables de session de la version qui vient d'être supprimée :
$_SESSION['Versions']['version']['Cle_primaire'] = 0;
$_SESSION['Versions']['version']['Fichier'] = "";
$_SESSION['Versions']['version']['Description'] = "";
}
else $message_information = "Le package ".$_SESSION['Versions']['version']['Nom']." a été supprimée de la base de données.";
$_SESSION['Versions']['page'] = "Liste_versions";
}
break;
}
//===================================
case "demande_generation_archive":
{
if ((isset($_GET['type_version'])) && (isset($_GET['id_version'])))
{
$_SESSION['Versions']['type_version'] = $_GET['type_version'];
$_SESSION['Versions']['version']['Cle_primaire'] = $_GET['id_version'];
$_SESSION['Versions']['page'] = "Generation_archive";
}
break;
}
}
if (!$flag_redirection) header('Location:versions.php'.$_SESSION['Versions']['ancre'].'');
}
// Variables POST :
//---------------------------------------------------------------------------
// Création Package :
if ( (isset($_POST['validation_creation_package']) OR
isset($_POST['validation_modification_package'])) AND
isset($_POST['Nom']) AND
isset($_POST['ID_Version_appli']) AND
isset($_POST['ID_Version_qt']) AND
isset($_POST['ID_Version_api']) AND
isset($_POST['ID_Version_compagnon_v1']) AND
isset($_POST['ID_Version_compagnon_v2']) AND
isset($_POST['ID_Version_sp812']) AND
isset($_POST['ID_Version_sp4ac']) AND
isset($_POST['ID_Version_sp8dc']) AND
isset($_POST['ID_Version_sbs']) AND
isset($_POST['ID_Version_sql']) AND
isset($_POST['ID_Version_www']) AND
isset($_POST['ID_Version_updater']) AND
isset($_POST['Description_interne']) AND
isset($_POST['Description_externe']))
{
// Mémorisation des valeurs saisies pour éviter de les perdre en cas d'erreur rendant la création impossible :
$_SESSION['Versions']['version']['Nom'] = trim($_POST['Nom']);
$_SESSION['Versions']['version']['Date'] = trim($_POST['Date']);
$_SESSION['Versions']['version']['ID_Version_appli'] = trim($_POST['ID_Version_appli']);
$_SESSION['Versions']['version']['ID_Version_qt'] = trim($_POST['ID_Version_qt']);
$_SESSION['Versions']['version']['ID_Version_api'] = trim($_POST['ID_Version_api']);
$_SESSION['Versions']['version']['ID_Version_compagnon_v1'] = trim($_POST['ID_Version_compagnon_v1']);
$_SESSION['Versions']['version']['ID_Version_compagnon_v2'] = trim($_POST['ID_Version_compagnon_v2']);
$_SESSION['Versions']['version']['ID_Version_sp812'] = trim($_POST['ID_Version_sp812']);
$_SESSION['Versions']['version']['ID_Version_sp4ac'] = trim($_POST['ID_Version_sp4ac']);
$_SESSION['Versions']['version']['ID_Version_sp8dc'] = trim($_POST['ID_Version_sp8dc']);
$_SESSION['Versions']['version']['ID_Version_sbs'] = trim($_POST['ID_Version_sbs']);
$_SESSION['Versions']['version']['ID_Version_sql'] = $_POST['ID_Version_sql'];
$_SESSION['Versions']['version']['ID_Version_www'] = $_POST['ID_Version_www'];
$_SESSION['Versions']['version']['ID_Version_updater'] = trim($_POST['ID_Version_updater']);
$_SESSION['Versions']['version']['Description_interne'] = trim($_POST['Description_interne']);
$_SESSION['Versions']['version']['Description_externe'] = trim($_POST['Description_externe']);
// Vérifications :
// Vérification que le nom n'est pas vide :
if ($_SESSION['Versions']['version']['Nom'] == "") $message_erreur .= "Le nom du package ne peut pas être vide...";
// Si les contrôles ne sont pas invalides, on créé le nouveau package :
if ($message_erreur == "")
{
if (isset($_POST['validation_creation_package']))
{
// Recherche des versions de ShipHeart qui auraient le même nom :
$nb_versions = 0;
$requete = 'SELECT * FROM TB_Versions WHERE Validite=1 AND Nom=? ';
$reponse = Requete_preparee_bdd($requete,
array(
array('s', $_SESSION['Versions']['version']['Nom'])),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$nb_versions ++;
}
Liberation_jeu_de_resultat_bdd($reponse);
if ($nb_versions > 0) $message_erreur .= "Le nom du package [".$_SESSION['Versions']['version']['Nom']."] est déjà utilisé. Vous ne pouvez pas l'utiliser à nouveau...";
if ($message_erreur == "")
{
// Création de la version :
$requete = 'INSERT INTO TB_Versions (Nom, Date, ID_Version_appli, ID_Version_qt, ID_Version_api, ID_Version_compagnon_v1, ID_Version_compagnon_v2, ID_Version_sp812, ID_Version_sp4ac, ID_Version_sp8dc, ID_Version_sbs, ID_Version_sql, ID_Version_www, ID_Version_updater, Description_interne, Description_externe) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
Requete_preparee_bdd($requete,
array(
array('s', $_SESSION['Versions']['version']['Nom']),
array('s', $_SESSION['Versions']['version']['Date']),
array('i', $_SESSION['Versions']['version']['ID_Version_appli']),
array('i', $_SESSION['Versions']['version']['ID_Version_qt']),
array('i', $_SESSION['Versions']['version']['ID_Version_api']),
array('i', $_SESSION['Versions']['version']['ID_Version_compagnon_v1']),
array('i', $_SESSION['Versions']['version']['ID_Version_compagnon_v2']),
array('i', $_SESSION['Versions']['version']['ID_Version_sp812']),
array('i', $_SESSION['Versions']['version']['ID_Version_sp4ac']),
array('i', $_SESSION['Versions']['version']['ID_Version_sp8dc']),
array('i', $_SESSION['Versions']['version']['ID_Version_sbs']),
array('i', $_SESSION['Versions']['version']['ID_Version_sql']),
array('i', $_SESSION['Versions']['version']['ID_Version_www']),
array('i', $_SESSION['Versions']['version']['ID_Version_updater']),
array('s', $_SESSION['Versions']['version']['Description_interne']),
array('s', $_SESSION['Versions']['version']['Description_externe'])),
__FILE__, __LINE__);
// Récup de la clé primaire de l'enregistrement créé :
$_SESSION['Versions']['version']['Cle_primaire'] = Recuperation_id_cree_bdd();
// Message d'information :
$message_information = "La version ".$_SESSION['Versions']['version']['Nom']." vient d'être créée";
}
}
else if (isset($_POST['validation_modification_package']))
{
// Mise à jour de la version :
$requete = 'UPDATE TB_Versions SET Nom=?, Date=?, ID_Version_appli=?, ID_Version_qt=?, ID_Version_api=?, ID_Version_compagnon_v1=?, ID_Version_compagnon_v2=?, ID_Version_sp812=?, ID_Version_sp4ac=?, ID_Version_sp8dc=?, ID_Version_sbs=?, ID_Version_sql=?, ID_Version_www=?, ID_Version_updater=?, Description_interne=?, Description_externe=? WHERE Cle_primaire=?';
Requete_preparee_bdd($requete,
array(
array('s', $_SESSION['Versions']['version']['Nom']),
array('s', $_SESSION['Versions']['version']['Date']),
array('i', $_SESSION['Versions']['version']['ID_Version_appli']),
array('i', $_SESSION['Versions']['version']['ID_Version_qt']),
array('i', $_SESSION['Versions']['version']['ID_Version_api']),
array('i', $_SESSION['Versions']['version']['ID_Version_compagnon_v1']),
array('i', $_SESSION['Versions']['version']['ID_Version_compagnon_v2']),
array('i', $_SESSION['Versions']['version']['ID_Version_sp812']),
array('i', $_SESSION['Versions']['version']['ID_Version_sp4ac']),
array('i', $_SESSION['Versions']['version']['ID_Version_sp8dc']),
array('i', $_SESSION['Versions']['version']['ID_Version_sbs']),
array('i', $_SESSION['Versions']['version']['ID_Version_sql']),
array('i', $_SESSION['Versions']['version']['ID_Version_www']),
array('i', $_SESSION['Versions']['version']['ID_Version_updater']),
array('s', $_SESSION['Versions']['version']['Description_interne']),
array('s', $_SESSION['Versions']['version']['Description_externe']),
array('s', $_SESSION['Versions']['version']['Cle_primaire'])),
__FILE__, __LINE__);
// Message d'information :
$message_information = "La version ".$_SESSION['Versions']['version']['Nom']." vient d'être modifiée";
}
$_SESSION['Versions']['page'] = "Liste_versions";
}
}
//---------------------------------------------------------------------------
// Création Version :
if ((isset($_POST['validation_creation_version']) OR
isset($_POST['validation_modification_version'])) AND
isset($_POST['Description']))
{
// Mémorisation des valeurs saisies pour éviter de les perdre en cas d'erreur rendant la création impossible :
$_SESSION['Versions']['version']['Description'] = trim($_POST['Description']);
if (isset($_POST['Repertoire'])) $_SESSION['Versions']['version']['Repertoire'] = trim($_POST['Repertoire']);
if (isset($_POST['validation_creation_version']))
{
do // Dummy loop pour gérer les sorties sur erreur...
{
if($types_version[$_SESSION['Versions']['type_version']][2] == "Fichier")
{
// Traitement des erreurs HTML :
if ($_FILES['new_file']['error'])
{
switch ($_FILES['new_file']['error'])
{
case 1: // UPLOAD_ERR_INI_SIZE (limite de PHP.INI)
{
$message_erreur = 'La taille du fichier est trop importante (taille maxi = '.number_format(MAX_TAILLE_FICHIER_VERSION, 0, ".", " ").' octets) [erreur #1]';
break;
}
case 2: // UPLOAD_ERR_FORM_SIZE (limite du formulaire HTML)
{
$message_erreur = 'La taille du fichier est trop importante (taille maxi = '.number_format(MAX_TAILLE_FICHIER_VERSION, 0, ".", " ").' octets) [erreur #2]';
break;
}
case 3: // UPLOAD_ERR_PARTIAL (interruption pendant le téléchargement)
{
$message_erreur = "Le téléchargement du fichier a été interrompu pendant le transfert... [erreur #3]";
break;
}
case 4: // UPLOAD_ERR_NO_FILE (tentative de téléchargement d'un fichier vide)
{
$message_erreur = "Le fichier que vous avez essayé de télécharger a une taille nulle... [erreur #4]";
break;
}
}
break;
}
if ($message_erreur != "") break; // Sortie de la dummy loop
/* // Vérifications de l'extension du fichier :
$extension = strrchr($_FILES['new_file']['name'], '.'); // Extension du fichier téléchargé
switch ($extension)
{
case ".pdf":
case ".PDF":
{
$extension = ".pdf";
break;
}
default :
{
$message_erreur = 'Vous ne pouvez télécharger une photo qu\'au format PDF (donc avec une extension \'.pdf\' ou \'.PDF\') [erreur #5]';
break;
}
}
if ($message_erreur != "") break; // Sortie de la dummy loop
*/
// Répertoire de stockage de la version :
$dossier = REPERTOIRE_VERSIONS_SHIPHEART.$types_version[$_SESSION['Versions']['type_version']][5]; // Dossier de stockage des fichiers
if (!file_exists($dossier) OR !is_dir($dossier)) mkdir($dossier); // On vérifie d'abord que le répertoire existe. Sinon on le créé
// Création du nom de fichier complet :
$_SESSION['Versions']['version']['Fichier'] = $_FILES['new_file']['name'];
$destination = $dossier.'/'.$_SESSION['Versions']['version']['Fichier'];
// Stockage du fichier :
if(!move_uploaded_file($_FILES['new_file']['tmp_name'], $destination))
{
$message_erreur = 'Erreur de téléchargement... [erreur #7]';
break; // Sortie de la dummy loop
}
}
else // Cas d'un répertoire :
{
}
// Création de la version :
$requete = 'INSERT INTO '.$types_version[$_SESSION['Versions']['type_version']][1].' ('.$types_version[$_SESSION['Versions']['type_version']][2].', Description) VALUES (?, ?)';
Requete_preparee_bdd($requete,
array(
array('s', $_SESSION['Versions']['version'][''.$types_version[$_SESSION['Versions']['type_version']][2].'']),
array('s', $_SESSION['Versions']['version']['Description'])),
__FILE__, __LINE__);
// Récup de la clé primaire de l'enregistrement créé :
$_SESSION['Versions']['version']['Cle_primaire'] = Recuperation_id_cree_bdd();
// Message d'information :
$message_information = "La version ".$_SESSION['Versions']['version']['Fichier']." vient d'être créée";
// Retour à la liste si la création s'est bien passée :
$_SESSION['Versions']['page'] = "Liste_versions";
} while (0);
}
else if (isset($_POST['validation_modification_version']))
{
// Mise à jour de la version :
$requete = 'UPDATE '.$types_version[$_SESSION['Versions']['type_version']][1].' SET '.$types_version[$_SESSION['Versions']['type_version']][2].'=?, Description=? WHERE Cle_primaire=?';
Requete_preparee_bdd($requete,
array(
array('s', $_SESSION['Versions']['version'][''.$types_version[$_SESSION['Versions']['type_version']][2].'']),
array('s', $_SESSION['Versions']['version']['Description']),
array('i', $_SESSION['Versions']['version']['Cle_primaire'])),
__FILE__, __LINE__);
// Message d'information :
$message_information = "La version ".$_SESSION['Versions']['version'][''.$types_version[$_SESSION['Versions']['type_version']][2].'']." vient d'être modifiée";
// Retour à la liste si la modification s'est bien passée :
$_SESSION['Versions']['page'] = "Liste_versions";
}
}
//---------------------------------------------------------------------------
// Génération archive :
if (isset($_POST['validation_generation_archive']))
{
do // Fake loop
{
if ($types_version[$_SESSION['Versions']['type_version']][3] != "package") break; // On ne traite une telle demande que s'il s'agit bien d'un package....
//--------------------------------------------------------------------------------------------------
// Vidage du répertoire temporaire :
//--------------------------------------------------------------------------------------------------
$repertoire_temp = REPERTOIRE_VERSIONS_SHIPHEART.$types_version[$_SESSION['Versions']['type_version']][5].'/temp';
// Sécurité en dur pour s'assurer qu'on ne pointe pas sur un autre répertoire qu'on va supprimer :
if (strpos($repertoire_temp, "/home/koriolan/versions/shipheart/packages/temp") === false)
{
$message_erreur .= "L'adresse du répertoire TEMP a été modifiée (répertoire = ".$repertoire_temp.").<br />Afin d'éviter toute catastrophe (ce répertoire et ses sous-répertoires vont être supprimés !), merci de mettre à jour ce test de vérification...<br />";
break;
}
// Suppression du répertoire (permet de le vider simplement, yc ses sous-répertoires) :
// ATTENTION : la commande est récursive. Il ne faut PAS se tromper de répertoire !!!!
if (file_exists($repertoire_temp) AND is_dir($repertoire_temp))
{
// Vidage mas pas suppression (l'intérêt de cette commande vs 'rm -r' est qu'il ne déclenche pas d'erreur si le répertoire est vide...) :
// NB : le répertoire n'est PAS supprimé par cette commande (juste vidé)
exec("find ".$repertoire_temp."/* -delete");
}
if (!file_exists($repertoire_temp) OR !is_dir($repertoire_temp)) mkdir($repertoire_temp); // Si le répertoire n'existe pas, on le créé.
if (count(glob($repertoire_temp."/*")) != 0) // Compte le nb de fichiers...
{
$message_erreur .= "La préparation du répertoire de nouvelle version [".$repertoire_temp."] a échoué. La génération de l'archive est abandonnée...<br />";
break;
}
//--------------------------------------------------------------------------------------------------
// Recherche des infos sur le package :
//--------------------------------------------------------------------------------------------------
$requete = 'SELECT * FROM '.$types_version[$_SESSION['Versions']['type_version']][1].' WHERE Cle_primaire="'.$_SESSION['Versions']['version']['Cle_primaire'].'" ';
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$_SESSION['Versions']['version'] = $donnees;
}
Liberation_jeu_de_resultat_bdd($reponse);
//--------------------------------------------------------------------------------------------------
// Création du fichier JSON (début) :
//--------------------------------------------------------------------------------------------------
$donnees_json['NoVersion'] = $_SESSION['Versions']['version']['Nom'];
//--------------------------------------------------------------------------------------------------
// Copie des fichiers de sous-version vers le dossier 'temp' :
//--------------------------------------------------------------------------------------------------
for ($i = 0; (($i < $max_nb_types_version) && ($types_version[$i][0] != "")); $i ++)
{
if ($types_version[$i][4] == "") continue; // On ne traite pas le cas du PACKAGE qui n'a pas de fichier à récupérer....
// Recherche du nom de fichier ou de répertoire qui doit être inclus dans l'archive :
$nom = ""; // Par défaut (utile si un nouveau type de module a été créé mais n'existait pas sur cette version)
$requete = 'SELECT * FROM '.$types_version[$i][1].' WHERE Cle_primaire='.$_SESSION['Versions']['version'][''.$types_version[$i][4].''].' ';
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$nom = $donnees[''.$types_version[$i][2].''];
}
Liberation_jeu_de_resultat_bdd($reponse);
if ($nom == "") continue; // Si le type de module en cours n'existait pas pour cette version, on ne met rien dans le fichier JSON à ce sujet...
// Copie du fichier ou du répertoire dans le répertoire temporaire :
if ($types_version[$i][2] == "Fichier") // Cas d'un fichier simple :
{
$fichier_source = REPERTOIRE_VERSIONS_SHIPHEART.$types_version[$i][5].'/'.$nom;
$fichier_destination = $repertoire_temp.'/'.$nom;
if (!copy($fichier_source, $fichier_destination))
{
$message_erreur .= "La copie du fichier [".$fichier_source."] de son répertoire d'archive vers le répertoire temporaire a échoué. La génération de l'archive est abandonnée...<br />";
break;
}
// else $message_information .= "La copie du fichier [".$fichier_source."] de son répertoire d'archive vers le répertoire temporaire a été effectué avec succès. La génération de l'archive se poursuit.<br />";
}
else // Cas d'un répertoire :
{
$repertoire_source = REPERTOIRE_VERSIONS_SHIPHEART.$types_version[$i][5].'/'.$nom;
$repertoire_destination = $repertoire_temp.'/'.$nom;
if ((!file_exists($repertoire_source)) && (!is_dir($repertoire_source)))
{
$message_erreur .= "<br />/!\\<br />Le répertioire [".$repertoire_source."] n'existe pas ! <br />La génération est arrêtée...<br /><br />";
break;
}
if (copie_repertoire($repertoire_source, $repertoire_destination) == -1)
{
$message_erreur .= "<br />Erreur lors de la copîe du répertoire [".$repertoire_source."] vers le répertoire [".$repertoire_destination."]<br />La génération est arrêtée...<br /><br />";
break;
}
}
$donnees_json[''.$types_version[$i][0].''] = $nom; // Ajout du type de firmware/dossier + nom du firmware/dossier dans JSON
}
if ($message_erreur != "") break;
//--------------------------------------------------------------------------------------------------
// Copie du répertoire SYSTEME vers le dossier 'temp' :
//--------------------------------------------------------------------------------------------------
$repertoire_source = REPERTOIRE_VERSIONS_SHIPHEART."/ressources/systeme";
$repertoire_destination = $repertoire_temp.'/systeme';
if (copie_repertoire($repertoire_source, $repertoire_destination) == -1)
{
$message_erreur .= "<br />Erreur lors de la copîe du répertoire [".$repertoire_source."] vers le répertoire [".$repertoire_destination."]<br />La génération est arrêtée...<br /><br />";
break;
}
//--------------------------------------------------------------------------------------------------
// Copie du répertoire UTILS vers le dossier 'temp' :
//--------------------------------------------------------------------------------------------------
$repertoire_source = REPERTOIRE_VERSIONS_SHIPHEART."/ressources/utils";
$repertoire_destination = $repertoire_temp.'/utils';
if (copie_repertoire($repertoire_source, $repertoire_destination) == -1)
{
$message_erreur .= "<br />Erreur lors de la copîe du répertoire [".$repertoire_source."] vers le répertoire [".$repertoire_destination."]<br />La génération est arrêtée...<br /><br />";
break;
}
//--------------------------------------------------------------------------------------------------
// Copie du répertoire CONFIG vers le dossier 'temp' :
//--------------------------------------------------------------------------------------------------
$repertoire_source = REPERTOIRE_VERSIONS_SHIPHEART."/ressources/config";
$repertoire_destination = $repertoire_temp.'/config';
if (copie_repertoire($repertoire_source, $repertoire_destination) == -1)
{
$message_erreur .= "<br />Erreur lors de la copîe du répertoire [".$repertoire_source."] vers le répertoire [".$repertoire_destination."]<br />La génération est arrêtée...<br /><br />";
break;
}
//--------------------------------------------------------------------------------------------------
// Création du fichier JSON (fin):
//--------------------------------------------------------------------------------------------------
$type = "update";
$chaines_a_echapper = array("\"", "\r", "\n"); // Utiliser pour ne pas véroler le fichier JSON dans la partie Description. Mettre ici les chaines interdites....
$chaines_echappement = array("\\\"", " ", ""); // ... et ici leur remplaçante.
$donnees_json['Repertoire_data'] = ""; // Vide dans le cas d'un NEW ou d'un UPDATE (utilisé plus tard dans le cas d'un RESTORE)
$donnees_json['SQL_data'] = ""; // Vide dans le cas d'un NEW ou d'un UPDATE (utilisé plus tard dans le cas d'un RESTORE)
$donnees_json['Type'] = $type;
$donnees_json['Description'] = str_replace($chaines_a_echapper, $chaines_echappement, $_SESSION['Versions']['version']['Description_externe']);
// Génération du nom de fichier JSON de la forme 'v_1_2_14_update.json' où le dernier groupe représente le type de mise à jour ('new' ou 'update' - 'restore' ne peut pas être généré ici) :
$base_nom_archive = 'v_'.str_replace(".", "_", $_SESSION['Versions']['version']['Nom']);
$nom_fichier_json = $base_nom_archive.'_'.$type.'.json';
file_put_contents($repertoire_temp.'/'.$nom_fichier_json, json_encode($donnees_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); // Le 'file_put_contents' crée le fichier
//--------------------------------------------------------------------------------------------------
// Déplacement vers le répertoire temporaire :
// NB : le déplacement sur le répertoire est impératif. Si on utilise les chemins absolu, cela fonctionne... MAIS
// l'archive contient les chemins absolu de chaque fichier. Le décodage n'est ensuite plus possible !
//--------------------------------------------------------------------------------------------------
if (!chdir($repertoire_temp))
{
$message_erreur .= "Le déplacement vers [".$repertoire_temp."] n'a pas été possible. La génération de l'archive est abandonnée...<br />";
break;
}
/* ANCIENNE VERSION : Début (< V4)
//--------------------------------------------------------------------------------------------------
// Création du fichier archive UPDATE TAR.GZ :
//--------------------------------------------------------------------------------------------------
$output = null;
$retval = null;
$nom_fichier_tar_gz = 'ShipHeart_'.$base_nom_archive.'_'.$type.'.tar.gz';
$cde = "tar -cvzf ".$nom_fichier_tar_gz." *"; // NB : ne PAS utiliser SUDO qui n'est pas autorisé sur le serveur OVH...
// echo 'Commande = ['.$cde.']<br />';
exec($cde, $output, $retval);
if ($retval != 0)
{
$message_erreur .= "La génération du fichier [".$nom_fichier_tar_gz."] a échoué. La génération de l'archive est abandonnée...<br />";
break;
}
//--------------------------------------------------------------------------------------------------
// Création du fichier encodé UPDATE TAR.GZ.ENC :
//--------------------------------------------------------------------------------------------------
$output = null;
$retval = null;
$nom_fichier_tar_gz_enc = $nom_fichier_tar_gz.".enc";
$cde = "openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -md sha256 -in ".$nom_fichier_tar_gz." -out ".$nom_fichier_tar_gz_enc." -pass pass:".BDD_BATEAU_PASSWORD." ";
// echo 'Commande = ['.$cde.']<br />';
exec($cde, $output, $retval); // NB : ne PAS utiliser SUDO qui n'est pas autorisé sur le serveur OVH...
if ($retval != 0)
{
$message_erreur .= "L'encryptage du fichier [".$nom_fichier_tar_gz_enc."] a échoué. La génération de l'archive est abandonnée...<br />";
break;
}
// Suppression du fichier TAR.GZ qui, sinon, reste là :
exec("rm ".$nom_fichier_tar_gz); // NB : ne PAS utiliser SUDO qui n'est pas autorisé sur le serveur OVH...
ANCIENNE VERSION : Fin */
//--------------------------------------------------------------------------------------------------
// Création du fichier archive TAR.GZ.ENC :
//--------------------------------------------------------------------------------------------------
$nom_fichier = "ShipHeart_".$base_nom_archive.'_'.$type;
$nom_fichier_tar_gz_enc = $nom_fichier.".tar.gz.enc";
if (creer_archive_chiffree($repertoire_temp, $nom_fichier) != 0)
{
$message_erreur .= "\t/!\\ L'encryptage du fichier [".$nom_fichier."] a échoué. La génération de l'archive est abandonnée...\n";
break;
}
//--------------------------------------------------------------------------------------------------
// Création du répertoire d'archive de la version :
//--------------------------------------------------------------------------------------------------
$repertoire_archive_version = REPERTOIRE_VERSIONS_SHIPHEART.$types_version[$_SESSION['Versions']['type_version']][5].'/v_'.str_replace(".", "_", $_SESSION['Versions']['version']['Nom']);
if (!file_exists($repertoire_archive_version) OR !is_dir($repertoire_archive_version)) mkdir($repertoire_archive_version); // On vérifie d'abord que le répertoire existe. Sinon on le créé
$repertoire_archive_version_ressources = $repertoire_archive_version."/ressources";
if (!file_exists($repertoire_archive_version_ressources) OR !is_dir($repertoire_archive_version_ressources)) mkdir($repertoire_archive_version_ressources); // On vérifie d'abord que le répertoire existe. Sinon on le créé
//--------------------------------------------------------------------------------------------------
// Copie du fichier archive UPDATE dans le répertoire de sa version :
//--------------------------------------------------------------------------------------------------
if (!rename($repertoire_temp."/".$nom_fichier_tar_gz_enc, $repertoire_archive_version.'/'.$nom_fichier_tar_gz_enc))
{
$message_erreur .= "\t/!\\ Le déplacement du fichier [".$nom_fichier_tar_gz_enc."] du répertoire temporaire vers le répertoire de version a échoué. La génération de l'archive est abandonnée...\n";
break;
}
//--------------------------------------------------------------------------------------------------
// Relecture du fichier JSON et transformation en version 'new' :
//--------------------------------------------------------------------------------------------------
// Lecture du contenu du fichier JSON puis archivage du fichier :
$contenu = file_get_contents($repertoire_temp.'/'.$base_nom_archive.'_'.$type.'.json'); // Lecture du fichier
$donnees_json = json_decode($contenu, true); // Décodage du fichier JSON (true = tableau associatif)
rename($repertoire_temp.'/'.$base_nom_archive.'_'.$type.'.json', $repertoire_archive_version_ressources.'/'.$base_nom_archive.'_'.$type.'.json'); // Déplacement du JSON d'origine dans le répertoire Ressources
$type = "new";
// Création du nouveau fichier JSON (nouveau nom et contenu mis à jour) :
$nom_fichier_json = $base_nom_archive.'_'.$type.'.json';
$donnees_json['Type'] = $type; //Mise à jour (ou ajout si inexistant) du champ Type
file_put_contents($repertoire_temp.'/'.$nom_fichier_json, json_encode($donnees_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); // Le 'file_put_contents' crée le fichier
/* ANCIENNE VERSION : Début (< V4)
//--------------------------------------------------------------------------------------------------
// Création du fichier archive NEW TAR.GZ :
//--------------------------------------------------------------------------------------------------
$output = null;
$retval = null;
$nom_fichier_tar_gz = "ShipHeart_".$base_nom_archive.'_'.$type.".tar.gz";
$cde = "tar -cvzf ".$nom_fichier_tar_gz." *"; // NB : ne PAS utiliser SUDO qui n'est pas autorisé sur le serveur OVH...
// echo 'Commande = ['.$cde.']<br />';
exec($cde, $output, $retval);
if ($retval != 0)
{
$message_erreur .= "La génération du fichier [".$nom_fichier_tar_gz."] a échoué. La génération de l'archive est abandonnée...<br />";
break;
}
//--------------------------------------------------------------------------------------------------
// Création du fichier encodé NEW TAR.GZ.ENC :
//--------------------------------------------------------------------------------------------------
$output = null;
$retval = null;
$nom_fichier_tar_gz_enc = $nom_fichier_tar_gz.".enc";
$cde = "openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -md sha256 -in ".$nom_fichier_tar_gz." -out ".$nom_fichier_tar_gz_enc." -pass pass:".BDD_BATEAU_PASSWORD." ";
// echo 'Commande = ['.$cde.']<br />';
exec($cde, $output, $retval); // NB : ne PAS utiliser SUDO qui n'est pas autorisé sur le serveur OVH...
if ($retval != 0)
{
$message_erreur .= "L'encryptage du fichier [".$nom_fichier_tar_gz_enc."] a échoué. La génération de l'archive est abandonnée...<br />";
break;
}
// Suppression du fichier TAR.GZ qui, sinon, reste là :
exec("rm ".$nom_fichier_tar_gz); // NB : ne PAS utiliser SUDO qui n'est pas autorisé sur le serveur OVH...
ANCIENNE VERSION : Fin */
//--------------------------------------------------------------------------------------------------
// Création du fichier archive TAR.GZ.ENC :
//--------------------------------------------------------------------------------------------------
$nom_fichier = "ShipHeart_".$base_nom_archive.'_'.$type;
$nom_fichier_tar_gz_enc = $nom_fichier.".tar.gz.enc";
if (creer_archive_chiffree($repertoire_temp, $nom_fichier) != 0)
{
$message_erreur .= "\t/!\\ L'encryptage du fichier [".$nom_fichier."] a échoué. La génération de l'archive est abandonnée...\n";
break;
}
//--------------------------------------------------------------------------------------------------
// Copie du fichier archive NEW dans le répertoire de sa version :
//--------------------------------------------------------------------------------------------------
if (!rename($repertoire_temp."/".$nom_fichier_tar_gz_enc, $repertoire_archive_version.'/'.$nom_fichier_tar_gz_enc))
{
$message_erreur .= "\t/!\\ Le déplacement du fichier [".$nom_fichier_tar_gz_enc."] du répertoire temporaire vers le répertoire de version a échoué. La génération de l'archive est abandonnée...\n";
break;
}
$message_information .= "Les fichiers archives [".$base_nom_archive."] viennent d'être créés dans le répertoire [".$repertoire_archive_version."]";
//--------------------------------------------------------------------------------------------------
// Copie de tous les fichiers utilisés dans le sous-répertoire Ressources du répertoire de version :
// NB : seul le fichier JSON de en version 'update' y est déjà (on va ici déplacer celui de la version 'new')
// NB 2 : les fichiers encryptés ne sont pas stockés dans Ressources mais à la racine du répertoire
//--------------------------------------------------------------------------------------------------
copie_repertoire($repertoire_temp , $repertoire_archive_version_ressources);
//--------------------------------------------------------------------------------------------------
// Suppression du répeertoire temporaire :
// Nb : on ne teste pas le résultat car pas de soucis en cas d'erreur...
//--------------------------------------------------------------------------------------------------
exec("find ".$repertoire_temp."/* -delete"); // NB : ne PAS utiliser SUDO qui n'est pas autorisé sur le serveur OVH...
rmdir($repertoire_temp);
//--------------------------------------------------------------------------------------------------
// RAZ des paramètres :
//--------------------------------------------------------------------------------------------------
$_SESSION['Versions']['page'] = "Modification_version";
} while (0);
$flag_redirection = true; // Evite que le message d'erreur soit supprimé par la redirection de purge d'URL
}
//************************************************************************************************************************************
// Traitement des données
//************************************************************************************************************************************
// Protection contre les accès directs :
if ((!$_SESSION['acces_valide']) OR ($_SESSION['shipmember']['Niveau_acces'] < NIVEAU_ACCES_MINI_ADMINISTRATEUR)) header('Location:shipmembers.php?action=navigation&destination=Login');
switch ($_SESSION['Versions']['page'])
{
//****************************************************************************************************************************
case "Accueil":
{
// Récupération des informations sur les versions :
/* $nb_versions = 0;
$requete = 'SELECT * FROM TB_Versions WHERE Validite=1 ORDER BY Nom DESC';
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$versions[$nb_versions ++] = $donnees;
}
Liberation_jeu_de_resultat_bdd($reponse);
*/
break;
}
//****************************************************************************************************************************
case "Liste_versions":
{
// Récupération des informations sur les versions :
$nb_versions = 0;
switch($types_version[$_SESSION['Versions']['type_version']][3])
{
//---------------------------------------------------------------------------
case "package" : // Uniquement pour les versions principales :
{
$tri = 'INET_ATON('.$types_version[$_SESSION['Versions']['type_version']][2].') DESC';
break;
}
//---------------------------------------------------------------------------
default : // Pour toutes les versions secondaires :
{
$tri = ' '.$types_version[$_SESSION['Versions']['type_version']][2].' DESC';
break;
}
}
$requete = 'SELECT * FROM '.$types_version[$_SESSION['Versions']['type_version']][1].' WHERE Validite=1 ORDER BY '.$tri.' ';
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$versions[$nb_versions ++] = $donnees;
}
Liberation_jeu_de_resultat_bdd($reponse);
break;
}
//****************************************************************************************************************************
case "Liste_evolutions":
{
// Récupération des informations sur les versions :
$nb_versions = 0;
$requete = 'SELECT Cle_primaire, Nom, Date, Description_externe FROM TB_Versions WHERE Validite=1 ORDER BY INET_ATON(Nom) DESC';
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$versions[$nb_versions] = $donnees;
if ($versions[$nb_versions]['Description_externe'] == "") $versions[$nb_versions]['Description_externe'] = "Pas de modification fonctionnelle significative";
$nb_versions ++;
}
Liberation_jeu_de_resultat_bdd($reponse);
break;
}
//****************************************************************************************************************************
case "Creation_version":
case "Modification_version":
{
if ($_SESSION['Versions']['page'] == "Creation_version")
{
switch($types_version[$_SESSION['Versions']['type_version']][3])
{
//---------------------------------------------------------------------------
case "package" : // Uniquement pour les versions principales :
{
$_SESSION['Versions']['version']['Cle_primaire'] = 0;
$_SESSION['Versions']['version']['Nom'] = "";
$_SESSION['Versions']['version']['Date'] = date("Y-m-d");
$_SESSION['Versions']['version']['ID_Version_appli'] = 0;
$_SESSION['Versions']['version']['ID_Version_qt'] = 0;
$_SESSION['Versions']['version']['ID_Version_api'] = 0;
$_SESSION['Versions']['version']['ID_Version_compagnon_v1'] = 0;
$_SESSION['Versions']['version']['ID_Version_compagnon_v2'] = 0;
$_SESSION['Versions']['version']['ID_Version_sp812'] = 0;
$_SESSION['Versions']['version']['ID_Version_sp4ac'] = 0;
$_SESSION['Versions']['version']['ID_Version_sp8dc'] = 0;
$_SESSION['Versions']['version']['ID_Version_sbs'] = 0;
$_SESSION['Versions']['version']['ID_Version_sql'] = 0;
$_SESSION['Versions']['version']['ID_Version_www'] = 0;
$_SESSION['Versions']['version']['ID_Version_updater'] = 0;
$_SESSION['Versions']['version']['Description_interne'] = "";
$_SESSION['Versions']['version']['Description_externe'] = "";
break;
}
//---------------------------------------------------------------------------
default : // Pour toutes les versions secondaires :
{
$_SESSION['Versions']['version']['Cle_primaire'] = 0;
$_SESSION['Versions']['version']['Fichier'] = "";
$_SESSION['Versions']['version']['Repertoire'] = "";
$_SESSION['Versions']['version']['Description'] = "";
if ($types_version[$_SESSION['Versions']['type_version']][2] == "Repertoire") $message_information .= "<br />/!\\<br />Pensez à copier le répertoire de la version créée sur le serveur, dans 'versions/shipheart/www' par exemple<br /><br />";
break;
}
}
}
else // Modification :
{
$requete = 'SELECT * FROM '.$types_version[$_SESSION['Versions']['type_version']][1].' WHERE Cle_primaire="'.$_SESSION['Versions']['version']['Cle_primaire'].'" ';
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$_SESSION['Versions']['version'] = $donnees;
}
Liberation_jeu_de_resultat_bdd($reponse);
}
switch($types_version[$_SESSION['Versions']['type_version']][3])
{
//---------------------------------------------------------------------------
case "package" : // Uniquement pour les versions principales :
{
$nb_versions_secondaires = 0;
for ($i = 0; (($i < $max_nb_types_version) && ($types_version[$i][0] != "")); $i ++)
{
$versions_secondaires[$nb_versions_secondaires]['nb_versions'] = 0;
$requete = 'SELECT * FROM '.$types_version[$i][1].' WHERE Validite=1 ORDER BY '.$types_version[$i][2].' DESC';
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$versions_secondaires[$nb_versions_secondaires][$versions_secondaires[$nb_versions_secondaires]['nb_versions'] ++]['version'] = $donnees;
}
Liberation_jeu_de_resultat_bdd($reponse);
// Ajout d'une valeur "Aucune" dans la liste des versions secondaire pour la cas où on affiche un package avec un type de version secondaire qui n'existait pas (ID = 0) :
// L'ajout à la fin permet de n'avoir ce choix qu'en tout dernier puisque le tri est DESC dans la requête (la valeur par défaut est la dernière version)
// On n'ajoute ce choix qu'en modification (en création, ça perturebe la valeur par défaut et on ne devrait pas en avoir besoin...).
if ($_SESSION['Versions']['page'] == "Modification_version")
{
$versions_secondaires[$nb_versions_secondaires][$versions_secondaires[$nb_versions_secondaires]['nb_versions']]['version']['Cle_primaire'] = 0;
$versions_secondaires[$nb_versions_secondaires][$versions_secondaires[$nb_versions_secondaires]['nb_versions']]['version'][''.$types_version[$i][2].''] = "--- Aucune ---";
$versions_secondaires[$nb_versions_secondaires]['nb_versions'] ++;
}
$nb_versions_secondaires ++;
}
break;
}
//---------------------------------------------------------------------------
default : // Pour toutes les versions secondaires :
{
break;
}
}
break;
}
//****************************************************************************************************************************
case "Confirmation_suppression_version":
{
break;
}
//****************************************************************************************************************************
case "Generation_archive":
{
break;
}
//****************************************************************************************************************************
default:
{
$_SESSION['Versions']['page'] = "Accueil";
break;
}
}
Fermeture_bdd(); // Déconnexion de MySQL
//************************************************************************************************************************************
// Affichage
//************************************************************************************************************************************
Entete_page_html();
//********************************************************************************************************************************
// Affichage principal :
echo '<div id="Versions">';
//=========================================================================================
// Entête :
Entete_page($message_erreur, $message_information);
switch ($_SESSION['Versions']['page'])
{
//************************************************************************************************************************
case "Accueil":
{
echo '<div id="accueil" class="page_principale">';
echo '<h1>Versions</h1>';
echo '<h2>Type de versions</h2>';
echo '<div class="choix_type_version">';
for ($i=0; ($i < $max_nb_types_version) && ($types_version[$i][0] != ""); $i ++)
{
switch($types_version[$i][3])
{
case "package" :
{
echo '<a class="package" title="" href="versions.php?action=affichage_liste_versions&type_version='.$i.'">Packages '.$types_version[$i][0].'</a>';
break;
}
default : // Pour toutes les versions secondaires :
{
echo '<a title="" href="versions.php?action=affichage_liste_versions&type_version='.$i.'">Versions de '.$types_version[$i][0].'</a>';
break;
}
}
}
echo '</div>';
echo '<div class="boutons_haut_bas_de_page">';
echo '<a title="" href="administration.php?action=navigation&destination=Accueil">Retour au menu Administration</a>';
echo '<a title="" href="versions.php?action=affichage_liste_evolutions">Liste des évolutions</a>';
echo '</div>';
echo '</div>';
break;
}
//************************************************************************************************************************
case "Liste_versions":
{
echo '<div id="liste_versions" class="page_principale">';
echo '<h1>Versions</h1>';
switch($types_version[$_SESSION['Versions']['type_version']][3])
{
//---------------------------------------------------------------------------
case "package" : // Uniquement pour les versions principales :
{
echo '<div class="boutons_haut_bas_de_page">';
echo '<a title="" href="versions.php?action=navigation&destination=Accueil">Retour aux types de versions</a>';
echo '<a title="" href="versions.php?action=creation_version&type_version='.$_SESSION['Versions']['type_version'].'">Créer un nouveau package</a>';
echo '</div>';
echo '<h2>Liste des packages <span class="gras">'.$types_version[$_SESSION['Versions']['type_version']][0].'</span></h2>';
echo '<table class="package">
<thead>
<tr>
<th>Nom</th>
<th>Date</th>
<th>Description interne</th>
</tr>
</thead>
<tbody>';
for ($i = 0; $i < $nb_versions; $i ++)
{
echo '<tr>
<td>
<a title="" href="versions.php?action=modification_version&type_version='.$_SESSION['Versions']['type_version'].'&id_version='.$versions[$i]['Cle_primaire'].'">
'.$versions[$i]['Nom'].'
</a>
</td>
<td>'.$versions[$i]['Date'].'</td>
<td>'.nl2br($versions[$i]['Description_interne']).'</td>
</tr>';
}
echo '</tbody>
</table>';
echo '<div class="boutons_haut_bas_de_page">';
echo '<a title="" href="versions.php?action=navigation&destination=Accueil">Retour aux types de versions</a>';
echo '<a title="" href="versions.php?action=creation_version&type_version='.$_SESSION['Versions']['type_version'].'">Créer un nouveau package</a>';
echo '</div>';
break;
}
//---------------------------------------------------------------------------
default : // Pour toutes les versions secondaires :
{
echo '<div class="boutons_haut_bas_de_page">';
echo '<a title="" href="versions.php?action=navigation&destination=Accueil">Retour aux types de versions</a>';
echo '<a title="" href="versions.php?action=creation_version&type_version='.$_SESSION['Versions']['type_version'].'">Créer une nouvelle version</a>';
echo '</div>';
echo '<h2>Liste des versions de <span class="gras">'.$types_version[$_SESSION['Versions']['type_version']][0].'</span></h2>';
echo '<table class="version">
<thead>
<tr>
<th>'.$types_version[$_SESSION['Versions']['type_version']][2].'</th>
<th>Description</th>
</tr>
</thead>
<tbody>';
for ($i = 0; $i < $nb_versions; $i ++)
{
$nom_champ = $types_version[$_SESSION['Versions']['type_version']][2];
echo '<tr>
<td>
<a title="" href="versions.php?action=modification_version&type_version='.$_SESSION['Versions']['type_version'].'&id_version='.$versions[$i]['Cle_primaire'].'">
'.$versions[$i][''.$nom_champ.''].'
</a>
</td>
<td>'.nl2br($versions[$i]['Description']).'</td>
</tr>';
}
echo '</tbody>
</table>';
echo '<div class="boutons_haut_bas_de_page">';
echo '<a title="" href="versions.php?action=navigation&destination=Accueil">Retour aux types de versions</a>';
echo '<a title="" href="versions.php?action=creation_version&type_version='.$_SESSION['Versions']['type_version'].'">Créer une nouvelle version</a>';
echo '</div>';
break;
}
}
echo '</div>';
break;
}
//************************************************************************************************************************
case "Liste_evolutions":
{
echo '<div id="liste_versions" class="page_principale">';
echo '<h1>Evolutions entre les versions</h1>';
echo '<div class="boutons_haut_bas_de_page">';
echo '<a title="" href="versions.php?action=navigation&destination=Accueil">Retour aux types de versions</a>';
echo '</div>';
echo '<table class="package">
<thead>
<tr>
<th>Nom</th>
<th>Date</th>
<th>Description publique</th>
</tr>
</thead>
<tbody>';
for ($i = 0; $i < $nb_versions; $i ++)
{
echo '<tr>
<td>
<a title="" href="versions.php?action=modification_version&type_version='.$_SESSION['Versions']['type_version'].'&id_version='.$versions[$i]['Cle_primaire'].'">
'.$versions[$i]['Nom'].'
</a>
</td>
<td>'.$versions[$i]['Date'].'</td>
<td>'.nl2br($versions[$i]['Description_externe']).'</td>
</tr>';
}
echo '</tbody>
</table>';
echo '<div class="boutons_haut_bas_de_page">';
echo '<a title="" href="versions.php?action=navigation&destination=Accueil">Retour aux types de versions</a>';
echo '</div>';
echo '</div>';
break;
}
//************************************************************************************************************************
case "Creation_version":
case "Modification_version":
{
echo '<div id="creation_version" class="page_principale">';
echo '<h1>Versions</h1>';
// echo '<form action="versions.php" method="post">';
echo '<form action="versions.php" method="post" enctype="multipart/form-data">';
switch($types_version[$_SESSION['Versions']['type_version']][3])
{
//---------------------------------------------------------------------------------------------------------
case "package" :
{
if ($_SESSION['Versions']['page'] == "Creation_version") echo '<h2>Nouvelle version de <span class="gras">'.$types_version[$_SESSION['Versions']['type_version']][0].'</span></h2>';
else echo '<h2>Modification de la version <span class="gras">'.$_SESSION['Versions']['version']['Nom'].'</span></h2>';
echo '<div class="champs">
<div class="champs_titre">
Nom de la version
</div>
<div class="champs_valeur">
<input name="Nom" placeholder="Par exemple : 1.4.1" value="'.$_SESSION['Versions']['version']['Nom'].'" >
</div>
</div>';
echo '<div class="champs">
<div class="champs_titre">
Date de la version
</div>
<div class="champs_valeur">
<input name="Date" placeholder="Format Y-m-d" value="'.$_SESSION['Versions']['version']['Date'].'" >
</div>
</div>';
for ($i = 0; $i < $nb_versions_secondaires; $i ++)
{
if ($types_version[$i][3] == "package") continue;
echo '<div class="champs">
<div class="champs_titre">
Version de '.$types_version[$i][0].'
</div>
<div class="champs_valeur">
<select name="'.$types_version[$i][4].'">';
for ($j=0; $j<$versions_secondaires[$i]['nb_versions']; $j++)
{
echo ' <option value="'.$versions_secondaires[$i][$j]['version']['Cle_primaire'].'" '; if ($versions_secondaires[$i][$j]['version']['Cle_primaire'] == $_SESSION['Versions']['version'][''.$types_version[$i][4].'']) echo 'selected'; echo '>';
echo $versions_secondaires[$i][$j]['version'][''.$types_version[$i][2].''];
// echo ' : [';
// echo $versions_secondaires[$i][$j]['version']['Description'];
// echo ']';
echo '</option>';
}
echo '</select>
</div>
</div>';
}
echo '<div class="champs">
<div class="champs_titre">
Description interne
</div>
<div class="champs_valeur">
<textarea cols="" rows="" name="Description_interne" placeholder="Entrer les principales informations destinées uniquement aux équipes Koriolan" autocomplete="off">'.$_SESSION['Versions']['version']['Description_interne'].'</textarea>
</div>
</div>';
echo '<div class="champs">
<div class="champs_titre">
Description publique
</div>
<div class="champs_valeur">
<textarea cols="" rows="" name="Description_externe" placeholder="Entrer les principales informations destinées aux utilisateurs" autocomplete="off">'.$_SESSION['Versions']['version']['Description_externe'].'</textarea>
</div>
</div>';
echo '<div class="boutons_haut_bas_de_page">';
if ($_SESSION['Versions']['page'] == "Creation_version") /// Création :
{
echo '<a title="" href="versions.php?action=affichage_liste_versions&type_version='.$_SESSION['Versions']['type_version'].'">Annuler</a>';
echo '<button type="submit" name="validation_creation_package" title="Valider la création de la version">Créer le package</button>';
}
else // Modification :
{
echo '<a title="" href="versions.php?action=affichage_liste_versions&type_version='.$_SESSION['Versions']['type_version'].'">Retour à la liste des packages</a>';
echo '<button type="submit" name="validation_modification_package" title="Valider les modification de la version">Enregistrer les modifications</button>';
echo '<a title="" href="versions.php?action=demande_suppression_version&type_version='.$_SESSION['Versions']['type_version'].'&id_version='.$_SESSION['Versions']['version']['Cle_primaire'].'">Supprimer le package</a>';
echo '<a title="" href="versions.php?action=demande_generation_archive&type_version='.$_SESSION['Versions']['type_version'].'&id_version='.$_SESSION['Versions']['version']['Cle_primaire'].'">Générer une archive</a>';
}
echo '</div>';
break;
}
//---------------------------------------------------------------------------------------------------------
default:
{
if ($_SESSION['Versions']['page'] == "Creation_version") echo '<h2>Nouvelle version de <span class="gras">'.$types_version[$_SESSION['Versions']['type_version']][0].'</span></h2>';
else echo '<h2>Modification de la version <span class="gras">'.$_SESSION['Versions']['version'][''.$types_version[$_SESSION['Versions']['type_version']][2].''].'</span></h2>';
if ($_SESSION['Versions']['page'] == "Creation_version") // On ne donne la possibilité de charger un fichier que lors de la création (pour modifier un fichier, il faut supprimer la version et la recréer (puisque le nom de la version est le nom du fichier...)
{
echo '<div class="champs">';
if ($types_version[$_SESSION['Versions']['type_version']][2] == "Repertoire")
{
echo '<div class="champs_titre">
Répertoire
</div>
<div class="champs_valeur">
<input name="Repertoire" placeholder="Nom du répertoire dans /versions/shipheart/www/" value="'.$_SESSION['Versions']['version']['Repertoire'].'" >';
// echo '<input type="file" name="new_file" webkitdirectory multiple/>
// <input type="hidden" name="MAX_FILE_SIZE" value="'.MAX_TAILLE_FICHIER_VERSION.'">';
echo '</div>';
}
else
{
echo '<div class="champs_titre">
Fichier
</div>
<div class="champs_valeur">
<input type="file" name="new_file"><input type="hidden" name="MAX_FILE_SIZE" value="'.MAX_TAILLE_FICHIER_VERSION.'">
</div>';
}
echo '</div>';
}
echo '<div class="champs">
<div class="champs_titre">
Description
</div>
<div class="champs_valeur">
<textarea cols="" rows="" name="Description" placeholder="Entrer les principales informations destinées uniquement aux équipes Koriolan" autocomplete="off">'.$_SESSION['Versions']['version']['Description'].'</textarea>
</div>
</div>';
if ($_SESSION['Versions']['page'] == "Creation_version") /// Création :
{
echo '<div class="boutons_haut_bas_de_page" id="creation">';
echo '<a title="" href="versions.php?action=affichage_liste_versions&type_version='.$_SESSION['Versions']['type_version'].'">Annuler</a>';
echo '<button type="submit" name="validation_creation_version" title="Valider la création de la version">Créer la version</button>';
echo '</div>';
}
else // Modification :
{
echo '<div class="boutons_haut_bas_de_page modification">';
echo '<a title="" href="versions.php?action=affichage_liste_versions&type_version='.$_SESSION['Versions']['type_version'].'">Retour à la liste des versions</a>';
echo '<button type="submit" name="validation_modification_version" title="Valider les modification de la version">Enregistrer les modifications</button>';
echo '<a title="" href="versions.php?action=demande_suppression_version&type_version='.$_SESSION['Versions']['type_version'].'&id_version='.$_SESSION['Versions']['version']['Cle_primaire'].'">Supprimer la version</a>';
echo '</div>';
}
break;
}
}
echo '</form>';
echo '</div>';
break;
}
//****************************************************************************************************************************
case "Confirmation_suppression_version":
{
echo '<div id="confirmation_suppression_version" class="page_principale">';
echo '<h1>Versions</h1>';
echo '<div class="message_confirmation">';
switch($types_version[$_SESSION['Versions']['type_version']][3])
{
//---------------------------------------------------------------------------------------------------------
case "package" :
{
echo '<p>
Confirmez-vous la suppression de la version
<span class="gras">';
echo $_SESSION['Versions']['version']['Nom'];
echo '</span> ?
</p>';
echo '<p>Si oui, son entrée dans la base de données sera supprimée du serveur !</p>';
break;
}
//---------------------------------------------------------------------------------------------------------
default:
{
echo '<p>
Confirmez-vous la suppression de la version
<span class="gras">';
echo $_SESSION['Versions']['version'][''.$types_version[$_SESSION['Versions']['type_version']][2].''];
echo '</span> ?
</p>';
echo '<p>Si oui, le fichier correspondant et son entrée dans la base de données seront supprimés du serveur !</p>';
break;
}
}
echo '</div>';
echo '<div class="boutons_haut_bas_de_page">';
echo '<a title="" href="versions.php?action=affichage_liste_versions&type_version='.$_SESSION['Versions']['type_version'].'">Annuler</a>';
echo '<a title="" href="versions.php?action=confirmation_suppression_version&type_version='.$_SESSION['Versions']['type_version'].'&id_version='.$_SESSION['Versions']['version']['Cle_primaire'].'">Confirmer la suppression</a>';
echo '</div>';
echo '</div>';
break;
}
//************************************************************************************************************************
case "Generation_archive":
{
echo '<div id="generation_archive" class="page_principale">';
echo '<h1>Versions</h1>';
echo '<form action="versions.php" method="post">';
echo '<h2>Génération d\'un fichier archive pour la version <span class="gras">'.$_SESSION['Versions']['version']['Nom'].'</span></h2>';
echo '<div class="boutons_haut_bas_de_page">';
echo '<a title="" href="versions.php?action=affichage_liste_versions&type_version='.$_SESSION['Versions']['type_version'].'">Retour aux détails de la version</a>';
echo '<button type="submit" name="validation_generation_archive" title="Générer le fichier archive pour la version en cours">Générer l\'archive</button>';
echo '</div>';
echo '</form>';
echo '</div>';
break;
}
}
echo '</div>';
Pied_de_page();