/** * - Cas Articles_ChoixAction : * . * Le cas (par défaut) Sites_ChoixAction détermine si l'action sera un ajout ou une modification ; en fonction, il ajoute les données du formulaire (wysiwyg) ou les modifie. */ function SiteDynamique_ChoixAction($data_in = array()) { Lib_myLog("action: " . $data_in['action']); foreach ($GLOBALS['tab_globals'] as $global) { global ${$global}; } Lib_myLog("IN: ", $data_in); Lib_myLog("FILE: ", __FILE__); $F5 = Lib_checkF5($session, $data_in['timestamp']); $continue = $F5 ? false : true; // On intialise une pseudo-transaction qui nous va permettre de stocker tous les objets rajoutés à la base // pour pouvoir les supprimer si nécessaire $transaction = new Collection(); // Cas de VIDAGE d'un article de la base if ($continue && isset($data_in['submit_clear'])) { /*=============*/ Lib_myLog("Vidage de l'article"); $article = Article_recuperer($data_in['id_article']); $article->contenu = ''; $article->UPD(); $data_out['message_ok'] = $MSG['fr']['%%UPD%%']; // On remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs Lib_writeCache('', "ARTICLES"); // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeCache('', "ARBO"); $continue = false; } // Cas d'ANNULATION du brouillon si celui-ci existe if ($continue && isset($data_in['submit_cancel'])) { // On récupère tous les anciens articles correspondant au type d'article pour les supprimer $args_articles['id_article'] = $data_in['id_article']; $args_articles['etat'] = 'brouillon'; $liste_articles = Articles_chercher($args_articles); foreach ($liste_articles as $art) { $article = Article_recuperer($art['id_article']); $article->DEL(); } $continue = false; } // Cas de MODIFICATION d'article ou de PRE-VISUALISATION if ($continue) { /*=============*/ Lib_myLog("Recuperation de la categorie dans laquelle se retrouvera l'article"); if (isset($data_in['id_arbo_pere']) && $data_in['id_arbo_pere'] != 0) { $arbo = Arbo_recuperer($data_in['id_arbo_pere']); $args_arbos['famille'] = $arbo->famille . $arbo->id_arbo . '-'; $args_arbo['id_arbo'] = $data_in['id_arbo_pere']; $id_categorie_pere = $data_in['id_arbo_pere']; $id_categorie = $data_in['id_arbo_pere']; // Si l'id_arbo_fils est positionné, il "surclasse" l'id_arbo_pere! if (isset($data_in['id_arbo_fils']) && $data_in['id_arbo_fils'] != 0) { $arbo = Arbo_recuperer($data_in['id_arbo_fils']); $args_arbos['famille'] = $arbo->famille . $arbo->id_arbo . '-'; $args_arbo['id_arbo'] = $data_in['id_arbo_fils']; $id_categorie = $data_in['id_arbo_fils']; } } /*=============*/ Lib_myLog("Recuperation et mise a jour de l'article"); $article = Article_recuperer($data_in['id_article']); /*=============*/ Lib_myLog("Mise a jour l'article"); $article->id_article = $data_in['id_article']; $article->id_categorie = $id_categorie_pere; $article->titre_page = $data_in['titre_page']; $article->titre = $data_in['titre']; $article->meta_titre = $data_in['meta_titre'] != '' ? $data_in['meta_titre'] : $data_in['titre']; $article->meta_description = $data_in['meta_description']; $article->meta_mots_clefs = $data_in['meta_mots_clefs']; $article->meta_url = $data_in['meta_url'] != '' ? Lib_urlRewrite($data_in['meta_url']) : Lib_urlRewrite($data_in['titre']); $article->contenu = $data_in['text1']; if (isset($data_in['data1'])) { $article->data1 = $data_in['data1']; } if (isset($data_in['data2'])) { $article->data2 = $data_in['data2']; } if (isset($data_in['data3'])) { $article->data3 = $data_in['data3']; } if (isset($data_in['data4'])) { $article->data4 = $data_in['data4']; } if (isset($data_in['data5'])) { $article->data5 = $data_in['data5']; } if (isset($data_in['data6'])) { $article->data6 = $data_in['data6']; } if (isset($data_in['titre_data1'])) { $article->titre_data1 = $data_in['titre_data1']; } if (isset($data_in['titre_data2'])) { $article->titre_data2 = $data_in['titre_data2']; } if (isset($data_in['titre_data3'])) { $article->titre_data3 = $data_in['titre_data3']; } if (isset($data_in['titre_data4'])) { $article->titre_data4 = $data_in['titre_data4']; } if (isset($data_in['titre_data5'])) { $article->titre_data5 = $data_in['titre_data5']; } if (isset($data_in['titre_data6'])) { $article->titre_data6 = $data_in['titre_data6']; } if ($url_reel_vignette != '') { $article->url_vignette = $vignette; } if (isset($data_in['submit_valid']) && !isset($data_in['etat'])) { $article->etat = 'inactif'; } if (isset($data_in['submit_valid']) && isset($data_in['etat'])) { $article->etat = 'actif'; } if (!isset($data_in['submit_valid']) && !isset($data_in['submit_cancel']) && !isset($data_in['submit_clear'])) { $article->etat = 'brouillon'; } if ($_FILES["url_vignette"]["name"] != '') { //$valid = Lib_isValidFile($_FILES["url_vignette"]["name"], array("jpg", "jpeg", "png", "gif")); if ($_FILES["url_vignette"]['error'] == 1) { /*=============*/ Lib_myLog("Taille trop elevee"); $val = ini_get('upload_max_filesize'); $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})"; $new->url_vignette = ''; } else { if ($valid == 1) { /*=============*/ Lib_myLog("Fichier non autorise"); $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%']; } else { /*=============*/ Lib_myLog("Telechargement de la vignette"); $url_vignette = Lib_nettoie($_FILES["url_vignette"]["name"]); $url_vignette = $article->id_article . '_' . $url_vignette; // Si la vignette existait déjà, on la remplace... if (file_exists('../../img_ftp/' . $url_vignette)) { unlink('../../img_ftp/' . $url_vignette); } if (is_uploaded_file($_FILES["url_vignette"]["tmp_name"])) { $tmp_vignette = $_FILES["url_vignette"]["tmp_name"]; rename($tmp_vignette, '../../img_ftp/' . $url_vignette); if (file_exists('../../img_ftp/' . $url_vignette) && $url_vignette != '') { chmod("../../img_ftp/{$url_vignette}", 0644); } // Redimensionnement, w=483, priorite w // Lib_redimImage("../../img_ftp/$file", 483, '', 'w'); } $article->url_vignette = $url_vignette; } } } $article->UPD(); if ($data_in['lang'] == 'fr') { $arbo = Arbo_recuperer_par_element($article->id_article, 'article', $data_in['code_arbo']); // $famille_initiale = $arbo->famille; // // Il faut d'abord vérifier si on ne travaille pas avec une catégorie et si l'article va changer de famille ou pas ! // if ($arbo->id_arbo_pere == 0 && !empty($args_arbos['famille']) && $famille_initiale != $args_arbos['famille']) { // /*=============*/ Lib_myLog("Changement de categorie : {$famille_initiale} => {$args_arbos['famille']}"); // $old_pos = $arbo->ordre; // $arbo->famille = $args_arbos['famille']; // $arbo->code_arbo = $data_in['code_arbo']; // $ordres = Arbos_chercher($args_arbos); // $pos = 0; // foreach ($ordres as $ordre) // if ($ordre['ordre'] > $pos) $pos = $ordre['ordre']; // $pos++; // $arbo->ordre = $pos; // $arbo->famille = $args_arbos['famille']; // /*=============*/ Lib_myLog("Nouvelle position : {$pos}"); // // /*=============*/ Lib_myLog("Retablissement de l'ordre sans coupure dans l'arborescence initiale ({$famille_initiale})"); // $args_arbos = ''; // $args_arbos['famille'] = $famille_initiale; // $args_arbos['code_arbo'] = $data_in['code_arbo']; // $ordres = Arbos_chercher($args_arbos); // foreach($ordres as $ordre) { // // On ne prend en compte que les elements ayant un ordre supérieur à celui de l'élément ! // if ($ordre['ordre'] < $old_pos) continue; // $arbo_upd = Arbo_recuperer($ordre['id_arbo']); // $arbo_upd->ordre = $arbo_upd->ordre -1; // $arbo_upd->UPD(); // } // } $arbo->intitule = $data_in['titre']; $arbo->UPD(); } if (empty($data_out['message_ko'])) { $data_out['message_ok'] = $MSG['fr']['%%UPD%%']; } // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeCache('', "ARBO"); // On remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs Lib_writeCache('', "ARTICLES"); } if ($continue) { if (isset($data_in['submit_valid'])) { if (isset($data_in['code_arbo'])) { header("Location: http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/actions.php?action=Arbo_Accueil&code_arbo={$data_in['code_arbo']}"); } else { $data_in['action'] = 'SiteDynamique_Apercu'; call_user_func('SiteDynamique_Apercu', $data_in); } } if (!isset($data_in['submit_valid']) && !isset($data_in['submit_cancel']) && !isset($data_in['submit_clear'])) { $data_in['action'] = 'SiteDynamique_Preview'; } call_user_func('SiteDynamique_Preview', $data_in); } else { if ($F5) { /*=============*/ Lib_myLog("Tentative de F5!"); $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%']; $data_in['action'] = 'SiteDynamique_Apercu'; call_user_func('SiteDynamique_Apercu', $data_in); } else { $data_in['action'] = 'SiteDynamique_Apercu'; call_user_func('SiteDynamique_Apercu', $data_in); } } }
function Docs_Image_UPD($data_in = array()) { Lib_myLog("action: " . $data_in['action']); foreach ($GLOBALS['tab_globals'] as $global) { global ${$global}; } Lib_myLog("IN: ", $data_in); Lib_myLog("FILE: ", __FILE__); //HQ 28/05/2014 : On vide le cache pour pouvoir le regénérer partie publique ! Lib_writeCache('', 'GALERIES'); $id_galerie = $data_in['id_galerie']; $galerie = Galerie_recuperer($data_in['id_galerie']); $galerie->versions = array(); $langues = $GLOBALS['LANGUES']; $langues[] = 'fr'; foreach ($langues as $langue) { /*=============*/ Lib_myLog("Recuperation du commentaire de l'image dans la langue"); $galerie->addLang($langue, $data_in['legende_' . $langue], $data_in['data1_' . $langue], $data_in['data2_' . $langue], $data_in['data3_' . $langue], $data_in['data4_' . $langue], $data_in['data5_' . $langue]); $galerie->UPD(); } if ($_FILES["url_gde_image"]["name"] != '') { // $valid = Lib_isValidFile($_FILES["url_gde_image"]["name"], array("jpg", "jpeg", "png", "gif")); if ($_FILES["url_gde_image"]['error'] == 1) { /*=============*/ Lib_myLog("Taille trop elevee"); $val = ini_get('upload_max_filesize'); $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})"; $new->url_gde_image = ''; } else { if ($valid == 1) { /*=============*/ Lib_myLog("Fichier non autorise"); $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%']; } else { /*=============*/ Lib_myLog("Telechargement de l'image"); $url_image = Lib_nettoie($_FILES["url_gde_image"]["name"]); $url_image = $id_galerie . '_' . $url_image; $ext = strrchr($url_image, '.'); // On positionne par défaut une vignette au cas où une vignette n'aurait pas été fournie $vignette = Lib_nettoie($_FILES["url_gde_image"]["name"]); $vignette = $id_galerie . '_min_' . $vignette; // Si la vignette existait déjà, on la remplace... if (file_exists('../../img_ftp/' . $url_image)) { unlink('../../img_ftp/' . $url_image); } if (is_uploaded_file($_FILES["url_gde_image"]["tmp_name"])) { $tmp_gde_image = $_FILES["url_gde_image"]["tmp_name"]; rename($tmp_gde_image, '../../img_ftp/' . $url_image); if (file_exists('../../img_ftp/' . $url_image) && $url_image != '') { chmod("../../img_ftp/" . $url_image, 0644); } } } } } if (isset($url_image)) { $galerie->url_gde_image = $url_image; } if ($data_in['sup_fichier'] && file_exists("../../img_ftp/" . $galerie->url_gde_image)) { unlink('../../img_ftp/' . $galerie->url_gde_image); $galerie->url_gde_image = ''; } $galerie->UPD(); }
function Adherents_Adherent_UPD($data_in = array()) { Lib_myLog("action: " . $data_in['action']); foreach ($GLOBALS['tab_globals'] as $global) { global ${$global}; } Lib_myLog("IN: ", $data_in); Lib_myLog("FILE: ", __FILE__); $logo = ''; if ($_FILES["logo"]["name"] != '') { /*=============*/ Lib_myLog("Telechargement du logo"); $logo = Lib_nettoie($_FILES["logo"]["name"]); $logo = $data_in['id_adherent'] . '_' . $logo; /*=============*/ Lib_myLog("Nouveau nom pour le logo : {$logo}"); $url_logo = '../../img_ftp/' . $logo; if ($_FILES['logo']['error']) { switch ($_FILES['logo']['error']) { case 1: // UPLOAD_ERR_INI_SIZE echo "Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !"; break; case 2: // UPLOAD_ERR_FORM_SIZE echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !"; break; case 3: // UPLOAD_ERR_PARTIAL echo "L'envoi du fichier a été interrompu pendant le transfert !"; break; case 4: // UPLOAD_ERR_NO_FILE echo "Le fichier que vous avez envoyé a une taille nulle !"; break; } } else { // Si le logo existait déjà, on le remplace... if (file_exists($url_logo)) { unlink($url_logo); } if (is_uploaded_file($_FILES["logo"]["tmp_name"])) { $tmp_logo = $_FILES["logo"]["tmp_name"]; rename($tmp_logo, $url_logo); /*=============*/ Lib_myLog("Redimensionnement, w max=200, h max=220, priorite=h"); Lib_redimImage($url_logo, 200, 220, 'w'); chmod("{$url_logo}", 0644); } } } // $categorie1 = ''; // foreach($GLOBALS['CONF']['CATEGORIE1'] as $id => $libelle) // if ($data_in['chk_categorie1_'.$id]) // $categorie1 .= "|{$id}|"; // /*=============*/ Lib_myLog("Parametrage categorie1 : {$categorie1}"); // // $categorie2 = ''; // foreach($GLOBALS['CONF']['CATEGORIE2'] as $id => $libelle) // if ($data_in['chk_categorie2_'.$id]) // $categorie2 .= "|{$id}|"; // /*=============*/ Lib_myLog("Parametrage categorie2 : {$categorie2}"); // // $categorie3 = ''; // foreach($GLOBALS['CONF']['CATEGORIE3'] as $id => $libelle) // if ($data_in['chk_categorie3_'.$id]) // $categorie3 .= "|{$id}|"; // /*=============*/ Lib_myLog("Parametrage categorie1 : {$categorie3}"); /*=============*/ Lib_myLog("Mise a jour d'un adherent"); $adh = Adherent_recuperer($data_in['id_adherent']); $adh->nom = $data_in['nom']; $adh->prenom = $data_in['prenom']; $adh->enseigne = $data_in['enseigne']; $adh->raison_sociale = $data_in['raison_sociale']; $adh->adresse1 = $data_in['adresse1']; $adh->adresse2 = $data_in['adresse2']; $adh->ville = $data_in['ville']; $adh->cp = $data_in['cp']; $adh->pays = $data_in['pays']; $adh->telephone = $data_in['telephone']; $adh->fax = $data_in['fax']; $adh->email = $data_in['email']; $adh->site_internet = $data_in['site_internet']; $adh->entreprise_qualifiee = $data_in['entreprise_qualifiee']; if ($logo != '') { $adh->logo = $logo; } if ($logo == '' && $data_in['supprimer_logo'] == 1) { $adh->logo = ''; } $adh->categorie = $data_in['categorie']; $adh->nature_lien = $data_in['nature_lien']; $adh->info_publique = $data_in['info_publique']; $adh->categorie1 = $categorie1; $adh->categorie2 = $categorie2; $adh->categorie3 = $categorie3; $adh->latitude = $data_in['latitude']; $adh->longitude = $data_in['longitude']; if ($data_in['nom_utilisateur'] == '') { // On prend la 1ère et la dernière lette de la raison sociale, la première lettre de la ville et le code postal $nom_utilisateur = substr($data_in['raison_sociale'], 0, 1); $nom_utilisateur .= substr($data_in['raison_sociale'], -1); $nom_utilisateur .= substr($data_in['ville'], -1); $nom_utilisateur .= $data_in['cp']; $data_in['nom_utilisateur'] = strtoupper($nom_utilisateur); } $adh->nom_utilisateur = $data_in['nom_utilisateur']; if ($data_in['password'] == '') { // Génération d'un nombre aléatoire sur 3 chiffres n'existant pas déjà en base $data_in['password'] = mt_rand(100, 899); } $adh->password = $data_in['password']; $adh->UPD(); $data_out['message_ok'] = $MSG['fr']['%%fiche_UPD%%']; // On force le filtre pour que le système aille chercher à nouveau toutes les données en base $data_in['filtrer'] = 1; $data_in['action'] = 'Adherents_Recherche'; call_user_func('Adherents_Recherche', $data_in); }
function ExecActions($action) { // On recupere tous les objet contenant les donnees global $data_in, $data_out; switch ($action) { case "Classe_Accueil": include 'class.php'; break; case "Class_ADD": //*******************************************************************// //***************STOCKAGE DES CHAMPS DANS UN TABLEAU******************// //*******************************************************************// //Initialisation du tableau champ; $champ = array(); //On commence par l'id $champ[0]['nom'] = 'id_' . $data_in['nom_table']; $champ[0]['type'] = 'INT'; $champ[0]['taille'] = '11'; $champ[0]['recherche'] = 'on'; //On stocke les champs ajouter par l'utilisateur for ($i = 1, $j = 1; $i <= $data_in['nb_lignes']; $i++) { if (!isset($data_in['ligne_' . $i])) { //Si le type est INT et la taille non spécifiée, la taille vaut 11 if ($data_in['type_' . $i] == 'INT' && $data_in['taille_' . $i] == '') { $data_in['taille_' . $i] = '11'; } elseif ($data_in['type_' . $i] == 'VARCHAR' && $data_in['taille_' . $i] == '') { $data_in['taille_' . $i] = '255'; } elseif ($data_in['type_' . $i] == 'DECIMAL' && $data_in['taille_' . $i] == '') { $data_in['taille_' . $i] = '5,2'; } //Récupération des champs et insertion dans le tableau $champ[$j]['nom'] = Lib_nettoie($data_in['nom_' . $i]); $champ[$j]['type'] = $data_in['type_' . $i]; $champ[$j]['taille'] = preg_replace('/ /', '', $data_in['taille_' . $i]); $champ[$j]['recherche'] = isset($data_in['recherche_' . $i]) ? $data_in['recherche_' . $i] : ''; $champ[$j]['clef_secondaire_1'] = isset($data_in['clef_' . $i . '_1']) ? $data_in['clef_' . $i . '_1'] : ''; $champ[$j]['clef_secondaire_2'] = isset($data_in['clef_' . $i . '_2']) ? $data_in['clef_' . $i . '_2'] : ''; $champ[$j]['clef_secondaire_3'] = isset($data_in['clef_' . $i . '_3']) ? $data_in['clef_' . $i . '_3'] : ''; $j++; } } //On ajoute les champs etat, date_add, date_upd, et info_table $champ[$j]['nom'] = 'etat'; $champ[$j]['type'] = 'ENUM'; $champ[$j]['taille'] = "'actif', 'inactif', 'supprime'"; $champ[$j]['recherche'] = 'on'; $j++; $champ[$j]['nom'] = 'date_add'; $champ[$j]['type'] = 'VARCHAR'; $champ[$j]['taille'] = '255'; $j++; $champ[$j]['nom'] = 'date_upd'; $champ[$j]['type'] = 'VARCHAR'; $champ[$j]['taille'] = '255'; $j++; $champ[$j]['nom'] = 'info_' . $data_in['nom_table']; $champ[$j]['type'] = 'VARCHAR'; $champ[$j]['taille'] = '255'; //La variable j devient le nombre de champ $nb_champs = $j; //*******************************************************************// //*****************RECHERCHE DU RETRAIT MAXIMAL***********************// //*******************************************************************// //Permet d'aligner les signes = dans les parties où les lignes sont similaires, sauf le nom du champ $nb_caracteres_max = 0; $nb_caracteres_min = 0; for ($i = 0; $i <= $nb_champs; $i++) { if (strlen($champ[$i]['nom']) > $nb_caracteres_max) { $nb_caracteres_max = strlen($champ[$i]['nom']); } if (strlen($champ[$i]['nom']) < $nb_caracteres_min) { $nb_caracteres_min = strlen($champ[$i]['nom']); } } $nb_retraits_max = ceil(($nb_caracteres_max - $nb_caracteres_min) / 3); //*******************************************************************// //*********************RECHERCHE DU PLURIEL***************************// //*******************************************************************// //Le nom de la table est nettoyé : on enlève les accents et les espaces, on remplace les tirets par des "_" $nom_table = strtolower(Lib_nettoie($data_in['nom_table'])); //Prennent un x : //Les noms terminés par "au" ou "eau" sauf landau et sarrau //Les noms terminés par "eau" //Les noms terminés par "eu" sauf pneu et bleu //Les noms bijou, caillou, chou,genou, hibou, joujou, pou prennent un if (substr($nom_table, -2) == 'au' && $nom_table != 'sarrau' && $nom_table != 'landau' || substr($nom_table, -3) == 'eau' || substr($nom_table, -2) == 'eu' && $nom_table != 'bleu' && $nom_table != 'pneu' || $nom_table == 'bijou' || $nom_table == 'caillou' || $nom_table == 'chou' || $nom_table == 'genou' || $nom_table == 'hibou' || $nom_table == 'joujou' || $nom_table == 'pou') { $nom_table_pluriel = $nom_table . 'x'; } elseif (substr($nom_table, -2) == 'al' && $nom_table != 'bal' && $nom_table != 'bancal' && $nom_table != 'carnaval' && $nom_table != 'ceremonial' && $nom_table != 'chacal' && $nom_table != 'festival' && $nom_table != 'recital' && $nom_table != 'regal' && $nom_table != 'aval' && $nom_table != 'cal' && $nom_table != 'caracal' && $nom_table != 'cantal' && $nom_table != 'choral' && $nom_table != 'nopal' && $nom_table != 'pal' && $nom_table != 'santal' && $nom_table != 'sandal' && $nom_table != 'serval' && $nom_table != 'narval') { $coupure = strlen($nom_table) - 2; $nom_table_pluriel = substr($nom_table, 0, $coupure) . 'aux'; } elseif ($nom_table == 'bail') { $nom_table_pluriel = 'baux'; } elseif ($nom_table == 'corail') { $nom_table_pluriel = 'coraux'; } elseif ($nom_table == 'email') { $nom_table_pluriel = 'emaux'; } elseif ($nom_table == 'soupirail') { $nom_table_pluriel = 'soupiraux'; } elseif ($nom_table == 'travail') { $nom_table_pluriel = 'travaux'; } elseif ($nom_table == 'vantail') { $nom_table_pluriel = 'vantaux'; } elseif ($nom_table == 'vitrail') { $nom_table_pluriel = 'vitraux'; } elseif ($nom_table == 'ail') { $nom_table_pluriel = 'auxs'; } elseif ($nom_table == 'oeil') { $nom_table_pluriel = 'yeux'; } elseif ($nom_table == 'aieul') { $nom_table_pluriel = 'aieux'; } elseif ($nom_table == 'ciel') { $nom_table_pluriel = 'cieux'; } elseif (substr($nom_table, -1) != 's' && substr($nom_table, -1) != 'x') { $nom_table_pluriel = $nom_table . 's'; } else { $nom_table_pluriel = $nom_table; } //Nom de la classe avec une majuscule (singulier) $nom_classe = ucwords($nom_table); //Nom de la classe avec une majuscule (pluriel) $nom_classe_pluriel = ucwords($nom_table_pluriel); //Nom de la classe en majuscule $nom_define = strtoupper($nom_table); //*******************************************************************// //************COMMENTAIRES EN TETE POUR DOXYGEN**********************// //*******************************************************************// $content = ""; $content .= "<? // DEBUT DU BLOC PARAMETRAGE NE PAS MODIFIER\n"; $content .= "/** @file\n"; $content .= "* @brief this file in " . $nom_classe_pluriel . "\n"; $content .= "*/\n"; $content .= "\n"; $content .= "/**\n"; $content .= " * Classe pour la gestion de " . $nom_table_pluriel . "\n"; $content .= " *\n"; $content .= " * @author dilas0ft & z3cN@\$\n"; $content .= " * @version 1.0\n"; $content .= " * @code\n\n"; //*******************************************************************// //*****************************CODE SQL******************************// //*******************************************************************// /* SYNTHAXE SQL CREATE TABLE `table` ( `a` INT(11) NOT NULL, `b` VARCHAR(255) NOT NULL, `c` TEXT NOT NULL, `d` DECIMAL(5,2) NOT NULL, `e` DATE NOT NULL, `f` ENUM('oui', 'non') NOT NULL, `g` VARCHAR(1) NOT NULL, PRIMARY KEY (`a`) ); */ $sql = ""; $sql .= "CREATE TABLE `" . $data_in['nom_bdd'] . "_" . $nom_table . "` (\n"; for ($i = 0; $i <= $nb_champs; $i++) { $sql .= "\t `" . $champ[$i]['nom'] . "` "; switch ($champ[$i]['type']) { case 'INT': case 'VARCHAR': case 'DECIMAL': case 'ENUM': $sql .= $champ[$i]['type'] . "(" . $champ[$i]['taille'] . ") NOT NULL"; if ($i == 0) { $sql .= " auto_increment"; } $sql .= ",\n"; break; case 'CHAR': case 'TEXT': case 'DATE': $sql .= $champ[$i]['type'] . " NOT NULL,\n"; break; } } $sql .= "PRIMARY KEY(`" . $champ[0]['nom'] . "`));"; $sql .= "\n"; //Concaténation de la requête sql à la variable content $content .= $sql; $content .= "\n * @endcode\n"; $content .= " *\n"; $content .= " */\n\n"; //*******************************************************************// //****************RECHERCHE DES CLEFS SECONDAIRES**********************// //*******************************************************************// //Déclaration du tableau de stockage des clefs $clef = array(); //Initialisation : la premiere clef est la clef primaire $clef[0][0] = $champ[0]['nom']; $clef[1] = array(); $clef[2] = array(); $clef[3] = array(); //Recherche des clefs secondaires for ($i = 0; $i <= $nb_champs; $i++) { //Récupération de la clef 1 if (isset($champ[$i]['clef_secondaire_1']) && $champ[$i]['clef_secondaire_1'] == 'on') { $clef[1][] = $champ[$i]['nom']; } //Récupération de la clef 2 if (isset($champ[$i]['clef_secondaire_2']) && $champ[$i]['clef_secondaire_2'] == 'on') { $clef[2][] = $champ[$i]['nom']; } //Récupération de la clef 3 if (isset($champ[$i]['clef_secondaire_3']) && $champ[$i]['clef_secondaire_3'] == 'on') { $clef[3][] = $champ[$i]['nom']; } } //*******************************************************************// //************NOTES POUR LES CLEFS SECONDAIRES ET DE RECHERCHE**********// //*******************************************************************// $content .= "// Clefs de recherche \n"; for ($i = 1, $j = 1; $i <= $nb_champs; $i++) { if (isset($champ[$i]['recherche']) && $champ[$i]['recherche'] == 'on') { $content .= "// Clef de recherche " . $j . " : " . $champ[$i]['nom'] . "\n"; $j++; } } $content .= "\n"; $content .= "// Clefs secondaires\n"; $content .= "//"; for ($i = 0; $i < count($clef[1]); $i++) { $content .= " " . $clef[1][$i] . ','; } $content .= "\n"; $content .= "//"; for ($i = 0; $i < count($clef[2]); $i++) { $content .= " " . $clef[2][$i] . ','; } $content .= "\n"; $content .= "//"; for ($i = 0; $i < count($clef[3]); $i++) { $content .= " " . $clef[3][$i] . ','; } $content .= "\n// FIN DU BLOC PARAMETRAGE\n"; //*******************************************************************// //*****************************DEFINE********************************// //*******************************************************************// $content .= "if (!defined('__" . $nom_define . "_INC__')){\n"; $content .= "\tdefine('__" . $nom_define . "_INC__', 1);\n\n"; //*******************************************************************// //********************DECLARATION DE LA CLASSE*************************// //*******************************************************************// $content .= "class " . $nom_classe . " extends Element {\n"; //*******************************************************************// //********************DECLARATION DES CHAMPS**************************// //*******************************************************************// for ($i = 0; $i <= $nb_champs; $i++) { $content .= "\tvar \$" . $champ[$i]['nom'] . ";\n"; } //*******************************************************************// //**************************CONSTRUCTEUR*****************************// //*******************************************************************// //Affichage du commentaires en tête $content .= "\n/** \n"; $content .= "Constructeur de la classe.\n"; $content .= "*/\n"; //Signature de la fonction $content .= "function " . $nom_classe . "()\n"; //Contenu $content .= "{\n"; $content .= "\t\$this->type_moi = \"" . $nom_table_pluriel . "\";\n"; $content .= "}\n\n"; //*******************************************************************// //****************************GET_TAB********************************// //*******************************************************************// //Affichage du commentaires en tête $content .= "/**\n"; $content .= "Cette fonction retourne un tableau correspondant aux différents attributs de " . $nom_classe . ".\n"; $content .= "*/\n"; $content .= "function getTab()\n"; $content .= "{\n"; for ($i = 0; $i <= $nb_champs; $i++) { //On calcule le nombre de retrait qu'il faut pour ce champ. $nb_retraits = $nb_retraits_max - ceil(strlen($champ[$i]['nom']) / 3); //Premiere partie de la ligne $content .= "\t\$tab['" . $champ[$i]['nom'] . "']"; //On place autant de retrait que le nombre calculé for ($j = 0; $j <= $nb_retraits; $j++) { $content .= "\t"; } //Seconde partie de la ligne $content .= "= \$this->" . $champ[$i]['nom'] . ";\n"; } $content .= "\treturn \$tab;\n"; $content .= "}\n\n"; //*******************************************************************// //********************************ADD********************************// //*******************************************************************// //Affichage du commentaires en tête $content .= "/**\n"; $content .= "Cette fonction ajoute un element de la table " . $nom_table . " à la BDD. \n"; $content .= "*/\n"; $content .= "function ADD()\n"; $content .= "{\n"; for ($i = 1; $i <= $nb_champs; $i++) { //Premiere partie de la ligne //Le champ update n'est pas requis dans la requête INSERT if ($champ[$i]['nom'] != 'date_upd') { $content .= "\t\$" . $champ[$i]['nom'] . " "; //On place autant de retrait que le nombre calculé //On calcule le nombre de retrait qu'il faut pour ce champ. $nb_retraits = $nb_retraits_max - ceil(strlen($champ[$i]['nom'])) / 3; for ($j = 0; $j <= $nb_retraits; $j++) { $content .= "\t"; } //Seconde partie de la ligne //Suivant le type, on appelle une fonction de traitement de la chaîne différente if ($champ[$i]['type'] == 'VARCHAR' || $champ[$i]['type'] == 'TEXT') { if ($champ[$i]['nom'] != 'date_add' && $champ[$i]['nom'] != 'date_upd') { $content .= "= Sql_prepareTexteStockage(\$this->{$champ[$i]['nom']});\n"; } elseif ($champ[$i]['nom'] == 'date_add') { $content .= "= time();\n"; } } elseif ($champ[$i]['type'] == 'DATE') { $content .= "= Lib_frToEn(\$this->{$champ[$i]['nom']});\n"; } elseif ($champ[$i]['type'] == 'DECIMAL') { $content .= "= strtr(\$this->{$champ[$i]['nom']}, \",\", \".\");\n"; } elseif ($champ[$i]['type'] == 'INT') { $content .= "= is_numeric(\$this->{$champ[$i]['nom']}) ? \$this->{$champ[$i]['nom']} : 0;\n"; } elseif ($champ[$i]['type'] == 'ENUM' && $champ[$i]['nom'] == 'etat') { $content .= "= \$this->etat != '' ? \$this->etat : 'actif';\n"; } else { $content .= "= \$this->{$champ[$i]['nom']};\n"; } } } $content .= "\n"; //Requête SQL INSERT $content .= "\t\$sql = \" INSERT INTO \".\$GLOBALS['prefix'].\"" . $nom_table . "\n"; $content .= "\t\t\t\t\t("; for ($i = 1; $i <= $nb_champs; $i++) { //Le champ update n'est pas requis dans la requête INSERT if ($champ[$i]['nom'] != 'date_upd') { //Contrôle pour le positionnement des virgules if ($i != $nb_champs) { $content .= $champ[$i]['nom'] . ", "; } else { $content .= $champ[$i]['nom']; } if ($i % 3 == 0) { $content .= "\n\t\t\t\t\t"; } } } $content .= ")\n"; $content .= "\t\t\t\tVALUES \n"; $content .= "\t\t\t\t\t ("; for ($i = 1; $i <= $nb_champs; $i++) { if ($champ[$i]['nom'] != 'date_upd') { //Contrôle pour le positionnement des virgules if ($i != $nb_champs) { $content .= "'\$" . $champ[$i]['nom'] . "', "; } else { $content .= "'\$" . $champ[$i]['nom'] . "'"; } if ($i % 3 == 0) { $content .= "\n\t\t\t\t\t"; } } } $content .= ")\";\n\n"; $content .= "\tif (!Sql_exec(\$sql)) \$this->setError(ERROR);\n\n"; $content .= "\tif (!\$this->isError()) {\n"; $content .= "\t\t\$" . $champ[0]['nom'] . " = Sql_lastInsertId(); \n"; $content .= "\t\tLib_sqlLog(\$sql.\" -- \$" . $champ[0]['nom'] . "\");\n"; $content .= "\t\t\$this->" . $champ[0]['nom'] . " = \$this->" . $champ[0]['nom'] . ";\n"; $content .= "\t\treturn \$" . $champ[0]['nom'] . ";\n"; $content .= "\t}\n"; $content .= "\treturn;\n"; $content .= "}\n\n"; //*******************************************************************// //********************************UPD********************************// //*******************************************************************// //Affichage du commentaires en tête $content .= "/**\n"; $content .= "Cette fonction modifie un élément de la table " . $nom_table . " dans la BDD. \n"; $content .= "*/\n"; $content .= "function UPD()\n"; $content .= "{\n"; for ($i = 0; $i <= $nb_champs; $i++) { //Premiere partie de la ligne //Le champ add n'est pas requis dans la requête UPDATE if ($champ[$i]['nom'] != 'date_add') { $content .= "\t\$" . $champ[$i]['nom'] . " "; //On place autant de retrait que le nombre calculé //On calcule le nombre de retrait qu'il faut pour ce champ. $nb_retraits = $nb_retraits_max - ceil(strlen($champ[$i]['nom'])) / 3; for ($j = 0; $j <= $nb_retraits; $j++) { $content .= "\t"; } //Seconde partie de la ligne //Suivant le type, on appelle une fonction de traitement de la chaîne différente if ($champ[$i]['type'] == 'VARCHAR' || $champ[$i]['type'] == 'TEXT') { if ($champ[$i]['nom'] != 'date_upd') { $content .= "= Sql_prepareTexteStockage(\$this->{$champ[$i]['nom']});\n"; } elseif ($champ[$i]['nom'] == 'date_upd') { $content .= "= time();\n"; } } elseif ($champ[$i]['type'] == 'DATE') { $content .= "= Lib_frToEn(\$this->{$champ[$i]['nom']});\n"; } elseif ($champ[$i]['type'] == 'DECIMAL') { $content .= "= strtr(\$this->{$champ[$i]['nom']}, \",\", \".\");\n"; } elseif ($champ[$i]['type'] == 'INT') { $content .= "= is_numeric(\$this->{$champ[$i]['nom']}) ? \$this->{$champ[$i]['nom']} : 0;\n"; } else { $content .= "= \$this->" . $champ[$i]['nom'] . ";\n"; } } } $content .= "\n"; //Requête SQL UPDATE $content .= "\t\$sql = \" UPDATE \".\$GLOBALS['prefix'].\"" . $nom_table . "\n"; $content .= "\t\t\t\tSET "; for ($i = 1; $i <= $nb_champs; $i++) { if ($champ[$i]['nom'] != 'date_add') { $content .= $champ[$i]['nom'] . " = "; //Contrôle pour le positionnement des virgules if ($i != $nb_champs) { $content .= "'\$" . $champ[$i]['nom'] . "', "; } else { $content .= "'\$" . $champ[$i]['nom'] . "'"; } if ($i % 3 == 0) { $content .= "\n\t\t\t\t\t"; } } } $content .= "\n\t\t\t\tWHERE " . $champ[0]['nom'] . " = \$" . $champ[0]['nom'] . "\";\n\n"; $content .= "\tif (!Sql_exec(\$sql)) \$this->setError(ERROR);\n"; $content .= "\tif (!\$this->isError()) Lib_sqlLog(\$sql);\n"; $content .= "\n"; $content .= "\treturn;\n"; $content .= "}\n\n"; //*******************************************************************// //******************************DELETE*******************************// //*******************************************************************// $content .= "/**\n"; $content .= "\tCette fonction supprime un chantier de la BDD.\n"; $content .= "*/\n"; $content .= "function DEL()\n"; $content .= "{\n"; $content .= "\tif (\$this->isError()) return;\n\n"; $content .= "\t\$" . $champ[0]['nom'] . " = \$this->" . $champ[0]['nom'] . ";\n\n"; $content .= "\t\$sql = \" DELETE FROM \".\$GLOBALS['prefix'].\"" . $nom_table . "\n"; $content .= "\t\t\t\tWHERE " . $champ[0]['nom'] . " = \$" . $champ[0]['nom'] . "\";\n\n"; $content .= "\tif (!Sql_exec(\$sql)) \$this->setError(ERROR);\n"; $content .= "\tif (!\$this->isError()) Lib_sqlLog(\$sql);\n\n"; $content .= "\treturn;\n"; $content .= "}\n\n"; //*******************************************************************// //*******************************TOSTR*******************************// //*******************************************************************// //Affichage du commentaires en tête $content .= "/** \n"; $content .= "Cette fonction transforme les attributs en chaine de caractères.\n"; $content .= "*/\n"; $content .= "function toStr()\n"; $content .= "{\n"; $content .= "\t\$str = \"\";\n"; for ($i = 0; $i <= $nb_champs; $i++) { $content .= "\t\$str = Lib_addElem(\$str, \$this->" . $champ[$i]['nom'] . ");\n"; } $content .= "\t\$str = \"(\".\$str.\")\";\n"; $content .= "\treturn \$str;\n"; $content .= "}\n"; $content .= "}\n\n"; //*******************************************************************// //************************CLASSE_RECUPERER***************************// //*******************************************************************// //Pour chaque clef secondaire for ($i = 0; $i <= 3; $i++) { if (count($clef[$i]) >= 1) { //Affichage du commentaires en tête $content .= "/**\n"; if ($i == 0) { $content .= "Recupère toutes les données relatives à un " . $nom_table . " suivant son identifiant\n"; } else { $content .= "Recupère toutes les données relatives à un " . $nom_table . " suivant les attributs "; foreach ($clef[$i] as $id => $key) { $content .= $key . ", "; } } $content .= "et retourne la coquille \"" . $nom_classe . "\" remplie avec les informations récupérées\n"; $content .= "de la base.\n"; foreach ($clef[$i] as $key) { $content .= "@param " . $key . ".\n"; } $content .= "*/\n"; //Signature de la fonction //Pour la clef primaire, la fonction s'appelle nom_classe_recuperer //Pour les clefs secondaires, la fonction s'appelle if ($i == 0) { $content .= "function " . $nom_classe . "_recuperer"; } else { $content .= "function " . $nom_classe . "_recuperer_" . $clef[$i][0]; } foreach ($clef[$i] as $id => $key) { if ($id != 0) { $content .= "_" . $key; } } $content .= "("; $content .= "\$" . $clef[$i][0]; foreach ($clef[$i] as $id => $key) { if ($id != 0) { $content .= ", \$" . $key; } } $content .= ")\n"; $content .= "{\n"; //Création d'un nouvel élement $content .= "\t\$" . $nom_table . " = new " . $nom_classe . "();\n\n"; //Génération de la requête SQL $content .= "\t\$sql = \" SELECT *\n"; $content .= "\t\t\t\tFROM \".\$GLOBALS['prefix'].\"" . $nom_table . "\n"; $content .= "\t\t\t\tWHERE "; $content .= $clef[$i][0] . " = '\$" . $clef[$i][0] . "'"; foreach ($clef[$i] as $id => $key) { if ($id != 0) { $content .= "\t\t\t\tAND " . $key . " = '\$" . $key . "'"; } if (!empty($clef[$i][$id + 1])) { $content .= "\n"; } } $content .= ";\";\n\n"; //Exécution de la requête $content .= "\t\$result = Sql_query(\$sql);\n\n"; //Insertion du resultats dans l'objet $content .= "\tif (\$result && Sql_errorCode(\$result) === \"00000\") {\n"; $content .= "\t\t\$row = Sql_fetch(\$result);\n"; for ($j = 0; $j <= $nb_champs; $j++) { //Premiere partie de la ligne $content .= "\t\t\$" . $nom_table . "->" . $champ[$j]['nom'] . ""; //On place autant de retrait que le nombre calculé //On calcule le nombre de retrait qu'il faut pour ce champ. $nb_retraits = $nb_retraits_max - ceil(strlen($champ[$j]['nom'])) / 3; for ($k = 0; $k <= $nb_retraits; $k++) { $content .= "\t"; } //Seconde partie de la ligne //Suivant le type, on appelle une fonction de traitement de la chaîne différente if (($champ[$j]['type'] == 'VARCHAR' || $champ[$j]['type'] == 'TEXT') && ($champ[$j]['nom'] != 'date_add' && $champ[$j]['nom'] != 'date_upd')) { $content .= "= Sql_prepareTexteAffichage(\$row['" . $champ[$j]['nom'] . "']);\n"; } elseif ($champ[$j]['type'] == 'DATE') { $content .= "= Lib_enToFr(\$row['" . $champ[$j]['nom'] . "']);\n"; } else { $content .= "= \$row['" . $champ[$j]['nom'] . "'];\n"; } } $content .= "\t}\n"; $content .= "\treturn \$" . $nom_table . ";\n"; $content .= "}\n\n"; } } //*******************************************************************// //************************CLASSES_CHERCHER***************************// //*******************************************************************// //Affichage du commentaires en tête $content .= "/**\n"; $content .= "Retourne un tableau de " . $nom_table_pluriel . " correspondant aux champs du tableau en argument.\n"; $content .= "@param \$args\n"; $content .= "*/\n"; //Signature de la fonction $content .= "function " . $nom_classe_pluriel . "_chercher(\$args)\n"; $content .= "{\n"; //Déclaration du tableau de résultat $content .= "\t\$count = 0;\n\n"; $content .= "\t\$tab_result = array();\n\n"; //Génération de la requête SQL $content .= "\tif (isset(\$args['count'])) {\n"; $content .= "\t\t\$sql = \" SELECT count(*) nb_enregistrements \n"; $content .= "\t\t\t\t\tFROM \".\$GLOBALS['prefix'].\"" . $nom_table . "\n"; $content .= "\t\t\t\t\tWHERE 1\";\n"; $content .= "\t} else {\n"; $content .= "\t\t\$sql = \" SELECT * \n"; $content .= "\t\t\t\t\tFROM \".\$GLOBALS['prefix'].\"" . $nom_table . "\n"; $content .= "\t\t\t\t\tWHERE 1\";\n"; $content .= "\t}\n\n"; //Le tableau est retourné vide si le tableau $args ne contient pas les champs nécessaires $content .= "\tif (!isset(\$args['" . $champ[0]['nom'] . "'])"; for ($i = 1, $j = 1; $i <= $nb_champs; $i++) { if (isset($champ[$i]['recherche']) && $champ[$i]['recherche'] == 'on') { $j++; $content .= " && !isset(\$args['" . $champ[$i]['nom'] . "'])"; if ($j % 3 == 0) { $content .= "\n\t\t"; } } } $content .= " && !isset(\$args['order_by']) && !isset(\$args['etat']) && !isset(\$args['tab_ids_" . $nom_table_pluriel . "'])"; $content .= ")\n"; $content .= "\t\treturn \$tab_result;\n\n"; //Début de la condition du WHERE $content .= "\t\$condition=\"\";\n\n"; for ($i = 0; $i <= $nb_champs; $i++) { if (isset($champ[$i]['recherche']) && $champ[$i]['recherche'] == 'on') { $content .= "\tif (isset(\$args['" . $champ[$i]['nom'] . "']) && \$args['" . $champ[$i]['nom'] . "'] != \"*\")\n"; if ($champ[$i]['type'] == 'VARCHAR' || $champ[$i]['type'] == 'TEXT') { $content .= "\t\t\$condition .= \" AND " . $champ[$i]['nom'] . " LIKE '\".Sql_prepareTexteStockage(\$args['" . $champ[$i]['nom'] . "']).\"' \";\n"; } elseif ($champ[$i]['type'] == 'DATE') { $content .= "\t\t\$condition .= \" AND " . $champ[$i]['nom'] . " = '\".Lib_frToEn(\$args['" . $champ[$i]['nom'] . "']).\"' \";\n"; } elseif ($champ[$i]['type'] == 'DECIMAL') { $content .= "\t\t\$condition .= \" AND " . $champ[$i]['nom'] . " = '\".strtr(\$this->" . $champ[$i]['nom'] . ", \",\", \".\").\"' \";\n"; } else { $content .= "\t\t\$condition .= \" AND " . $champ[$i]['nom'] . " = '\".\$args['" . $champ[$i]['nom'] . "'].\"' \";\n"; } } } //Tableau avec IN $content .= "\n\tif (isset(\$args['tab_ids_" . $nom_table_pluriel . "']) && \$args['tab_ids_" . $nom_table_pluriel . "'] != \"*\") {\n"; $content .= "\t\t\$ids = implode(\",\", \$args['tab_ids_" . $nom_table_pluriel . "']);\n"; $content .= "\t\t\$condition .= \" AND " . $champ[0]['nom'] . " IN (0\".\$ids.\") \";\n"; $content .= "\t}\n"; //Concaténation de la requête formé avec un ORDER BY $content .= "\tif (!isset(\$args['etat']))\n"; $content .= "\t\t\$condition .= \" AND etat != 'supprime' \";\n"; $content .= "\n"; $content .= "\t\$sql .= \$condition;\n\n"; //Concaténation de la requête formé avec un ORDER BY $content .= "\tif (isset(\$args['order_by']) && !isset(\$args['asc_desc']))\n"; $content .= "\t\t\$sql .= \" ORDER BY \".\$args['order_by'].\" ASC\";\n"; $content .= "\tif (isset(\$args['order_by']) && isset(\$args['asc_desc']))\n"; $content .= "\t\t\$sql .= \" ORDER BY \".\$args['order_by'].\" \".\$args['asc_desc'];\n\n"; //Concaténation de la requête formé avec un LIMIT $content .= "\tif (isset(\$args['limit']) && !isset(\$args['start']))\n"; $content .= "\t\t\$sql .= \" LIMIT \".\$args['limit'];\n\n"; $content .= "\tif (isset(\$args['limit']) && isset(\$args['start']))\n"; $content .= "\t\t\$sql .= \" LIMIT \".\$args['start'].\",\".\$args['limit'];\n\n"; //Log et exécution $content .= "\t/*=============*/ Lib_myLog(\"SQL: \$sql\");\n"; $content .= "\t\$result = Sql_query(\$sql);\n\n"; $content .= "\tif (isset(\$args['count'])) {\n"; $content .= "\t\tif (\$result && Sql_errorCode(\$result) === \"00000\") {\n"; $content .= "\t\t\t\$row = Sql_fetch(\$result);\n"; $content .= "\t\t\t\$count = \$row['nb_enregistrements'];\n"; $content .= "\t\t}\n"; $content .= "\t\treturn \$count;\n"; $content .= "\t} else {\n"; $content .= "\t\tif (\$result && Sql_errorCode(\$result) === \"00000\") {\n"; $content .= "\t\t\twhile(\$row = Sql_fetch(\$result)) {\n"; $content .= "\t\t\t\t\$id = \$row['" . $champ[0]['nom'] . "'];\n"; for ($j = 0; $j <= $nb_champs; $j++) { //Premiere partie de la ligne $content .= "\t\t\t\t\$tab_result[\$id][\"" . $champ[$j]['nom'] . "\"]"; //On place autant de retrait que le nombre calculé //On calcule le nombre de retrait qu'il faut pour ce champ. $nb_retraits = $nb_retraits_max - ceil(strlen($champ[$j]['nom'])) / 3; for ($k = 0; $k <= $nb_retraits; $k++) { $content .= "\t"; } //Seconde partie de la ligne //Suivant le type, on appelle une fonction de traitement de la chaîne différente if ($j == 0) { $content .= "= \$id;\n"; } else { if (($champ[$j]['type'] == 'VARCHAR' || $champ[$j]['type'] == 'TEXT') && ($champ[$j]['nom'] != 'date_add' && $champ[$j]['nom'] != 'date_upd')) { $content .= "= Sql_prepareTexteAffichage(\$row['" . $champ[$j]['nom'] . "']);\n"; } elseif ($champ[$j]['type'] == 'DATE') { $content .= "= Lib_enToFr(\$row['" . $champ[$j]['nom'] . "']);\n"; } else { $content .= "= \$row['" . $champ[$j]['nom'] . "'];\n"; } } } $content .= "\t\t\t}\n"; $content .= "\t\t}\n\n"; for ($i = 0; $i <= 3; $i++) { if (count($clef[$i]) >= 1) { //Définition des array_pop sur le tableau final en fonction des clefs secondaires $content .= "\t\tif (count(\$tab_result) == 1 && "; $content .= "(\$args['" . $champ[0]['nom'] . "'] != '' && \$args['" . $champ[0]['nom'] . "'] != '*')"; foreach ($clef[$i] as $id => $key) { if ($id != 0) { $content .= " && (\$args['" . $key . "'] != '' && \$args['" . $key . "'] != '*')"; } } $content .= ")\n"; $content .= "\t\t\t\$tab_result = array_pop(\$tab_result);\n"; } } $content .= "\t}\n"; //Retour du tableau de résultat $content .= "\n"; $content .= "\treturn \$tab_result;\n"; $content .= "}\n"; //*******************************************************************// //******************************FIN DEFINE****************************// //*******************************************************************// $content .= "} // Fin if (!defined('__" . $nom_define . "_INC__'))\n"; $content .= "?>"; //*******************************************************************// //********************CREATION DU FICHIER classe.inc.php*******************// //*******************************************************************// //Définition du fichier futur $path = $data_in['nom_bdd'] . '/' . $nom_table . ".inc.php"; //Si aucun répertoire pour la base de données concernées, on crée le répertoire if (!is_dir($data_in['nom_bdd'])) { mkdir($data_in['nom_bdd'], 0777); } //On ouvre le fichier $file = fopen($path, "w"); //On écrit le contenu dans le fichier fwrite($file, $content); //On ferme le fichier fclose($file); //*******************************************************************// //********************ENVOI VERS LA PAGE DE RESULTAT*******************// //*******************************************************************// //On envoie en data_out la requête sql de création de la table; $data_out['sql'] = $sql; $data_out['nom_bdd'] = $data_in['nom_bdd']; $data_out['nom_table'] = $nom_table; include 'resultat.php'; break; case "Class_UPD": //Pour le moment, il n'y a pas d'erreur $error = 0; $clefs_recherche = array(); $clef_1 = array(); $clef_2 = array(); $clef_3 = array(); // Ouverture du fichier en lecture $fp = fopen($_FILES["path"]['tmp_name'], "r"); if (substr($_FILES["path"]['name'], -8) != '.inc.php') { $error = 1; } // Tant que non fin du fichier $i = 1; $j = 1; while (!feof($fp)) { //On récupère chaque ligne de la classe $ligne = fgets($fp); $ind_clef_1 = $ind_clef_2 = $ind_clef_3 = 0; //On vérifie que la classe est une classe créé avec ce module //La ligne 9 doit être égal à "* @author dilas0ft & z3cN@$ " if ($i == 9) { if (!preg_match('/\\* \\@author dilas0ft \\& z3cN\\@\\$/', $ligne)) { $error = 1; break; } } elseif ($i == 13) { $split_ligne_1 = preg_split("/`/", $ligne); $split_ligne_2 = preg_split("/_/", $split_ligne_1[1]); //Le nom de la base de donnée est le mot après le premier '_' $nom_bdd = $split_ligne_2[0]; //Le nom de la table est ce qu'il y a ensuite for ($pass = 0, $k = 1; $k < count($split_ligne_2); $k++) { if ($pass == 0) { $nom_table = $split_ligne_2[$k]; $pass = 1; } else { $nom_table .= '_' . $split_ligne_2[$k]; } } } elseif (preg_match('/\\t `*`/', $ligne) && $i != 14) { //On ignore les champs date_add, date_upd, info_ if (preg_match('/date_add/', $ligne) || preg_match('/date_upd/', $ligne) || preg_match('/info_/', $ligne)) { continue; } //Lorsqu'on arrive au champ date_add, on s'arrête : ce qui nous intéresse, ce ne sont que les champs saisis par l'utilisateur //Les lignes récupérées sont de type : " `nom_champ` VARCHAR(64) NOT NULL, " //On coupe la chaine au espace et on stocke le résultat dans un tableau $split_ligne = preg_split("/ /", $ligne); //Le nom du champ est la première case du tableau, à laquelle on enlève les "`" grâce à preg_replace $champ[$j]['nom'] = preg_replace('/`/', '', $split_ligne[1]); //La deuxième case du tableau coupé est de type "VARCHAR(64)"; //On coupe donc à la parenthèse ouvrante pour récupérer le type VARCHAR et la taille 64 $taille = preg_split("/\\(/", $split_ligne[2]); $champ[$j]['type'] = $taille[0]; //On stocke la taille, avec la parenthèse fermante en moins supprimé avec preg_replace $champ[$j]['taille'] = preg_replace('/\\)/', '', $taille[1]); $j++; } elseif (preg_match('/Clef de recherche /', $ligne)) { $split_ligne = array(); $split_ligne = preg_split("/\\ : /", $ligne); $clefs_recherche[] = trim($split_ligne[1]); } elseif (preg_match('/Clefs secondaires/', $ligne)) { $ind_clef_1 = $i + 1; $ind_clef_2 = $i + 2; $ind_clef_3 = $i + 3; } elseif ($i == $ind_clef_1) { $split_ligne = $split_1 = $split_2 = $clef_1 = array(); $split_ligne = preg_split("/, /", $ligne); //Pour le premier, on enlève les barres de commentaires $split_1 = preg_split("/\\/\\/ /", $split_ligne[0]); $clef_1[0] = $split_1[1]; //Pour la suite, on ne fait que stocker for ($k = 1; $k < count($split_ligne) - 1; $k++) { $clef_1[$k] = $split_ligne[$k]; } //Pour le dernier, on enlève la virgule $split_2 = preg_split("/,/", $split_ligne[$k]); $clef_1[$k] = $split_2[0]; } elseif ($i == $ind_clef_2) { $split_ligne = $split_1 = $split_2 = $clef_2 = array(); $split_ligne = preg_split("/, /", $ligne); //Pour le premier, on enlève les barres de commentaires $split_1 = preg_split("/\\/\\//", $split_ligne[0]); $clef_2[0] = $split_1[1]; //Pour la suite, on ne fait que stocker for ($k = 1; $k < count($split_ligne) - 1; $k++) { $clef_2[$k] = $split_ligne[$k]; } //Pour le dernier, on enlève la virgule $split_2 = preg_split("/,/", $split_ligne[$k]); $clef_2[$k] = $split_2[0]; } elseif ($i == $ind_clef_3) { $split_ligne = $split_1 = $split_2 = $clef_3 = array(); $split_ligne = preg_split("/, /", $ligne); //Pour le premier, on enlève les barres de commentaires $split_1 = preg_split("/\\/\\//", $split_ligne[0]); $clef_3[0] = $split_1[1]; //Pour la suite, on ne fait que stocker for ($k = 1; $k < count($split_ligne) - 1; $k++) { $clef_3[$k] = $split_ligne[$k]; } //Pour le dernier, on enlève la virgule $split_2 = preg_split("/,/", $split_ligne[$k]); $clef_3[$k] = $split_2[0]; //Fin du traitement sur le fichier break; } $i++; } //On stocke les champs dans un data_out $data_out['clefs_recherche'] = $clefs_recherche; $data_out['clef_1'] = $clef_1; $data_out['clef_2'] = $clef_2; $data_out['clef_3'] = $clef_3; $data_out['nom_bdd'] = $nom_bdd; $data_out['nom_table'] = $nom_table; $data_out['liste_champs'] = $champ; if ($error == 1) { $data_out['message'] = 'Le fichier n\'est pas une classe générée par ce module.'; } ExecActions('Classe_Accueil'); break; default: ExecActions('Classe_Accueil'); break; } }
function News_ImageIntro_UPD($data_in = array()) { Lib_myLog("action: " . $data_in['action']); foreach ($GLOBALS['tab_globals'] as $global) { global ${$global}; } Lib_myLog("IN: ", $data_in); Lib_myLog("FILE: ", __FILE__); $F5 = Lib_checkF5($session, $data_in['timestamp']); $continue = $F5 ? false : true; // On intialise une pseudo-transaction qui nous permettre de stocker tous les objets rajoutés à la base // pour pouvoir les supprimer si nécessaire $transaction = new Collection(); // Cas de SUPPRESSION complète de l'new de la base if (isset($data_in['submit_clear'])) { /*=============*/ Lib_myLog("Suppression de l'image d'intro"); $args_news['code'] = 999999999; $args_news['code_news'] = $data_in['code_news']; $liste_news = Articles_chercher($args_news); foreach ($liste_news as $new) { $new = Article_recuperer($new['id_article']); $new->DEL(); } // On remet à 0 le fichier contenant le "cache" des news pour l'affichage des blocs Lib_writeCache('', "ARTICLES"); $data_out['message_ok'] = $MSG['fr']['%%imageIntro_DEL%%']; $continue = false; } // Cas de MODIFICATION d'new ou de PRE-VISUALISATION if ($continue) { $tab_langues = $GLOBALS['LANGUES']; $tab_langues[] = 'fr'; foreach ($tab_langues as $langue) { /*=============*/ Lib_myLog("Recherche de l'image d'intro"); $args['code_news'] = $data_in['code_news']; $args['code'] = 999999999; $args['lang'] = $langue; $news_bdd = Articles_chercher($args); if (isset($news_bdd['id_article'])) { /*=============*/ Lib_myLog("Image d'intro trouvee => recuperation"); $new = Article_recuperer($news_bdd['id_article']); /*=============*/ Lib_myLog("Coucou", $_FILES); if ($_FILES["image_intro_" . $langue]['name'] != '') { $file = Lib_nettoie($_FILES["image_intro_" . $langue]['name']); $file = $news_bdd['id_article'] . '_' . $file; // Si le fichier existait déjà, on la supprime... if (file_exists('../../img_ftp/' . $file)) { unlink('../../img_ftp/' . $file); } if (is_uploaded_file($_FILES["image_intro_" . $langue]['tmp_name'])) { /*=============*/ Lib_myLog("deplacement du fichier au bon endroit"); $tmp = $_FILES['image_intro_' . $langue]['tmp_name']; rename($tmp, '../../img_ftp/' . $file); if (file_exists('../../img_ftp/' . $file) && $file != '') { chmod("../../img_ftp/{$file}", 0644); } // Redimensionnement, w=1000, priorite w Lib_redimImage("../../img_ftp/{$file}", 105, 105, 'w'); } $new->image_intro = $file; } $new->UPD(); $data_out['message_ok'] = $MSG['fr']['%%imageIntro_UPD%%']; } if (!isset($news_bdd['id_article'])) { /*=============*/ Lib_myLog("Intro non trouvee => ajout"); $new = new Article(); $new->code_news = $data_in['code_news']; $new->code = $data_in['code']; $new->lang = $langue; $new->etat = 'actif'; $id_article = $new->ADD(); $new = Article_recuperer($id_article); if ($_FILES['image_intro_' . $langue]['name'] != '') { $file = Lib_nettoie($_FILES['image_intro_' . $langue]['name']); $file = $id_article . '_' . $file; if (file_exists('../../img_ftp/' . $file)) { unlink('../../img_ftp/' . $file); } if (is_uploaded_file($_FILES['image_intro_' . $langue]['tmp_name'])) { /*=============*/ Lib_myLog("deplacement du fichier au bon endroit"); $tmp = $_FILES['image_intro_' . $langue]['tmp_name']; rename($tmp, '../../img_ftp/' . $file); if (file_exists('../../img_ftp/' . $file) && $file != '') { chmod("../../img_ftp/{$file}", 0644); } // Redimensionnement, w=1000, priorite w Lib_redimImage("../../img_ftp/{$file}", 105, 105, 'w'); } $new->image_intro = $file; $new->id_article = $id_article; $new->UPD(); } $data_out['message_ok'] = $MSG['fr']['%%imageIntro_ADD%%']; } } // On remet à 0 le fichier contenant le "cache" des news pour l'affichage des blocs Lib_writeCache('', "ARTICLES"); } if ($continue) { $data_in['action'] = 'News_Accueil'; call_user_func('News_Accueil', $data_in); } else { if ($F5) { /*=============*/ Lib_myLog("Tentative de F5!"); $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%']; $data_in['action'] = 'News_Accueil'; call_user_func('News_Accueil', $data_in); } else { $data_in['action'] = 'News_Accueil'; call_user_func('News_Accueil', $data_in); } } }
function Images_Image_ADD($data_in = array()) { Lib_myLog("action: " . $data_in['action']); foreach ($GLOBALS['tab_globals'] as $global) { global ${$global}; } Lib_myLog("IN: ", $data_in); Lib_myLog("FILE: ", __FILE__); Lib_writeData($data_srv, $session); /*=============*/ Lib_myLog("Recherche de la position la plus elevee"); $args_images['code_pere'] = $data_in['code_pere']; $args_images['type_pere'] = $data_in['type_pere']; $galerie = Galeries_chercher($args_images); $position = 0; foreach ($galerie as $image) { if ($image['position'] > $position) { $position = $image['position']; } } $position++; $timestamp = time(); /*=============*/ Lib_myLog("On rajoute l'image en base"); $galerie = new Galerie($data_in['code_pere'], $data_in['type_pere']); $galerie->position = $position; $langues = $GLOBALS['LANGUES']; $langues[] = 'fr'; $id_galerie = $galerie->ADD(); $galerie = Galerie_recuperer($id_galerie); foreach ($langues as $langue) { $galerie->addLang($langue, $data_in['legende_' . $langue], $data_in['data1' . $langue], $data_in['data2' . $langue], $data_in['data3' . $langue], $data_in['data4' . $langue], $data_in['data5' . $langue]); } if ($_FILES["url_gde_image"]["name"] != '') { $valid = Lib_isValidFile($_FILES["url_gde_image"]["name"], array("jpg", "jpeg", "png", "gif")); if ($_FILES["url_gde_image"]['error'] == 1) { /*=============*/ Lib_myLog("Taille trop elevee"); $val = ini_get('upload_max_filesize'); $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})"; $new->url_gde_image = ''; } else { if ($valid == 1) { /*=============*/ Lib_myLog("Fichier non autorise"); $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%']; } else { /*=============*/ Lib_myLog("Telechargement de l'image"); $image = Lib_nettoie($_FILES["url_gde_image"]["name"]); $image = $id_galerie . '_' . $image; $ext = strrchr($image, '.'); // On positionne par défaut une vignette au cas où une vignette n'aurait pas été fournie $vignette = Lib_nettoie($_FILES["url_gde_image"]["name"]); $vignette = $id_galerie . '_min_' . $vignette; // Si la vignette existait déjà, on la remplace... if (file_exists('../../img_ftp/' . $image)) { unlink('../../img_ftp/' . $image); } if (is_uploaded_file($_FILES["url_gde_image"]["tmp_name"])) { $tmp_gde_image = $_FILES["url_gde_image"]["tmp_name"]; rename($tmp_gde_image, '../../img_ftp/' . $image); if (file_exists('../../img_ftp/' . $image) && $image != '') { chmod("../../img_ftp/" . $image, 0644); } // Redimensionnement, w=483, priorite w Lib_redimImage("../../img_ftp/{$image}", 483, '', 'w'); } } } } /*=============*/ Lib_myLog("On verifie si la vignette est fournie"); if ($_FILES["url_vignette"]["name"] != '') { /*=============*/ Lib_myLog("Telechargement de la vignette"); $vignette = Lib_nettoie($_FILES["url_vignette"]["name"]); $vignette = $id_galerie . '_min_' . $vignette; $ext = strrchr($vignette, '.'); if (is_uploaded_file($_FILES["url_vignette"]["tmp_name"])) { $tmp_vignette = $_FILES["url_vignette"]["tmp_name"]; rename($tmp_vignette, '../../img_ftp/' . $vignette); if (file_exists('../../img_ftp/' . $vignette) && $vignette != '') { chmod("../../img_ftp/" . $vignette, 0644); } // Redimensionnement, h=65, priorite h Lib_redimImage("../../img_ftp/" . $vignette, '', '65', 'w'); } } if ($_FILES["url_gde_image"]["name"] != '' && $_FILES["url_vignette"]["name"] == '') { /*=============*/ Lib_myLog("Vignette non fournie => on utilise l'image"); copy('../../img_ftp/' . $image, '../../img_ftp/' . $vignette); if (file_exists('../../img_ftp/' . $vignette) && $vignette != '') { chmod('../../img_ftp/' . $vignette, 0644); } // Redimensionnement, h=65, priorite h Lib_redimImage("../../img_ftp/{$vignette}", '', '65', 'w'); } //Fin des ajouts if (isset($image)) { $galerie->url_gde_image = $image; $galerie->url_vignette = $vignette; $galerie->UPD(); } else { $galerie->DEL(); } }
function Arbo_Element_UPD($data_in = array()) { Lib_myLog("action: " . $data_in['action']); foreach ($GLOBALS['tab_globals'] as $global) { global ${$global}; } Lib_myLog("IN: ", $data_in); Lib_myLog("FILE: ", __FILE__); /*=============*/ Lib_myLog("Modification de l'article"); $article = Article_recuperer($data_in['id_article']); $article->titre_page = $data_in['titre_page']; // On met dans le titre le titre_page par défaut. Celui-ci sera changé à l'édition de l'article de toutes façons... $article->titre = $data_in['titre_page']; $article->lang = 'fr'; $article->etat = 'actif'; if ($_FILES["url_vignette"]["name"] != '') { //$valid = Lib_isValidFile($_FILES["url_vignette"]["name"], array("jpg", "jpeg", "png", "gif")); if ($_FILES["url_vignette"]['error'] == 1) { /*=============*/ Lib_myLog("Taille trop elevee"); $val = ini_get('upload_max_filesize'); $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})"; $article->url_vignette = ''; } else { if ($valid == 1) { /*=============*/ Lib_myLog("Fichier non autorise"); $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%']; } else { /*=============*/ Lib_myLog("Telechargement de la vignette"); $url_vignette = Lib_nettoie($_FILES["url_vignette"]["name"]); $url_vignette = $article->id_article . '_' . $url_vignette; // Si la vignette existait déjà, on la remplace... if (file_exists('../../img_ftp/' . $url_vignette)) { unlink('../../img_ftp/' . $url_vignette); } if (is_uploaded_file($_FILES["url_vignette"]["tmp_name"])) { $tmp_vignette = $_FILES["url_vignette"]["tmp_name"]; rename($tmp_vignette, '../../img_ftp/' . $url_vignette); chmod("../../img_ftp/{$url_vignette}", 0644); // Redimensionnement, w=483, priorite w // Lib_redimImage("../../img_ftp/$file", 483, '', 'w'); } $article->url_vignette = $url_vignette; } } } $article->UPD(); // On remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs Lib_writeCache('', "ARTICLES"); // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeCache('', "ARBO"); if (isset($data_in['code_arbo'])) { header("Location: http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/actions.php?action=Arbo_Accueil&code_arbo={$data_in['code_arbo']}"); } }
function SiteStatique_Image_ADD($data_in = array()) { Lib_myLog("action: " . $data_in['action']); foreach ($GLOBALS['tab_globals'] as $global) { global ${$global}; } Lib_myLog("IN: ", $data_in); Lib_myLog("FILE: ", __FILE__); /*=============*/ Lib_myLog("Recherche de la position la plus elevee du code {$data_in['code']}"); $args_images['id_pere'] = $data_in['id_pere']; $galerie = Galeries_chercher($args_images); $position = 0; foreach ($galerie as $image) { if ($image['position'] > $position) { $position = $image['position']; } } $position++; $timestamp = time(); /*=============*/ Lib_myLog("Renommage de l'image"); $image = Lib_nettoie($_FILES["url_gde_image"]["name"]); $ext = strrchr($image, '.'); $image = $data_in['id_pere'] . '_' . $image; $vignette = $data_in['id_pere'] . '_mini_' . $image; /*=============*/ Lib_myLog("image : {$image}"); // Si la vignette ou l'image existaient déjà, on les remplace... if (file_exists('../../img_ftp/' . $image)) { unlink('../../img_ftp/' . $image); } if (file_exists('../../img_ftp/' . $vignette)) { unlink('../../img_ftp/' . $vignette); } if (is_uploaded_file($_FILES["url_gde_image"]["tmp_name"])) { /*=============*/ Lib_myLog("deplacement de l'image au bon endroit"); $tmp_gde_image = $_FILES["url_gde_image"]["tmp_name"]; rename($tmp_gde_image, '../../img_ftp/' . $image); if (file_exists('../../img_ftp/' . $image) && $image != '') { chmod("../../img_ftp/{$image}", 0644); copy('../../img_ftp/' . $image, '../../img_ftp/' . $vignette); if (file_exists('../../img_ftp/' . $vignette) && $vignette != '') { chmod("../../img_ftp/{$vignette}", 0644); } } } //Redimensionnement if ($_FILES["url_gde_image"]["name"] != '') { /*=============*/ Lib_myLog("Redimensionnement de l'image"); $size1 = GetImageSize('../../img_ftp/' . $image); $src_w = $size1[0]; $src_h = $size1[1]; /*=============*/ Lib_myLog("Dimensions de l'image: w={$src_w} h={$src_h} "); $dst_h = "183"; $size1 = GetImageSize("../../img_ftp/{$image}"); $src_w = $size1[0]; $src_h = $size1[1]; if ($src_h > $dst_h) { $dst_w = round($src_w * ($dst_h / $src_h)); $save_h = $dst_h; $save_w = $dst_w; $dst_img = ImageCreateTrueColor($dst_w, $dst_h); /*=============*/ Lib_myLog("w : {$dst_w}, h : {$dst_h}"); if (eregi("jpg", $ext) || eregi("jpeg", $ext)) { $src_img = imagecreatefromjpeg("../../img_ftp/{$image}"); } elseif (eregi("gif", $ext)) { $src_img = imagecreatefromgif("../../img_ftp/{$image}"); } elseif (eregi("png", $ext)) { $src_img = imagecreatefrompng("../../img_ftp/{$image}"); } ImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $dst_w, $dst_h, $src_w, $src_h); ImageJpeg($dst_img, "../../img_ftp/{$image}"); } else { $save_h = $src_h; $save_w = $src_w; } $galerie = new Galerie(); $galerie->largeur_image = $dst_w; $galerie->hauteur_image = $dst_h; /*=============*/ Lib_myLog("Creation de la vignette"); $dst_h = "100"; $size1 = GetImageSize("../../img_ftp/{$image}"); $src_w = $size1[0]; $src_h = $size1[1]; if ($src_h > $dst_h) { $dst_w = round($src_w * ($dst_h / $src_h)); $dst_img = ImageCreateTrueColor($dst_w, $dst_h); /*=============*/ Lib_myLog("w : {$dst_w}, h : {$dst_h}"); if (eregi("jpg", $ext) || eregi("jpeg", $ext)) { $src_img = imagecreatefromjpeg("../../img_ftp/{$image}"); } elseif (eregi("gif", $ext)) { $src_img = imagecreatefromgif("../../img_ftp/{$image}"); } elseif (eregi("png", $ext)) { $src_img = imagecreatefrompng("../../img_ftp/{$image}"); } ImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $dst_w, $dst_h, $src_w, $src_h); ImageJpeg($dst_img, "../../img_ftp/{$vignette}"); } } //Fin des ajouts //Le fait de rechercher par code permet de recuperer l'article dans toutes les langues. //Chaque version de l'article aura sa propre galerie. $args['code'] = $data_in['code']; $liste_articles = Articles_chercher($args); foreach ($liste_articles as $article) { $galerie->code = $data_in['code']; $galerie->id_pere = $article['id_article']; $galerie->type_pere = 'articles'; $galerie->position = $position; $galerie->url_gde_image = $image; $galerie->url_vignette = $vignette; $galerie->largeur_vignette = $save_w; $galerie->hauteur_vignette = $save_h; $galerie->ADD(); } // On remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs Lib_writeCache('', "GALERIES"); $data_in['action'] = 'Galerie_Iframe'; call_user_func('Galerie_Iframe', $data_in); }
function ExecActions($action) { /*=============*/ Lib_myLog("action: ", $action); // On recupere la configuration issue de conf.php global $lang, $MSG, $secure; // On recupere tous les objet contenant les donnees global $data_in, $data_out, $data_srv, $session; // Initialization des variables global $message; switch ($action) { case "Admin_Utilisateurs": /*=============*/ Lib_myLog("Recuperation de la liste des utilisateurs de la base"); $data_out['tab_groupes'] = Groupes_chercher('*'); $data_out['liste_utilisateurs'] = Utilisateurs_chercher('*'); // On renseigne l'indicateur "code" pour piloter l'affichage du menu javascript $data_out['code'] = 'acces_client'; $data_out['page'] = 'acces.php'; break; case "Utilisateurs_ADD": $F5 = Lib_checkF5($session, $data_in['timestamp']); $continue = $F5 ? false : true; // On intialise une pseudo-transaction qui nous permettre de stocker tous les objets rajoutés à la base // pour pouvoir les supprimer si nécessaire $transaction = new Collection(); if ($continue) { $utilisateur = Utilisateur_recuperer($data_in['nom_utilisateur']); if ($continue && $utilisateur->id_utilisateur) { /*=============*/ Lib_myLog("Le code d'utilisateur existe deja"); $data_out['message_ko'] = 'Ce code utilisateur existe déjà'; $continue = false; } if ($continue) { /*=============*/ Lib_myLog("Creation nouvel objet Utilisateur"); $utilisateur = new Utilisateur(); $utilisateur->societe = $data_in['societe']; $utilisateur->nom_personne = $data_in['nom_personne']; $utilisateur->prenom_personne = $data_in['prenom_personne']; $utilisateur->email = $data_in['email']; $utilisateur->nom_utilisateur = $data_in['nom_utilisateur']; $utilisateur->nom_groupe = 'utilisateur'; $utilisateur->password = $data_in['password']; $utilisateur->nb_connect = 10; $utilisateur->etat = 'actif'; $id_utilisateur = $utilisateur->ADD(); /*=============*/ Lib_myLog("Creation d'un repertoire pour l'utilisateur"); mkdir("../../documents/{$id_utilisateur}"); chmod("../../documents/{$id_utilisateur}", 0705); // On créé un fichier d'index pour que personne ne puisse voir directement le contenu du répertoire $file = "../../documents/{$id_utilisateur}/index.php"; $index = fopen($file, "w"); fputs($index, "<?"); fputs($index, "header('HTTP/1.0 404 Not Found');"); fputs($index, "?>"); fclose($index); } } if ($continue) { $data_out['message_ok'] = "L'accés a bien été rajouté"; ExecActions('Admin_Utilisateurs'); } else { if ($F5) { /*=============*/ Lib_myLog("Tentative de F5!"); $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%']; ExecActions('Admin_Utilisateurs'); } else { /*=============*/ Lib_myLog("Annulation de l'ajout suite a une erreur"); if (!isset($data_out['message_ko'])) { $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Mysql%%']; } // On ré-affiche les données dans la page de saisie... $data_out = array_merge($data_out, $data_in); ExecActions('Admin_Utilisateurs'); } } break; case "Utilisateurs_UPD": /*=============*/ Lib_myLog("Mise a jour de l'utilisateur"); $utilisateur = Utilisateur_recuperer($data_in['id_utilisateur']); $utilisateur->societe = $data_in['societe']; $utilisateur->nom_personne = $data_in['nom_personne']; $utilisateur->prenom_personne = $data_in['prenom_personne']; $utilisateur->email = $data_in['email']; $utilisateur->nom_utilisateur = $data_in['nom_utilisateur']; $utilisateur->password = $data_in['password']; $utilisateur->UPD(); $data_out['message_ok'] = "L'utilisateur a bien été mis à jour"; ExecActions("Admin_Utilisateurs"); break; case "Utilisateurs_DEL": /*=============*/ Lib_myLog("Suppression de l'utilisateur avec l'identifiant " . $data_in['id_utilisateur'] . " de la base"); $utilisateur = Utilisateur_recuperer($data_in['id_utilisateur']); $utilisateur->DEL(); /*=============*/ Lib_myLog("Suppression du repertoire de l'utilisateur"); deldir("../../documents/" . $utilisateur->id_utilisateur); $data_out['message_ok'] = "L'utilisateur a bien été été supprimé"; ExecActions("Admin_Utilisateurs"); break; case "POPUP_Utilisateur_UPD": // Action utilisée pour la saisie semi-automatique et appelée par la fonction AJAX /*=============*/ Lib_myLog("Recuperation de l'utilisateur"); $data_out = Utilisateurs_chercher('', $data_in['id_utilisateur']); $data_out['tab_groupes'] = Groupes_chercher('*'); $data_out['page'] = 'acces_popup_utilisateur_upd.php'; break; case "Documents_Accueil": /*=============*/ Lib_myLog("Recuperation de l'arborescence"); $data_out['liste_fils'] = Docs_construire($data_in['id_utilisateur']); $utilisateur = Utilisateur_recuperer($data_in['id_utilisateur']); $data_out['nom_personne'] = $utilisateur->nom_personne; $data_out['prenom_personne'] = $utilisateur->prenom_personne; $data_out['id_utilisateur'] = $data_in['id_utilisateur']; // On positionne par défaut les id_pere et les id_grand_pere $data_out['id_pere'] = 0; $data_out['id_fils'] = 0; if (isset($data_in['id_doc'])) { /*=============*/ Lib_myLog("Recuperation de l'ascendance"); $doc = Doc_recuperer($data_in['id_doc']); /*=============*/ Lib_myLog("Famille: " . $doc->famille); $tab_famille = explode('-', $doc->famille); /*=============*/ Lib_myLog("Nb elements: " . count($tab_famille)); if (count($tab_famille) == 2) { $data_out['id_pere'] = $tab_famille[0]; } if (count($tab_famille) == 3) { $data_out['id_pere'] = $tab_famille[0]; $data_out['id_fils'] = $tab_famille[1]; } } // On renseigne l'indicateur "code" pour piloter l'affichage du menu javascript $data_out['code'] = 'acces_client'; $data_out['page'] = 'documents.php'; break; case "Element_Bouger": $tab_positions = explode("|", $data_in['tab_list']); $i = 1; foreach ($tab_positions as $position) { $projet = Doc_recuperer($position); $projet->ordre = $i; $projet->UPD(); $i++; } $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%']; ExecActions('Documents_Accueil'); break; case "Element_DEL": /*=============*/ Lib_myLog("Recuperation de l'element"); $obj_element_initial = Doc_recuperer($data_in['id_doc']); $id_utilisateur = $obj_element_initial->id_utilisateur; $data_out['message_ok'] = "Le dossier a bien été supprimé"; if ($obj_element_initial->type_pere == 'document') { $url = $obj_element_initial->intitule_canonize; /*=============*/ Lib_myLog("Suppression physique du document"); unlink("../../documents/{$id_utilisateur}/{$url}"); $data_out['message_ok'] = "Le document a bien été supprimé"; } /*=============*/ Lib_myLog("Retablissement de l'ordre sans coupure"); $args_elements['famille'] = $obj_element_initial->famille; $args_elements['sup_ordre'] = $obj_element_initial->ordre; $args_elements['id_utilisateur'] = $obj_element_initial->id_utilisateur; $elements = Docs_chercher($args_elements); foreach ($elements as $element) { $obj_element = Doc_recuperer($element['id_doc']); $obj_element->ordre--; $obj_element->UPD(); } $obj_element_initial->DEL(); $data_in['id_utilisateur'] = $id_utilisateur; ExecActions('Documents_Accueil'); break; case "Categorie_ADD": $args_arbos['famille'] = ''; if ($data_in['id_pere'] != '') { /*=============*/ Lib_myLog("Il s'agit d'un ajout de sous-element !"); $arbo_pere = Doc_recuperer($data_in['id_pere']); $args_arbos['famille'] = $arbo_pere->famille . $arbo_pere->id_pere . '-'; } /*=============*/ Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element"); $arbos = Docs_chercher($args_arbos); $ordre = count($arbos); $ordre++; /*=============*/ Lib_myLog("Rajout d'un nouvel element"); $arbo = new Doc(); $arbo->id_utilisateur = $data_in['id_utilisateur']; if ($data_in['id_pere'] != '') { $arbo->famille .= $arbo_pere->famille . $arbo_pere->id_pere . '-'; } $arbo->type_pere = 'arbo'; $arbo->ordre = $ordre; $arbo->etat = 'actif'; $arbo->intitule = $data_in['intitule']; $id_doc = $arbo->ADD(); // On positionne dans le "data_in" "id_doc" pour piloter l'affichage dans "Documents_Accueil" $data_in['id_doc'] = $id_doc; $data_out['message_ok'] = "Le dossier a bien été rajouté"; $arbo->id_pere = $id_doc; $arbo->UPD(); ExecActions('Documents_Accueil'); break; case "Categorie_UPD": /*=============*/ Lib_myLog("Modification de l'intitule d'un element"); $arbo = Doc_recuperer($data_in['id_doc']); $arbo->intitule = $data_in['intitule']; $arbo->UPD(); $data_out['message_ok'] = "Le nom du dossier a bien été modifié"; ExecActions('Documents_Accueil'); break; case "AJAX_RechercherSousCategories": $data_out['liste_sous_categories'] = array(); /*=============*/ Lib_myLog("Recuperation du pere"); $arbo_pere = Doc_recuperer($data_in['id_pere']); $args_sous['type_pere'] = 'arbo'; $args_sous['famille'] = $arbo_pere->famille . $arbo_pere->id_pere . '-'; $data_out['liste_sous_categories'] = Docs_chercher($args_sous); $cle = 'ordre'; $val = usort($data_out['liste_sous_categories'], "Lib_compareUp"); $data_out['page'] = 'ajax_sous_categories.php'; break; case "Fichier_ADD": // DEBUT UBR // Je déclare en global les variables suivante intialisées lors du chargement des bibliothèques UBR global $TEMP_DIR, $_INI; //Declare local values $_XML_DATA = array(); // Array of xml data read from the upload_id.redirect file $_CONFIG_DATA = array(); // Array of config data read from the $_XML_DATA array $_POST_DATA = array(); // Array of posted data read from the $_XML_DATA array $_FILE_DATA = array(); // Array of 'FileInfo' objects read from the $_XML_DATA array $_FILE_DATA_TABLE = ''; // String used to store file info results nested between <tr> tags $_FILE_DATA_EMAIL = ''; // String used to store file info results $xml_parser = new XML_Parser(); // XML parser $xml_parser->setXMLFile($TEMP_DIR, $_GET['upload_id']); // Set upload_id.redirect file $xml_parser->setXMLFileDelete($_INI['delete_redirect_file']); // Delete upload_id.redirect file when finished parsing $xml_parser->parseFeed(); // Parse upload_id.redirect file // Display message if the XML parser encountered an error if ($xml_parser->getError()) { kak($xml_parser->getErrorMsg(), 1, __LINE__, $_INI['path_to_css_file']); } $_XML_DATA = $xml_parser->getXMLData(); // Get xml data from the xml parser $_CONFIG_DATA = getConfigData($_XML_DATA); // Get config data from the xml data $_POST_DATA = getPostData($_XML_DATA); // Get post data from the xml data $_FILE_DATA = getFileData($_XML_DATA); // Get file data from the xml data /*=============*/ Lib_myLog("UBR POST DATA :", $_POST_DATA); // On remet dans data_in les valeurs transmises par UBR foreach ($_POST_DATA as $key => $value) { $data_in[$key] = $value; } // On récupère les fichiers téléchargés for ($i = 0; $i < count($_FILE_DATA); $i++) { $file_slot = $_FILE_DATA[$i]->getFileInfo('slot'); $file_name = $_FILE_DATA[$i]->getFileInfo('name'); $file_size = $_FILE_DATA[$i]->getFileInfo('size'); $file_type = $_FILE_DATA[$i]->getFileInfo('type'); $file_status = $_FILE_DATA[$i]->getFileInfo('status'); $file_status_desc = $_FILE_DATA[$i]->getFileInfo('status_desc'); /*=============*/ Lib_myLog("UBR Fichier telecharge : file_slot: {$file_slot}, file_name: {$file_name}, file_size: {$file_size}, file_type: {$file_type}, file_status: {$file_status}, file_status_desc: {$file_status_desc}"); } // FIN UBR $F5 = Lib_checkF5($session, $data_in['timestamp']); $continue = $F5 ? false : true; if ($continue) { $args_arbos['famille'] = ''; if ($data_in['id_pere'] != 0) { $arbo = Doc_recuperer($data_in['id_pere']); $args_arbos['famille'] = $arbo->famille . $arbo->id_pere . '-'; $args_arbo['id_doc'] = $data_in['id_pere']; $id_categorie = $data_in['id_pere']; } // Si l'id_fils est positionné, il "surclasse" l'id_pere! if (isset($data_in['id_fils']) && $data_in['id_fils'] != 0) { $arbo = Doc_recuperer($data_in['id_fils']); $args_arbos['famille'] = $arbo->famille . $arbo->id_pere . '-'; $args_arbo['id_doc'] = $data_in['id_fils']; } /*=============*/ Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element dans l'arbo"); $arbos = Docs_chercher($args_arbos); $ordre = count($arbos); $ordre++; /*=============*/ Lib_myLog("On recupere le dossier dont va dependre le document"); $arbo = Docs_chercher($args_arbo); if ($continue && $file_name != '') { /*=============*/ Lib_myLog("Recuperation du fichier"); $nom_fichier = Lib_nettoie($file_name); /*=============*/ Lib_myLog("Nom du fichier : {$nom_fichier}"); // On rajoute le document à ce niveau pour disposer de l'id_doc et le mettre dans le nom du document /*=============*/ Lib_myLog("Rajout du document dans l'arbo"); $new_arbo = new Doc(); $new_arbo->id_utilisateur = $data_in['id_utilisateur']; $new_arbo->famille .= $arbo['famille'] . $arbo['id_pere'] . '-'; $new_arbo->type_pere = 'document'; $new_arbo->ordre = $ordre; $new_arbo->etat = 'actif'; $new_arbo->intitule = $data_in['intitule']; $new_arbo->intitule_canonize = $nom_fichier; $id_doc = $new_arbo->ADD(); $data_in['id_doc'] = $id_doc; $nom_fichier = $id_doc . '_' . $nom_fichier; $doc = Doc_recuperer($id_doc); $doc->intitule_canonize = $nom_fichier; $doc->UPD(); // On met le fichier récupéré avec UBR au bon endroit rename("../ubr/ubr_uploads/{$file_name}", "../../documents/{$data_in['id_utilisateur']}/{$nom_fichier}"); $data_out['message_ok'] = "Le document a bien été rajouté"; } } if ($continue) { ExecActions('Documents_Accueil'); } else { if ($F5) { /*=============*/ Lib_myLog("Tentative de F5!"); $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%']; ExecActions('Documents_Accueil'); } else { ExecActions('Documents_Accueil'); } } break; case "Fichier_UPD": /*=============*/ Lib_myLog("Modification de l'intitule du fichier"); $arbo = Doc_recuperer($data_in['id_doc']); $arbo->intitule = $data_in['intitule']; $arbo->UPD(); $data_out['message_ok'] = "La description du document a bien été modifiée"; ExecActions('Documents_Accueil'); break; case "Fichier_Download": $doc = Doc_recuperer($data_in['id_doc']); $nom_fichier = $doc->intitule_canonize; $file = "../../documents/" . $doc->id_utilisateur . "/" . $doc->intitule_canonize; $size = filesize($file); header("Content-Type: application/octet-stream"); header("Content-Length: {$size}"); header("Content-Disposition: attachment; filename={$nom_fichier}"); header("Content-Transfer-Encoding: binary"); $fh = fopen("{$file}", "r"); fpassthru($fh); break; default: ExecActions('Admin_Utilisateurs'); break; } }
/** Cette fonction est un grand switch qui sert à renvoyer vers une action donnée en paramètre. @param Action : Action à accomplir… */ function ExecActions($action) { /*=============*/ Lib_myLog("action: ", $action); // On recupere la configuration issue de conf.php global $lang, $taille_ecran, $MSG, $secure, $cle, $config; // On recupere tous les objet contenant les donnees global $data_in, $data_out, $data_srv, $session; // Initialization des variables global $message, $tache; switch ($action) { /** * - Cas Site_Accueil : * . * Le cas (par défaut) Site_Accueil recherche tous les taches, s'occupent des critères de tri, et renvoie vers la vue (page) Site_Accueil.php.... */ case "Accueil": /*=============*/ Lib_myLog("Recuperation de l'arborescence"); $data_in['code_arbo'] = 'suivi'; $data_out['liste_fils'] = Arbo_construire($data_in['code_arbo'], 'tache'); if (isset($data_in['id_arbo_pere'])) { $data_out['id_arbo_pere'] = $data_in['id_arbo_pere']; } if (!isset($data_in['type_affichage'])) { $data_in['type_affichage'] = 'toutes'; } $data_out['type_affichage'] = $data_in['type_affichage']; $data_out['code_arbo'] = $data_in['code_arbo']; $data_out['menu_gauche'] = 'arbo'; $data_out['page'] = 'suivi.php'; break; case "Element_Etat": $arbo = Arbo_recuperer($data_in['id_arbo']); $arbo->etat = $arbo->etat == 'actif' ? $arbo->etat = 'inactif' : ($arbo->etat = 'actif'); $arbo->UPD(); $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%']; // On met à jour l'état de l'tache associé à l'élément de l'arbo sélectionné if ($arbo->id_pere != 0 && $arbo->type_pere == 'tache') { $tache = Tache_recuperer($arbo->id_pere); $tache->etat = $arbo->etat; $tache->UPD(); } // On remet à 0 le fichier contenant le "cache" des taches pour l'affichage des blocs Lib_writeData('', "ARBO"); //Enregistrement d'un zip par dossier racine contenant les fichiers $tab_ids_arbos = array($data_in['id_arbo'] => $data_in['id_arbo']); // Arbo_zipDocuments('arbo_docs', $tab_ids_arbos); ExecActions('Accueil'); break; case "Element_Bouger": $tab_positions = explode("|", $data_in['tab_list']); $i = 1; $tab_ids_arbos = array(); foreach ($tab_positions as $position) { $projet = Arbo_recuperer($position); if ($projet->ordre != $i) { $tab_ids_arbos[$projet->id_arbo] = $projet->id_arbo; } $projet->ordre = $i; $projet->UPD(); $i++; } $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%']; // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeData('', "ARBO"); //Enregistrement d'un zip par dossier racine contenant les fichiers // Arbo_zipDocuments('arbo_docs', $tab_ids_arbos); ExecActions('Accueil'); break; case "Element_DEL": /*=============*/ Lib_myLog("Recuperation de l'element"); if ($data_in['id_arbo_pere'] != 0) { /*=============*/ Lib_myLog("Suppression de de l'objet de type arbo"); $obj_element_initial = Arbo_recuperer($data_in['id_arbo']); $data_out['message_ok'] = $MSG['fr']['%%arbo_DEL%%']; } if ($data_in['id_arbo_pere'] == 0) { /*=============*/ Lib_myLog("Suppression des taches dans toutes les langues"); $obj_element_initial = Arbo_recuperer_par_element($data_in['id_pere'], $data_in['type_pere'], $data_in['code_arbo']); // Le même tache peut être en pluisieurs langues. On les regroupe grâce au code tache $args_taches['code'] = 'tache-' . $obj_element_initial->id_pere; $liste_taches = Taches_chercher($args_taches); foreach ($liste_taches as $art) { $tache = Tache_recuperer($art['id_tache']); $tache->DEL(); } $data_out['message_ok'] = $MSG['fr']['%%page_DEL%%']; } /*=============*/ Lib_myLog("Retablissement de l'ordre sans coupure"); $args_elements['famille'] = $obj_element_initial->famille; $args_elements['sup_ordre'] = $obj_element_initial->ordre; $args_elements['code_arbo'] = $data_in['code_arbo']; $elements = Arbos_chercher($args_elements); foreach ($elements as $element) { $obj_element = Arbo_recuperer($element['id_arbo']); $obj_element->ordre--; $obj_element->UPD(); } $obj_element_initial->DEL(); // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeData('', "ARBO"); //Enregistrement d'un zip par dossier racine contenant les fichiers $tab_ids_arbos = array($data_in['id_arbo'] => $data_in['id_arbo']); // Arbo_zipDocuments('arbo_docs',$tab_ids_arbos); ExecActions('Accueil'); break; case "Categorie_ADD": $args_arbos['code_arbo'] = $data_in['code_arbo']; $args_arbos['famille'] = ''; if ($data_in['id_arbo_pere'] != '') { /*=============*/ Lib_myLog("Il s'agit d'un ajout de sous-element !"); $arbo_pere = Arbo_recuperer($data_in['id_arbo_pere']); $args_arbos['famille'] = $arbo_pere->famille . $arbo_pere->id_arbo . '-'; } /*=============*/ Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element"); $arbos = Arbos_chercher($args_arbos); $ordre = count($arbos); $ordre++; /*=============*/ Lib_myLog("Rajout d'un nouvel element"); $arbo = new Arbo(); if ($data_in['id_arbo_pere'] != '') { $arbo->famille .= $arbo_pere->famille . $arbo_pere->id_arbo . '-'; } $arbo->code_arbo = $data_in['code_arbo']; $arbo->type_pere = 'arbo'; $arbo->ordre = $ordre; $arbo->etat = 'inactif'; $arbo->intitule = $data_in['intitule']; $id_arbo = $arbo->ADD(); $data_out['message_ok'] = $MSG['fr']['%%arbo_ADD%%']; $arbo->id_arbo_pere = $data_in['id_arbo_pere'] != '' ? $data_in['id_arbo_pere'] : $id_arbo; /*=============*/ Lib_myLog("Creation du nouvel tache associe a la categorie"); $tache = new Tache(); $tache->titre_page = $data_in['intitule']; $tache->titre = $data_in['intitule']; $tache->lang = 'fr'; $tache->etat = 'actif'; $id_tache = $tache->ADD(); $tache = Tache_recuperer($id_tache); // On définit un code pour pouvoir retrouver le même tache en plusieurs langues $tache->code = 'tache-' . $id_tache; $tache->UPD(); foreach ($GLOBALS['LANGUES'] as $langue) { /*=============*/ Lib_myLog("Ajout de l'tache en {$langue}"); $tache->lang = $langue; $tache->ADD(); } $arbo->id_pere = $id_tache; $arbo->type_pere = 'tache'; $arbo->UPD(); // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeData('', "ARBO"); //Enregistrement d'un zip par dossier racine contenant les fichiers $tab_ids_arbos = array($id_arbo => $id_arbo); // Arbo_zipDocuments('arbo_docs', $tab_ids_arbos); ExecActions('Accueil'); break; case "Categorie_UPD": /*=============*/ Lib_myLog("Modification de l'intitule d'un element"); $arbo = Arbo_recuperer($data_in['id_arbo']); $arbo->intitule = $data_in['intitule']; $arbo->UPD(); /*=============*/ Lib_myLog("Modification de l'tache lie a l'element"); if ($arbo->id_pere) { $tache = Tache_recuperer($arbo->id_pere); $tache->titre = $data_in['intitule']; $tache->UPD(); } // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeData('', "ARBO"); //Enregistrement d'un zip par dossier racine contenant les fichiers $tab_ids_arbos = array($data_in['id_arbo'] => $data_in['id_arbo']); // Arbo_zipDocuments('arbo_docs',$tab_ids_arbos); $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%']; ExecActions('Accueil'); break; case "SELECT_SsCategories": $data_out['liste_sous_categories'] = array(); /*=============*/ Lib_myLog("Recuperation du pere"); $arbo_pere = Arbo_recuperer($data_in['id_arbo']); $args_sous['not_id_arbo_pere'] = 0; $args_sous['famille'] = $arbo_pere->famille . $arbo_pere->id_arbo . '-'; $data_out['liste_sous_categories'] = Arbos_chercher($args_sous); $cle = 'ordre'; $val = usort($data_out['liste_sous_categories'], "Lib_compareUp"); $data_out['page'] = 'arbo_select_ss_categories.php'; break; case "SELECT_SsSsCategories": $data_out['liste_sous_categories'] = array(); /*=============*/ Lib_myLog("Recuperation du pere"); $arbo_pere = Arbo_recuperer($data_in['id_arbo']); $args_sous['not_id_arbo_pere'] = 0; $args_sous['famille'] = $arbo_pere->famille . $arbo_pere->id_arbo . '-'; $data_out['liste_sous_categories'] = Arbos_chercher($args_sous); $cle = 'ordre'; $val = usort($data_out['liste_sous_categories'], "Lib_compareUp"); $data_out['page'] = 'arbo_select_ss_ss_categories.php'; break; case "AJAX_ArboUPD": $tab_arbo = json_decode($data_in['arbo_json'], true); /*=============*/ Lib_myLog("Arbo recuperee"); Arbo_recalcul($tab_arbo); break; case "Tache_ADD": $F5 = Lib_checkF5($session, $data_in['timestamp']); $continue = $F5 ? false : true; if ($continue) { $args_arbos['code_arbo'] = $data_in['code_arbo']; $args_arbos['famille'] = ''; if ($data_in['id_arbo_pere'] != 0) { $arbo = Arbo_recuperer($data_in['id_arbo_pere']); $args_arbos['famille'] = $arbo->famille . $arbo->id_arbo . '-'; $args_arbo['id_arbo'] = $data_in['id_arbo_pere']; $id_categorie = $data_in['id_arbo_pere']; } // Si un id_arbo_fils est positionné, il "surclasse" l'id_pere! if (isset($data_in['id_arbo_fils']) && $data_in['id_arbo_fils'] != 0) { $arbo = Arbo_recuperer($data_in['id_arbo_fils']); $args_arbos['famille'] = $arbo->famille . $arbo->id_arbo . '-'; $args_arbo['id_arbo'] = $data_in['id_arbo_fils']; } if (isset($data_in['id_arbo_petit_fils']) && $data_in['id_arbo_petit_fils'] != 0) { $arbo = Arbo_recuperer($data_in['id_arbo_petit_fils']); $args_arbos['famille'] = $arbo->famille . $arbo->id_arbo . '-'; $args_arbo['id_arbo'] = $data_in['id_arbo_petit_fils']; } /*=============*/ Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element dans l'arbo"); $arbos = Arbos_chercher($args_arbos); $ordre = count($arbos); $ordre++; /*=============*/ Lib_myLog("On recupere la categorie dont va dependre l'tache"); $arbo = Arbos_chercher($args_arbo); /*=============*/ Lib_myLog("Creation du nouvel tache"); $tache = new Tache(); $tache->categorie = $data_in['categorie']; $tache->titre_page = $data_in['titre_page']; // On met dans le titre le titre_page par défaut. Celui-ci sera changé à l'édition de l'tache de toutes façons... $tache->titre = $data_in['titre_page']; for ($i = 1; $i <= 20; $i++) { $tache->{'data' . $i} = $data_in['data' . $i]; } $tache->date = $data_in['date']; $tache->texte = $data_in['texte']; $tache->lang = 'fr'; $tache->etat = 'inactif'; $id_tache = $tache->ADD(); $tache = Tache_recuperer($id_tache); for ($i = 1; $i <= 5; $i++) { if ($_FILES["fichier" . $i]["name"] != '') { if ($_FILES["fichier" . $i]['error'] == 1) { /*=============*/ Lib_myLog("Taille trop elevee"); $val = ini_get('upload_max_filesize'); $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})"; $tache->{'fichier' . $i} = ''; } else { if ($valid == 1) { /*=============*/ Lib_myLog("Fichier non autorise"); $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%']; } else { /*=============*/ Lib_myLog("Telechargement du fichier"); $fichier = Lib_nettoie($_FILES["fichier" . $i]["name"]); $fichier = $tache->id_tache . '_' . $fichier; if (file_exists('../file_ftp/documents_suivi/' . $fichier)) { unlink('../file_ftp/documents_suivi/' . $fichier); } if (is_uploaded_file($_FILES["fichier" . $i]["tmp_name"])) { $tmp_fichier = $_FILES["fichier" . $i]["tmp_name"]; rename($tmp_fichier, '../file_ftp/documents_suivi/' . $fichier); chmod("../file_ftp/documents_suivi/{$fichier}", 0644); } $tache->{'fichier' . $i} = $fichier; } } } } // On définit un code pour pouvoir retrouver le même tache en plusieurs langues $tache->code = 'tache-' . $id_tache; $tache->UPD(); foreach ($GLOBALS['LANGUES'] as $langue) { /*=============*/ Lib_myLog("Ajout de l'tache en {$langue}"); $tache->lang = $langue; $tache->ADD(); } /*=============*/ Lib_myLog("Rajout du nouvel tache dans l'arbo"); $new_arbo = new Arbo(); $new_arbo->code_arbo = $data_in['code_arbo']; $new_arbo->id_pere = $id_tache; $new_arbo->famille .= $arbo['famille'] . $arbo['id_arbo'] . '-'; $new_arbo->type_pere = 'tache'; $new_arbo->ordre = $ordre; $new_arbo->intitule = $data_in['titre_page']; $new_arbo->etat = 'inactif'; $id_arbo = $new_arbo->ADD(); // On remet à 0 le fichier contenant le "cache" des taches pour l'affichage des blocs Lib_writeData('', "TACHES"); // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeData('', "ARBO"); //Enregistrement d'un zip par dossier racine contenant les fichiers $tab_ids_arbos = array($id_arbo => $id_arbo); // Arbo_zipDocuments('arbo_docs',$tab_ids_arbos); } if ($continue) { $data_in['id_tache'] = $id_tache; if (isset($data_in['code_arbo'])) { header("Location: http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/actions.php?action=Accueil&code_arbo={$data_in['code_arbo']}"); } else { ExecActions('Site_Apercu'); } } else { if ($F5) { /*=============*/ Lib_myLog("Tentative de F5!"); $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%']; ExecActions('Site_Apercu'); } else { ExecActions('Site_Apercu'); } } break; case "POPUP_TacheUPD": $data_out['tache'] = Taches_chercher(array('id_tache' => $data_in['id_tache'])); $data_out['code_arbo'] = $data_in['code_arbo']; $data_out['page'] = 'popup_tache_upd.php'; break; case "POPUP_CategorieUPD": $data_out = Arbos_chercher(array('id_arbo' => $data_in['id_arbo'])); $data_out['code_arbo'] = $data_in['code_arbo']; $data_out['page'] = 'popup_arbo_categorie_upd.php'; break; case "Tache_UPD": /*=============*/ Lib_myLog("Modification de l'tache"); $tache = Tache_recuperer($data_in['id_tache']); $tache->categorie = $data_in['categorie']; $tache->titre_page = $data_in['titre_page']; // On met dans le titre le titre_page par défaut. Celui-ci sera changé à l'édition de l'tache de toutes façons... $tache->titre = $data_in['titre_page']; for ($i = 1; $i <= 20; $i++) { $tache->{'data' . $i} = $data_in['data' . $i]; } $tache->date = $data_in['date']; $tache->texte = $data_in['texte']; $tache->lang = 'fr'; $tache->etat = 'inactif'; //Si la date de mise en production est positionnee, alors la tâche est terminée if ($tache->data4 != '') { $tache->etat = 'actif'; } for ($i = 1; $i <= 5; $i++) { if ($data_in['sup_fichier' . $i] == 1) { if (file_exists('../file_ftp/documents_suivi/' . $tache->{'fichier' . $i})) { unlink('../file_ftp/documents_suivi/' . $tache->{'fichier' . $i}); } $tache->{'fichier' . $i} = ''; } if ($_FILES["fichier" . $i]["name"] != '') { if ($_FILES["fichier" . $i]['error'] == 1) { /*=============*/ Lib_myLog("Taille trop elevee"); $val = ini_get('upload_max_filesize'); $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})"; $tache->{'fichier' . $i} = ''; } else { if ($valid == 1) { /*=============*/ Lib_myLog("Fichier non autorise"); $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%']; } else { /*=============*/ Lib_myLog("Telechargement du fichier"); $fichier = Lib_nettoie($_FILES["fichier" . $i]["name"]); $fichier = $tache->id_tache . '_' . $fichier; if (file_exists('../file_ftp/documents_suivi/' . $fichier)) { unlink('../file_ftp/documents_suivi/' . $fichier); } if (is_uploaded_file($_FILES["fichier" . $i]["tmp_name"])) { $tmp_fichier = $_FILES["fichier" . $i]["tmp_name"]; rename($tmp_fichier, '../file_ftp/documents_suivi/' . $fichier); chmod("../file_ftp/documents_suivi/{$fichier}", 0644); } $tache->{'fichier' . $i} = $fichier; } } } } $tache->UPD(); // On remet à 0 le fichier contenant le "cache" des taches pour l'affichage des blocs Lib_writeData('', "TACHES"); // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeData('', "ARBO"); //Enregistrement d'un zip par dossier racine contenant les fichiers $arbo = Arbo_recuperer_par_element($data_in['id_tache'], 'tache', 'arbo_docs'); $tab_ids_arbos = array($arbo->id_arbo => $arbo->id_arbo); // Arbo_zipDocuments('arbo_docs',$tab_ids_arbos); if (isset($data_in['code_arbo'])) { header("Location: http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/actions.php?action=Accueil&code_arbo={$data_in['code_arbo']}"); } break; default: ExecActions('Accueil'); break; } }