/** 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, $article; switch ($action) { /** * - Cas Site_Accueil : * . * Le cas (par défaut) Site_Accueil recherche tous les articles, s'occupent des critères de tri, et renvoie vers la vue (page) Site_Accueil.php.... */ case "Site_Accueil": /*=============*/ Lib_myLog("Recuperation de l'arborescence"); $data_out['liste_fils'] = Arbo_construire(); $data_out['page'] = 'annonces_gestion.php'; break; default: ExecActions('Site_Accueil'); break; } }
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, $fiche; //Cles tri global $cle1, $cle2; // Si on a un data_in['lang'] qui arrive, on positionne la langue dans la session if (isset($data_in['lang'])) { $_SESSION['lang'] = $data_in['lang']; } // Récupération de la langue à partir de la session $lang = isset($_SESSION['lang']) ? $_SESSION['lang'] : 'fr'; switch ($action) { //Fusion des news et des articles case "NewsArticles_Fusion": //On renomme l'ancienne table en articles_date //On cree la nouvelle table Articles avec le CREATE TABLE de article.inc.php //SQL : On migre les infos de l'ancienne table des articles dans la nouvelle /* INSERT INTO ofj3_articles (id_article, id_newsletter, code, lang, position_une, texte, etat, texte_intro, titre, meta_titre, meta_description, meta_mots_clefs, meta_url, titre_canonize, url_vignette, url_image2, categorie, titre_data1, data1, titre_data2, data2, titre_data3, data3, titre_data4, data4, titre_data5, data5, titre_data6, data6, date_add, date_upd, info_article) SELECT id_article, id_newsletter, code, lang, position_une, texte, etat, texte_intro, titre, meta_titre, meta_description, meta_mots_clefs, meta_url, titre_canonize, url_vignette, url_image2, categorie, titre_data1, data1, titre_data2, data2, titre_data3, data3, titre_data4, data4, titre_data5, data5, titre_data6, data6, date_add, date_upd, info_article FROM ofj3_articles_20140616 WHERE 1 */ //Tous les champs des news existent dans la nouvelle table articles //SQL : On migre les infos des news dans la table articles /* INSERT INTO ofj3_articles (id_new, id_newsletter, code_news, code, lang, etat, position, titre, contenu, texte_intro, image_intro, ofj3_articles.date, titre_data1, data1, titre_data2, data2, titre_data3, data3, titre_data4, data4, titre_data5, data5, titre_data6, data6, url_image, url_image2, date_add, date_upd, info_article) SELECT id_new, id_newsletter, code_news, code, lang, etat, position, titre, contenu, texte_intro, image_intro, ofj3_new.date, titre_data1, data1, titre_data2, data2, titre_data3, data3, titre_data4, data4, titre_data5, data5, titre_data6, data6, url_image, url_image2, date_add, date_upd, info_new FROM ofj3_new WHERE 1 */ break; default: ExecActions("Default"); 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, $article; switch ($action) { /** * - Cas Site_Accueil : * . * Le cas (par défaut) Site_Accueil recherche tous les articles, 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_out['liste_fils'] = Arbo_construire($data_in['code_arbo']); if (isset($data_in['id_arbo_pere'])) { $data_out['id_arbo_pere'] = $data_in['id_arbo_pere']; } $data_out['code_arbo'] = $data_in['code_arbo']; $data_out['menu_gauche'] = 'arbo'; $data_out['page'] = 'arbo.php'; break; case "AJAX_ArboUPD": $tab_arbo = json_decode($data_in['arbo_json'], true); /*=============*/ Lib_myLog("Arbo recuperee"); Arbo_recalcul($tab_arbo); 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 remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs Lib_writeData('', "ARBO"); ExecActions('Accueil'); break; case "Element_Bouger": $tab_positions = explode("|", $data_in['tab_list']); $i = 1; foreach ($tab_positions as $position) { $projet = Arbo_recuperer($position); $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"); 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 articles 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 article peut être en pluisieurs langues. On les regroupe grâce au code article $args_articles['code'] = 'article-' . $obj_element_initial->id_pere; $liste_articles = Articles_chercher($args_articles); foreach ($liste_articles as $art) { $article = Article_recuperer($art['id_article']); $article->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"); 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_pere . '-'; } /*=============*/ 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_pere . '-'; } $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 article associe a la categorie"); $article = new Article(); $article->titre_page = $data_in['intitule']; $article->titre = $data_in['intitule']; $article->lang = 'fr'; $article->etat = 'actif'; $id_article = $article->ADD(); $article = Article_recuperer($id_article); // On définit un code pour pouvoir retrouver le même article en plusieurs langues $article->code = 'article-' . $id_article; $article->UPD(); foreach ($GLOBALS['LANGUES'] as $langue) { /*=============*/ Lib_myLog("Ajout de l'article en {$langue}"); $article->lang = $langue; $article->ADD(); } $arbo->id_pere = $id_article; $arbo->type_pere = 'article'; $arbo->UPD(); // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeData('', "ARBO"); 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'article lie a l'element"); $article = Article_recuperer($arbo->id_pere); $article->titre = $data_in['intitule']; $article->UPD(); // On remet à 0 le fichier contenant le "cache" de l'arborescence Lib_writeData('', "ARBO"); $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; default: ExecActions('Accueil'); break; } }
function ExecActions($action) { /*=============*/ Lib_myLog("action: ", $action); // On recupere la configuration issue de conf.php global $lang, $taille_ecran, $MSG, $secure, $cle, $config, $taille_tableaux, $taille_tableaux_admin; // On recupere tous les objet contenant les donnees global $data_in, $data_out, $data_srv, $session, $tab_session; // Initialization des variables global $message, $fiche; switch ($action) { case "Recherche": case "Annuaire_Accueil": if (!isset($data_in['srch_nom']) && !isset($data_in['srch_prenom'])) { /*=============*/ Lib_myLog("On recupere du cache toutes les clefs de recherche"); if (!empty($data_srv['args_recherche'])) { foreach ($data_srv['args_recherche'] as $key => $value) { if (!isset($data_in[$key])) { $data_in[$key] = $value; } } } /*=============*/ Lib_myLog("Cache recupere:", $data_srv); } /*=============*/ Lib_myLog("On sauvegarde dans le cache toutes les clefs de recherche"); $data_srv['args_recherche'] = $data_in; /*=============*/ Lib_myLog("Recuperation des fiches a partir du cache"); $data_out['liste_types'] = TypesFiches_getCache(); /*=============*/ Lib_myLog("Recuperation de la liste des fiches avec les criteres de recherche"); $args_fiches['id_fiche'] = '*'; if (isset($data_in['srch_nom'])) { $args_fiches['fic_nom'] = '%' . $data_in['srch_nom'] . '%'; } if (isset($data_in['srch_prenom'])) { $args_fiches['fic_prenom'] = '%' . $data_in['srch_prenom'] . '%'; } $args_fiches['count'] = 1; $data_out['nb_resultats'] = $nb_sections = Fiches_chercher($args_fiches); // ======================= Tableau de navigation =========================== if ($nb_sections > 1) { $data_out['nb_sections'] = $nb_sections; /*=============*/ Lib_myLog("Recuperation de la section {$data_in['section']}"); $data_out['section'] = $data_in['section']; $args_fiches['limit'] = $taille_tableaux_admin; $args_fiches['start'] = !empty($data_in['section']) ? $data_in['section'] * $taille_tableaux_admin : 0; } $data_out['section'] = $data_in['section']; // ======================= =============================================== /*=============*/ Lib_myLog("Recherche des fiches"); $args_fiches['order_by'] = !empty($data_in['order_by']) ? $data_in['order_by'] : 'fic_nom'; $args_fiches['asc_desc'] = !empty($data_in['asc_desc']) ? $data_in['asc_desc'] : 'ASC'; unset($args_fiches['count']); $liste_fiches = Fiches_chercher($args_fiches); $data_out['action'] = 'Annuaire_Accueil'; $data_out['liste_fiches'] = $liste_fiches; if ($data_in['id_fiche']) { $data_out['id_fiche'] = $data_in['id_fiche']; } $data_out['page'] = 'annuaire.php'; break; case "Fiche_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) { /*=============*/ Lib_myLog("Ajout d'un objet fiche"); $fiche = new Fiche(); $fiche->id_type_fiche = $data_in['id_type_fiche']; $fiche->fic_nom = $data_in['fic_nom']; $fiche->fic_prenom = $data_in['fic_prenom']; $fiche->fic_adresse1 = $data_in['fic_adresse1']; $fiche->fic_adresse2 = $data_in['fic_adresse2']; $fiche->fic_adresse3 = $data_in['fic_adresse3']; $fiche->fic_ville = $data_in['fic_ville']; $fiche->fic_email = $data_in['fic_email']; $id_fiche = $fiche->ADD(); // On passe l'id_fiche en data_in pour effectuer la recherche sur la fiche $data_in['id_fiche'] = $id_fiche; $data_in['srch_nom'] = $data_in['fic_nom']; $data_in['srch_prenom'] = $data_in['fic_prenom']; if (!$fiche->isError()) { $transaction->addElement($fiche); } else { $continue = false; } } // Utiliser les lignes suivantes si des fiches supplémentaires doivent être ajoutés // et que l'on doit gérer une transaction // if ($continue) { // /*=============*/ Lib_myLog("Ajout des informations supplementaires a l'objet fiche"); // $sous_fiche = new SousFiche($data_in['champ_sup1'], $data_in['champ_sup2'] , $data_in['champ_sup3']); // $sous_fiche->ADD(); // if (!$sous_fiche->isError()) { // $transaction->addElement($sous_fiche); // } else { // $transaction->DEL(); // $continue = false; // } //} if ($continue) { $data_out['message_ok'] = $MSG['fr']['%%fiche_ADD%%']; // On force le filtre pour que le système aille chercher à nouveau toutes les données en base $data_in['filtrer'] = 1; ExecActions('Annuaire_Accueil'); } else { if ($F5) { /*=============*/ Lib_myLog("Tentative de F5!"); $data_out['message'] = $MSG[$lang]['%%Erreur_Revalidation%%']; ExecActions('Annuaire_Accueil'); } 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('Annuaire_Accueil'); } } break; case "Fiche_UPD": /*=============*/ Lib_myLog("Mise a jour du fiche"); $fiche = Fiche_recuperer($data_in['id_fiche']); $fiche->id_type_fiche = $data_in['id_type_fiche']; $fiche->fic_nom = $data_in['fic_nom']; $fiche->fic_prenom = $data_in['fic_prenom']; $fiche->fic_adresse1 = $data_in['fic_adresse1']; $fiche->fic_adresse2 = $data_in['fic_adresse2']; $fiche->fic_adresse3 = $data_in['fic_adresse3']; $fiche->fic_ville = $data_in['fic_ville']; $fiche->fic_email = $data_in['fic_email']; $fiche->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; ExecActions('Annuaire_Accueil'); break; case "Fiche_DEL": /*=============*/ Lib_myLog("Suppression du fiche avec l'identifiant " . $data_in['id_fiche']); $fiche = Fiche_recuperer($data_in['id_fiche']); $fiche->DEL(); $data_out['message_ok'] = $MSG['fr']['%%fiche_DEL%%']; ExecActions('Annuaire_Accueil'); break; case "Fiches_XL": /*=============*/ Lib_myLog("On recupere du cache toutes les clefs de recherche"); if (!empty($data_srv['args_recherche'])) { foreach ($data_srv['args_recherche'] as $key => $value) { if (!isset($data_in[$key])) { $data_in[$key] = $value; } } } /*=============*/ Lib_myLog("Recuperation de la liste des fiches avec les criteres de recherche"); $args_fiches['id_fiche'] = '*'; $args_fiches['fic_nom'] = '%' . $data_in['srch_nom'] . '%'; $args_fiches['fic_prenom'] = '%' . $data_in['srch_prenom'] . '%'; $liste_fiches = Fiches_chercher($args_fiches); /*=============*/ Lib_myLog("Impression de la liste en XL"); $time = time(); $file = "../exports/extraction_" . $time . ".xls"; // le fichier doit déjà exister if (!($myfile = fopen($file, "w"))) { /*=============*/ Lib_myLog("Erreur lors de la creation du fichier {$file}"); exit; } else { /*=============*/ Lib_myLog("Creation du fichier {$file}"); } $header .= "Nom\t "; $header .= "Prenom\t "; $header .= "Adresse1\t "; $header .= "Adresse2\t "; $header .= "Adresse3\t "; $header .= "CP\t "; $header .= "Ville\t "; $header .= "Email\t "; $header .= "\n"; fputs($myfile, $header); $body = ''; foreach ($liste_fiches as $fiche) { if (!isset($data_in['chk' . $fiche['id_fiche']])) { continue; } $body .= utf8_decode($fiche['fic_nom']) . "\t"; $body .= utf8_decode($fiche['fic_prenom']) . "\t"; $body .= utf8_decode($fiche['fic_adresse1']) . "\t"; $body .= utf8_decode($fiche['fic_adresse2']) . "\t"; $body .= utf8_decode($fiche['fic_adresse3']) . "\t"; $body .= $fiche['fic_cp'] . "\t"; $body .= utf8_decode($fiche['fic_ville']) . "\t"; $body .= $fiche['fic_email'] . "\t"; $body .= "\r\n"; } fputs($myfile, $body); fclose($myfile); //on ferme le fichier chmod($file, 0755); $size = filesize($file); header("Content-Type: application/octet-stream"); header("Content-Length: {$size}"); header("Content-Disposition: attachment; filename=file_" . $time . ".xls"); header("Content-Transfer-Encoding: binary"); $fh = fopen($file, "r"); fpassthru($fh); break; case "Fiches_PDF": /*=============*/ Lib_myLog("On recupere du cache toutes les clefs de recherche"); if (!empty($data_srv['args_recherche'])) { foreach ($data_srv['args_recherche'] as $key => $value) { if (!isset($data_in[$key])) { $data_in[$key] = $value; } } } /*=============*/ Lib_myLog("Recuperation de la liste des fiches avec les criteres de recherche"); $args_fiches['id_fiche'] = '*'; $args_fiches['fic_nom'] = '%' . $data_in['srch_nom'] . '%'; $args_fiches['fic_prenom'] = '%' . $data_in['srch_prenom'] . '%'; $data_out['liste_fiches'] = Fiches_chercher($args_fiches); $data_out['page'] = '../pdf/annuaire_pdf.php'; break; case "Fiches_Import": $continue = true; /*=============*/ Lib_myLog("Import du fichier"); $data_out['tab_resultat'][] = "Verification du fichier d'import"; $uploaddir = "../dilasys/tmp/"; $uploadfile = $uploaddir . $session . "_" . @basename($_FILES['userfile']['name']); /*=============*/ Lib_myLog("Deplacement du fichier en {$uploadfile}"); @move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile); if (file_exists($uploadfile)) { /*=============*/ Lib_myLog("Fichier trouve. Verification du format et du nombre de colonnes"); if (!preg_match("/csv\$/i", $_FILES['userfile']['name'])) { $data_out['message_ko'] = "Le format du fichier est incorrect (format csv attendu)"; $continue = false; } if ($continue) { $data = file($uploadfile); $premiere_ligne = explode(";", $data[0]); if (count($premiere_ligne) < 7) { $data_out['message_ko'] = "La premiè ligne ne contient pas le nombre de colonnes attendu"; $continue = false; } } if ($continue) { ini_set("max_execution_time", 2000); $numLigne = 1; $nbFiches = 0; foreach ($data as $ligne) { $tabCol = explode(";", $ligne); if ($numLigne == 1) { $numLigne++; continue; } else { // On n'importe pas des fiches n'ayant pas de nom ou de prénom if ($tabCol[0] == '' || $tabCol[1] == '') { continue; } /*=============*/ Lib_myLog("Traitement {$tabCol[0]} {$tabCol[1]}"); $fiche = Fiche_recuperer('', $tabCol[0], $tabCol[1]); if ($fiche->id_fiche == '') { /*=============*/ Lib_myLog("Ajout de la fiche"); $data_out['tab_resultat'][] = "Ajout de la fiche de {$tabCol[0]} {$tabCol[1]}"; $fiche = new Fiche(); $fiche->fic_nom = utf8_encode($tabCol[0]); $fiche->fic_prenom = utf8_encode($tabCol[1]); $fiche->fic_adresse1 = utf8_encode($tabCol[2]); $fiche->fic_adresse2 = utf8_encode($tabCol[3]); $fiche->fic_cp = $tabCol[4]; $fiche->fic_ville = utf8_encode($tabCol[5]); $fiche->fic_email = $tabCol[6]; $id_fiche = $fiche->ADD(); } else { /*=============*/ Lib_myLog("Modification de la fiche"); $data_out['tab_resultat'][] = "Modification de la fiche de {$tabCol[0]} {$tabCol[1]}"; $fiche->fic_adresse1 = utf8_encode($tabCol[2]); $fiche->fic_adresse2 = utf8_encode($tabCol[3]); $fiche->fic_cp = $tabCol[4]; $fiche->fic_ville = utf8_encode($tabCol[5]); $fiche->fic_email = $tabCol[6]; $fiche->UPD(); } $numLigne++; $nbFiches++; } } /*=============*/ Lib_myLog("{$nbFiches} fiches traitees"); $data_out['message_ok'] = "{$nbFiches} fiches ont été traitées"; } } ExecActions('Annuaire_Accueil'); break; /*============================================================================ Actions AJAX =============================================================================*/ /*============================================================================ Actions AJAX =============================================================================*/ case "BLOC_Fiche_SEE": case "BLOC_Fiche_ADD": case "BLOC_Fiche_UPD": if (isset($data_in['id_fiche'])) { /*=============*/ Lib_myLog("Recuperation de la fiche"); $args_fiche['id_fiche'] = $data_in['id_fiche']; $data_out['fiche'] = Fiches_chercher($args_fiche); } /*=============*/ Lib_myLog("Recuperation des fiches a partir du cache"); $data_out['liste_types'] = TypesFiches_getCache(); if ($action == "BLOC_Fiche_SEE") { $data_out['mode'] = 'see'; } if ($action == "BLOC_Fiche_ADD") { $data_out['mode'] = 'add'; } if ($action == "BLOC_Fiche_UPD") { $data_out['mode'] = 'upd'; } $data_out['page'] = 'annuaire_bloc_fiche.php'; break; case "AUTO_ListeNoms_ADD": // Action utilisée pour la saisie semi-automatique et appelée par la fonction AJAX /*=============*/ Lib_myLog("Recherche des fiches"); $args_fiche['fic_nom'] = $data_in['fic_nom'] . '%'; $args_fiche['fic_prenom'] = $data_in['fic_prenom'] . '%'; $data_out['liste_fiches'] = Fiches_chercher($args_fiche); /*=============*/ Lib_myLog("Retour"); $data_out['page'] = 'annuaire_auto_noms_add.php'; break; /*============================================================================ DEBUT Ajout dynamique =============================================================================*/ /*============================================================================ DEBUT Ajout dynamique =============================================================================*/ case "POPUP_TypeFicheADD": $data_out['page'] = 'annuaire_popup_type_fiche_add.php'; break; case "SELECT_TypesFiches": /*=============*/ Lib_myLog("Recherche des types de fiches"); $args_types['id_type_fiche'] = '*'; $data_out['liste_types'] = TypesFiches_chercher($args_types); $data_out['valeur_select'] = $data_in['valeur_select']; $data_out['page'] = 'annuaire_select_types_fiches.php'; break; case "TypeFiche_ADD": $erreur = false; $F5 = Lib_checkF5($session, $data_in['timestamp']); $continue = $F5 ? false : true; /*=============*/ Lib_myLog("On verifie qu'un type a bien ete saisi"); if ($data_in['libelle'] == '') { $continue = false; $erreur = true; $data_out['message_ko'] = $MSG[$lang]['%%ERR_type_fiche_manque%%']; } /*=============*/ Lib_myLog("On verifie si le type saisi n'existe pas deja"); if ($data_in['libelle'] != '') { $args_type['libelle'] = $data_in['libelle']; $liste_types = TypesFiches_chercher($args_type); if (count($liste_types)) { $continue = false; $erreur = true; $data_out['message_ko'] = $MSG[$lang]['%%ERR_type_fiche_existe%%']; } } if ($continue) { /*=============*/ Lib_myLog("Ajout d'un type de fiche"); $type = new TypeFiche(); $type->libelle = $data_in['libelle']; $id_type_fiche = $type->ADD(); Lib_writeData('', 'LISTE_TYPES_FICHES'); } if ($continue) { $data_out['message_ok'] = $MSG[$lang]['%%type_fiche_ADD%%']; $data_out['perte_focus'] = 1; $data_out['valeur_select'] = $id_type_fiche; $data_out['page'] = "annuaire_popup_type_fiche_add.php"; } else { if ($erreur) { $data_out['page'] = 'annuaire_popup_type_fiche_add.php'; } else { if ($F5) { /*=============*/ Lib_myLog("Tentative de F5!"); $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%']; $data_out['page'] = "annuaire_popup_type_fiche_add.php"; } else { /*=============*/ Lib_myLog("Annulation de l'ajout suite a une erreur mysql"); $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); $data_out['page'] = "annuaire_popup_type_fiche_add.php"; } } } break; /*============================================================================ FIN Ajout dynamique =============================================================================*/ /*============================================================================ FIN Ajout dynamique =============================================================================*/ case "POPUP_Memos_SEE": case "POPUP_MemosFiche_SEE": case "POPUP_Memos_UPD": /*=============*/ Lib_myLog("Recuperation des memos de la fiche"); // Affichage du plus récent en premier $args_memos['id_fiche'] = $data_in['id_fiche']; $args_memos['order_by'] = 'id_memo'; $args_memos['asc_desc'] = 'DESC'; $data_out['liste_memos'] = FicheMemos_chercher($args_memos); $data_out['id_fiche'] = $data_in['id_fiche']; if ($action == 'POPUP_Memos_SEE') { $data_out['page'] = 'annuaire_popup_memos_see.php'; } if ($action == 'POPUP_MemosFiche_SEE') { $data_out['page'] = 'annuaire_popup_memos_fiche_see.php'; } if ($action == 'POPUP_Memos_UPD') { $data_out['page'] = 'annuaire_popup_memos_upd.php'; } break; case "Memos_UPD": /*=============*/ Lib_myLog("Recuperation des memos de la fiche {$data_in['id_fiche']} pour mise a jour"); $args_memos['id_fiche'] = $data_in['id_fiche']; $liste_memos = FicheMemos_chercher($args_memos); foreach ($liste_memos as $memo) { $memo_upd = FicheMemo_recuperer($memo['id_memo']); $memo_upd->memo = $data_in['memo' . $memo['id_memo']]; $memo_upd->UPD(); } if ($data_in['memo'] != '') { /*=============*/ Lib_myLog("Ajout du nouveau memo"); $memo_add = new FicheMemo(); $memo_add->id_fiche = $data_in['id_fiche']; $memo_add->date_memo = mktime(0, 0, 0, $tab_date_memo[1], $tab_date_memo[0], $tab_date_memo[2]); $memo_add->memo = $data_in['memo']; $memo_add->ADD(); } break; case "Memos_DEL": /*=============*/ Lib_myLog("Suppression du memo"); $memo_del = FicheMemo_recuperer($data_in['id_memo']); $memo_del->DEL(); $data_in['id_fiche'] = $memo_del->id_fiche; ExecActions('POPUP_Memos_UPD'); break; default: ExecActions('Annuaire_Accueil'); break; } }
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 ExecActions($action) { /*=============*/ Lib_myLog("action: ", $action); // On recupere la configuration issue de conf.php global $lang, $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, $fiche; switch ($action) { case "Mail_Auto1": case "Mail_Auto2_1": case "Mail_Auto2_2": case "Mail_Auto2_3": case "Mail_Auto3_1": case "Mail_Auto3_2": case "Mail_Auto3_3": case "Mail_Auto3b": case "Mail_Auto4_1": case "Mail_Auto4_2": case "Mail_Auto4_3": case "Mail_Auto5": /*=============*/ Lib_myLog("Creation de l'email automatique " . $action); $continue = true; if (!isset($data_in['id_chantier']) || $data_in['id_chantier'] == '') { $continue = false; } if ($continue) { /*=============*/ Lib_myLog("Recuperation du chantier"); $chantier = Chantier_recuperer($data_in['id_chantier']); $data_out = $chantier->getTab(); $data_out['url_doc_accord'] = $chantier->doc_accord; $data_out['url_doc_service'] = $chantier->doc_service; $data_out['url_doc_valide'] = $chantier->doc_valide; /*=============*/ Lib_myLog("Recuperation du nom de l'entreprise"); $entreprise = Entreprise_recuperer($chantier->id_entreprise); $data_out['nom_entreprise'] = $entreprise->nom; /*=============*/ Lib_myLog("Recuperation du nom du laboratoire"); $laboratoire = Laboratoire_recuperer($chantier->id_laboratoire); $data_out['nom_laboratoire'] = $laboratoire->nom; echo '$$$' . $val; if ($action == "Mail_Auto1") { $data_out['page'] = '../modeles/Mail_Auto1.htm'; } if ($action == "Mail_Auto2_1") { $data_out['page'] = '../modeles/Mail_Auto2_1.htm'; } if ($action == "Mail_Auto2_2") { $data_out['page'] = '../modeles/Mail_Auto2_2.htm'; } if ($action == "Mail_Auto2_3") { $data_out['page'] = '../modeles/Mail_Auto2_3.htm'; } if ($action == "Mail_Auto3_1") { $data_out['page'] = '../modeles/Mail_Auto3_1.htm'; } if ($action == "Mail_Auto3_2") { $data_out['page'] = '../modeles/Mail_Auto3_2.htm'; } if ($action == "Mail_Auto3_3") { $data_out['page'] = '../modeles/Mail_Auto3_3.htm'; } if ($action == "Mail_Auto3b") { $data_out['page'] = '../modeles/Mail_Auto3b.htm'; } if ($action == "Mail_Auto4_1") { $data_out['page'] = '../modeles/Mail_Auto4_1.htm'; } if ($action == "Mail_Auto4_2") { $data_out['page'] = '../modeles/Mail_Auto4_2.htm'; } if ($action == "Mail_Auto4_3") { $data_out['page'] = '../modeles/Mail_Auto4_3.htm'; } if ($action == "Mail_Auto5") { $data_out['page'] = '../modeles/Mail_Auto5.htm'; } /*=============*/ Lib_myLog("OUT: ", $data_out); } break; default: ExecActions('Recapitulatif_Accueil'); break; } }
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; } }