function mysql_table_load_old($nom_table)
{
    /*
     Dictionnaire des variables:
    * **************************
    */
    $bdd = Lib::isDefined("bdd");
    //Variable Globale definissant le nom de la base de donnees MySQL
    $show_help = Lib::isDefined("show_help");
    //Activer l'aide en ligne Pop-up
    $nom_table;
    //Nom de la table e charger
    $premiere_operateur_where = 1;
    //Permet de supprimer les AND en trop dans la
    $return = "";
    //construction des WHERE
    /*
     Travaux preparatoires:
    * *********************
    */
    //Requete MySQL
    $req_where = " WHERE ";
    //Recherche des clefs de la table
    $propriete = DatabaseOperation::query("DESC {$nom_table}");
    while ($rows1 = mysql_fetch_array($propriete)) {
        //Creation de la variable potentiellement PRIMARY KEY
        $primary_key = $rows1["Field"];
        //Est-ce que ce champ est une clef et qu'une variable est definit
        if ($rows1["Key"] == "PRI") {
            //Affectation de la valeur de la variables
            ${$primary_key} = Lib::isDefined($primary_key);
            //Integration de la clef PRIMAIRE dans les requetes
            $operateur = " AND ";
            if ($premiere_operateur_where) {
                $operateur = '';
            }
            $premiere_operateur_where = 0;
            $req_where .= $operateur . "`" . $primary_key . "`" . "=" . "'" . ${$primary_key} . "'";
        }
        //Fin de Recherche de la clef sur ce champ
    }
    //Fin WHILE de recherche des clefs
    $req1 = "SELECT * FROM {$nom_table} " . $req_where;
    $result1 = DatabaseOperation::query($req1);
    if ($result1) {
        $num_rows1 = mysql_num_rows($result1);
    } else {
        $titre = "Erreur de Programmation sur cette Page";
        $message = "Certaines clefs n'ont pas été definies avant l'appel de la fonction mysql_table_load().";
        afficher_message($titre, $message, $redirection);
    }
    /*
     Corps de la fonction
    * *******************
    */
    $fields = mysql_list_fields($bdd, $nom_table);
    $num_fields = mysql_num_fields($fields);
    for ($i = 0; $i < $num_fields; $i++) {
        if ($num_rows1) {
            //Recuperation du nom de la variables
            $nom_variable = mysql_field_name($fields, $i);
            //Récupération/Exportation du commentaire qui va servir d'étiquette
            $comment = "NOM_" . $nom_variable;
            $GLOBALS[$comment] = mysql_field_desc($nom_table, $nom_variable, $show_help);
            //Exportation de la valeur de la variable dans
            //Une variable globale accessible hors de la fonction
            //Formatage des données pour préparation à intégration dans MySQL
            $GLOBALS[$nom_variable] = stripslashes(mysql_result($result1, 0, $nom_variable));
            //Recherche si la valeur n'est pas NULL
            if ($GLOBALS[$nom_variable] == 0) {
                $req_null = "SELECT * FROM `{$nom_table}` {$req_where} AND `{$nom_variable}` = NULL";
                $result_null = DatabaseOperation::query($req_null);
                if (mysql_num_rows($result_null)) {
                    $GLOBALS[$nom_variable] = "";
                }
                //Fin de if(mysql_num_rows($result_null))
            }
            //Fin de Recherche si la valeur n'est pas NULL
            //Enregistrement du tableau de résultat
            $return[$i][0] = $_SESSION["COMMENT_" . $nom_variable];
            $return[$i][1] = $GLOBALS[$nom_variable];
        }
        //Fin de if ($num_rows1)
    }
    //Fin de for ($i = 0; $i < $num_fields; $i++)
    return $return;
}
             //header ("Location: derogation_duree_vie.php");
             break;
         case 2:
             if ($duree_vie_production_fta_derogation_duree_vie > $Durée_de_vie_technique) {
                 //Si la durée de vie du composant passe en dessous de celle de l'Article
                 //Ou qu'on se situe dans le cadre d'une augmentation de la Durée de Vie
                 //Génération d'une dérogation pour le Colis
                 //$id_fta_composition="";
                 $id_fta_composant = "";
                 $id_access_arti2;
                 $type_fta_derogation_duree_vie = 0;
                 mysql_table_operation("fta_derogation_duree_vie", "insert");
             } else {
                 $titre = "Ce que vous demandez et contradictoire";
                 $message = "Vous avez demandé une dérogation pour augmenter la durée de vie de votre composant.<br>" . "Pourtant vous venez de saisir une durée de vie inférieure.";
                 afficher_message($titre, $message, $redirection);
                 $error = 1;
             }
             //header ("Location: derogation_duree_vie.php");
             break;
     }
     /* $nom_annexe_emballage_groupe;     //Fourni en URL
        $id_annexe_emballage_groupe_type;    //Fourni en URL
        mysql_table_operation("annexe_emballage_groupe", "insert");
        header ("Location: liste_type.php"); */
     if (!$error) {
         header("Location: derogation_duree_vie.php");
     }
     break;
 case "supprimer":
     //Supprimer le groupe
Example #3
0
function jointure($champ_sel, $url_page_depart, $module)
{
    // Dictionnaire des variables
    $module_table = $GLOBALS['module_table'];
    // Module de l'emplacement du moteur de recherche
    $champ_retour = $GLOBALS['champ_retour'];
    // Nom du champ retour (resultat)  nomtable.nom_champ
    $table_champ_retour = $GLOBALS['table_champ_retour'];
    // table du champ retour
    $table_tous_champs_rech = $GLOBALS['table_tous_champs_rech'];
    $result = array();
    // Fichier qui contient les differentes liaisons entre les tables
    //d'un meme module
    $file = '../' . $module . '/sql.map';
    // Recherche du nom de la table du champ que l'utilisateur a selectionné
    $nom_table = "table_moteur_de_recherche";
    $nom = "nom_champ_moteur_de_recherche";
    $table_req = " SELECT {$nom_table} FROM {$table_tous_champs_rech}\n                        WHERE {$nom}='{$champ_sel}'";
    $table_resultat = DatabaseOperation::query($table_req);
    $table_enr = mysql_fetch_array($table_resultat, MYSQL_NUM);
    // nom de la table
    $table_rech = $table_enr[0];
    /*     * *****************************************************************************
          Transformation du fichier $file en 1 tableau pour les jointures
    
          $tab_jointure[][] = Tableau a 2 dimensions qui va contenir  :
         * dans sa premiere colonne
          - soit 0 (si la jointure n'a pas été utilisée)
          - soit 1 (si elle a deja ete utilisée)
         * dans sa deuxieme colonne : la jointure en elle meme.
         * ****************************************************************************** */
    unset($tab_jointure);
    //on vide le tableau
    if (file_exists("{$file}")) {
        // Test de l'existance du fichier
        // Ouverture du fichier en lecture
        $fp = fopen("{$file}", "r");
        $nbligne_jointure = 0;
        // le nombre de jointure
        if ($fp) {
            // Si le fichier est ouvert
            $toute_ligne = fgets($fp, 4096);
            // lecture d'une ligne
            while (!feof($fp)) {
                // tant qu'on n'est pas a la fin du fichier
                if ($toute_ligne[0] != '#') {
                    // on saute les lignes en commentaires
                    $tab_jointure[][1] = $toute_ligne;
                    // on rempli le tableau
                    $nbligne_jointure++;
                }
                $toute_ligne = fgets($fp, 4096);
                // lecture d'une ligne
            }
        } else {
            $titre = 'ERREUR';
            $message = 'Probleme d\'ouverture du fichier ';
            $message .= $file;
            afficher_message($titre, $message, $redirection);
            exit;
        }
    } else {
        $titre = 'ERREUR';
        $message = 'Le fichier ';
        $message .= $file;
        $message .= " n'existe pas ! ";
        afficher_message($titre, $message, $redirection);
        exit;
    }
    // initialisation du marquage à 0
    for ($j = 0; $j < $nbligne_jointure; $j++) {
        $tab_jointure[$j][0] = 0;
    }
    /*     * *****************************************************************************
          Jointures et chemin forcé
          Pour pouvoir determiner toutes les jointures entre la table qui contient la valeur
          que l'on recherche et la table qui contient le resultat que l'on attend
          On utilise un algorithme de parcours en profondeur
          Explication :
          point de depart = la table du champ que l'ulisateur vient de selectionner
          pour faire sa recherche.
          point d'arrivée = $table_champ_retour
    
          En partant du point de départ, il peut y avoir plusieurs chemins pour
          arriver au point d'arrivée.
    
          Les differentes étapes du chemin (les jointures) seront séparées
          par des AND,
          Les differents chemins seront séparés par des OR
    
          Le principe de parcours en profondeur :
          on explore un chemin jusqu'au bout, si la table de la
          dernière jointure (étape) est le point d'arrivée
          on l'enregistre dans le tableau $chemin
    
          Chemin forcé :
          Si un champ a un chemin forcé alors il faut trouver
          la jointure entre ce champ et son étape forcé
          ( IMPORTANT un champ ne peut avoir de lien forcé qu'avec une table qui a
          une jointure directe avec lui)
          Et ensuite trouver les jointures entre l'étape forcée et
          la table de retour.
    
          Dictionnaire des variables :
    
          $requete = va contenir le resultat de la fonction cad les jointures
          $pile = va contenir le nom des tables trouvées au fur et a mesure
          $chemin[][] = tableau à 2 dimensions qui va contenir sur chaque ligne
          un chemin valide
    
         * ****************************************************************************** */
    // Recherche dans la table  $module_table_moteur_de_recherche si le champ à un chemin forcé
    $nom_chemin = 'chemin_force_moteur_de_recherche';
    $nom = 'nom_champ_moteur_de_recherche';
    $chemin_req = " SELECT {$nom_chemin} FROM {$table_tous_champs_rech}\n                         WHERE {$nom}='{$champ_sel}'";
    $chemin_resultat = DatabaseOperation::query($chemin_req);
    $chemin_enr = mysql_fetch_array($chemin_resultat, MYSQL_NUM);
    // chemin force
    $chemin = $chemin_enr[0];
    $requete = '';
    $ligne = 0;
    $col = 0;
    if ($chemin != '') {
        // si elle a un chemin forcé
        // on recherche la jointure correspondante
        $j = 0;
        while ($j < $nbligne_jointure) {
            // on parcours tout le tableau de jointure
            $aux = explode('=', $tab_jointure[$j][1]);
            if (trim($aux[0]) == trim($chemin)) {
                $tmp1 = explode('.', $aux[1]);
                if (trim($tmp1[0]) == trim($table_rech)) {
                    $jointure_force = $tab_jointure[$j][1];
                }
            } else {
                if (strcmp(trim($aux[1]), trim($chemin)) == 0) {
                    $tmp1 = explode('.', $aux[0]);
                    if (trim($tmp1[0]) == trim($table_rech)) {
                        $jointure_force = $tab_jointure[$j][1];
                    }
                }
            }
            $j++;
        }
        if ($jointure_force == '') {
            // si il n'y a pas de jointure correspondant au chemin forcé
            //ERREUR
            $titre = 'ERREUR';
            $message = 'Probleme de jointure : le champ ';
            $message .= $chemin;
            $message .= "n'est pas reliée à la table  ";
            $message .= $table_rech;
            afficher_message($titre, $message, $redirection);
        } else {
            // On change $table_rech
            // la table du champ de recherche devient le nom de la table
            // du champ de la jointure forcée
            $tmp = explode('.', $chemin);
            $table_rech = $tmp[0];
            $requete[$ligne][1] = $jointure_force;
            $requete[$ligne][0] = 0;
            $ligne++;
        }
    }
    if ($table_champ_retour != $table_rech) {
        // Besoin de jointure
        $l = 0;
        // nombre de ligne du tableau chemin
        $p = 0;
        // nombre de colonne du tableau chemin
        $pile = array();
        // creation d'un tableau
        array_push($pile, $table_rech);
        // on empile la table de départ
        while (count($pile) > 0) {
            // tant que la pile n'est pas vide
            $j = 0;
            while ($j < $nbligne_jointure) {
                // on parcours tout le tableau de jointure
                $aux = explode('=', $tab_jointure[$j][1]);
                $tmp1 = explode(".", $aux[0]);
                $tmp2 = explode(".", $aux[1]);
                // si on trouve la table $pile[$p] dans une jointure
                if (($pile[$p] == $tmp1[0] or $pile[$p] == $tmp2[0]) and $tab_jointure[$j][0] != 1) {
                    //echo "test";
                    $p++;
                    // on marque la jointure pour ne pas avoir de doublons
                    $tab_jointure[$j][0] = 1;
                    // dans le tableau des chemins on garde le numero de la ligne ou se trouve la jointure
                    $chemin[$l][$p] = $j;
                    // on recupere le nom de la table qui fait une jointure avec $pile[$p-1]
                    if ($pile[$p - 1] == $tmp1[0]) {
                        $a_empiler = $tmp2[0];
                    } else {
                        $a_empiler = $tmp1[0];
                    }
                    if ($a_empiler == $table_champ_retour) {
                        // si on est a la fin d'un chemin VALIDE
                        $chemin[$l + 1] = $chemin[$l];
                        // on recopie le bon chemin dans la ligne d'apres
                        $z = array_pop($chemin[$l + 1]);
                        // mais on supprime le dernier element
                        $l++;
                        $p--;
                    } else {
                        array_push($pile, $a_empiler);
                        // on empile le nom de la table
                        $j = -1;
                        //on repart au debut de la liste des jointures
                    }
                }
                $j++;
            }
            if ($j == $nbligne_jointure) {
                // Fin d'un chemin mais non valide
                $z = array_pop($pile);
                // on depile le dernier element de la pile
                // on supprime la derniere etape du chemin
                //echo $chemin[$l][$p]."<br>";
                unset($chemin[$l][$p]);
                //Rajout du contrôle de l'existance -- 2007-01-15 Boris.
                /*
                 if($chemin[$l][$p])
                 {
                 // on supprime la derniere etape du chemin
                 unset($chemin[$l][$p]);
                 }
                */
                $p--;
            }
        }
        if (count($pile) == 0) {
            // Si la pile est vide, on a parcouru tous les chemins
            if (count($chemin[0]) == 0) {
                // si le tableau de chemin est vide = table isolée = ERREUR
                $titre = 'ERREUR';
                $message = 'Probleme de jointure : la table ';
                $message .= $table_rech;
                $message .= " n'est pas reliée à la table  ";
                $message .= $table_champ_retour;
                afficher_message($titre, $message, $redirection);
                exit;
            } else {
                // ecriture de la requete
                // la requete est saisie dans un tableau a 2 dimensions sur le meme
                // principe que le tableau des jointures (avec une premiere colonne a 0
                // pour le marquage et la 2eme colonnes contient les jointures pour un chemin
                // separée par des AND
                for ($i = 0; $i < $l; $i++) {
                    $requete[$ligne][0] = 0;
                    for ($j = 1; $j <= count($chemin[$i]); $j++) {
                        $q = $chemin[$i][$j];
                        $requete[$ligne][1] .= $tab_jointure[$q][1];
                        //echo  $requete[$ligne][1]."<br>";
                        if ($j < count($chemin[$i])) {
                            $requete[$ligne][1] .= ' AND ';
                        }
                        $aux = explode('=', $tab_jointure[$q][1]);
                        $table1 = explode('.', $aux[0]);
                        $table2 = explode('.', $aux[1]);
                    }
                    $ligne++;
                }
            }
        }
    }
    //Il n'y a pas de jointure
    if ($requete == "") {
        $result[0][0] = 0;
        $result[0][1] = "";
    } else {
        $result = $requete;
    }
    return $result;
}
function afficher_navigation($id_fta, $id_fta_chapitre_encours, $synthese_action, $comeback)
{
    //Action: "consultation" ou "modification"
    //Barre de navigation de la Fiche Tehnique Article
    //Variables
    $html_table = "table " . "border=1 " . "width=100% " . "class=contenu ";
    $id_fta_chapitre_encours;
    $comeback;
    //1=l'url précédente à à enregistrer comme url de retour
    $t_processus_encours = array();
    $t_processus_visible = array();
    //Récupère la page en cours
    //$page_default=substr(strrchr($_SERVER["PHP_SELF"], '/'), '1', '-4');
    $page_default = "modification_fiche";
    //Récupération des informations préalables
    $_SESSION["id_fta"] = $id_fta;
    $objectFta = new ObjectFta($id_fta);
    mysql_table_load("fta");
    mysql_table_load("fta_etat");
    mysql_table_load("access_arti2");
    //echo     $_SESSION["code_article_ldc"];
    //Nom de l'assistante de projet responsable:
    $req = "SELECT prenom, nom FROM salaries WHERE id_user='******' ";
    $result = DatabaseOperation::query($req);
    if (mysql_num_rows($result)) {
        $createur = mysql_result($result, 0, "prenom") . " " . mysql_result($result, 0, "nom");
    }
    //Construction du Menu
    if ($_SESSION["id_article_agrologic"]) {
        $identifiant = $_SESSION["id_article_agrologic"];
    } else {
        $identifiant = $_SESSION["id_dossier_fta"] . "v" . $_SESSION["id_version_dossier_fta"];
    }
    if ($_SESSION["LIBELLE"]) {
        $nom = $_SESSION["LIBELLE"];
    } else {
        $nom = $_SESSION["designation_commerciale_fta"];
    }
    $menu_navigation = "\r\n                     <{$html_table}>\r\n                     <tr><td class=titre_principal> <div align=\"left\">\r\n                           {$identifiant} (LDC: <b><font size=\"2\" color=\"#0000FF\">" . $_SESSION["code_article_ldc"] . "</font></b>) - {$nom} &nbsp;&nbsp;&nbsp;&nbsp;<i>(gérée par {$createur})</i>\r\n                           </div>\r\n                     </td></tr>\r\n                     <tr class=titre><td>\r\n                     ";
    //Si une action est donnée, alors construction du menu des chapitres
    if ($synthese_action) {
        //Etat d'avancement de la FTA et Recherche des processus validés (et donc en lecture-seule)
        $liste_processus_visible = "";
        //Liste des processus en lecture-seule (séparés par une virgule)
        //$req = "SELECT * FROM fta_processus ";
        $req = "SELECT DISTINCT fta_processus.* FROM fta_processus, fta_processus_cycle " . "WHERE fta_processus_cycle.id_init_fta_processus=fta_processus.id_fta_processus " . "AND id_etat_fta_processus_cycle='I' " . "AND id_fta_categorie = '" . $objectFta->getFieldValue(ObjectFta::TABLE_FTA_NAME, "id_fta_categorie") . "' ";
        $result = DatabaseOperation::query($req);
        if (mysql_num_rows($result)) {
            //Balayage de tous les processus
            while ($rows = mysql_fetch_array($result)) {
                $id_fta;
                //Déjà déclaré
                $id_fta_processus = $rows["id_fta_processus"];
                $taux_validation_processus = fta_processus_validation($id_fta, $id_fta_processus);
                //echo $rows["nom_fta_processus"].": ".$taux_validation_processus."<br>";
                //Liste des processus visible(lecture-seule)
                if ($taux_validation_processus == 1) {
                    $t_processus_visible[] = $rows["id_fta_processus"];
                }
            }
            //Fin du balayage
            //print_r($t_processus_visible);
        } else {
            //La table des processus est vide
            $titre = "Erreur de configuration du module FTA";
            $message = "Cette FTA n'a pas de cycle \"Initialisation\" défini pour la catégorie " . $objectFta->getFieldValue(ObjectFta::TABLE_WORKFLOW_NAME, "nom_fta_categorie") . " <i>(Voir la table fta_processus_cycle)</i> ";
            afficher_message($titre, $message, $redirection);
        }
        //Fin de suivi de projet
        //Recherche des processus en cours
        //Balayage des cycles des processus (en exclant les processus déjà validés)
        $req = "SELECT DISTINCT id_next_fta_processus " . "FROM fta_processus_cycle, fta_processus, intranet_actions, intranet_droits_acces, intranet_modules " . "WHERE 1 AND ( 1 ";
        $separator = "AND";
        //Suppression des processus déjà validé
        if ($t_processus_visible) {
            foreach ($t_processus_visible as $value) {
                $req .= $separator . " id_next_fta_processus<>" . $value . " ";
                $separator = "AND";
            }
        }
        //Vérification des droits d'accès de l'utilisateur en cours
        $req .= ") " . "AND fta_processus_cycle.id_next_fta_processus=fta_processus.id_fta_processus " . "AND fta_processus.id_intranet_actions=intranet_actions.id_intranet_actions " . "AND intranet_actions.id_intranet_actions=intranet_droits_acces.id_intranet_actions " . "AND intranet_droits_acces.id_intranet_modules=intranet_modules.id_intranet_modules " . "AND id_user="******"id_user"] . " " . "AND nom_intranet_modules='fta' " . "AND niveau_intranet_droits_acces=1 " . "AND id_etat_fta_processus_cycle='" . $objectFta->getFieldValue(ObjectFta::TABLE_ETAT_NAME, "abreviation_fta_etat") . "' " . "AND id_fta_categorie = '" . $objectFta->getFieldValue(ObjectFta::TABLE_FTA_NAME, "id_fta_categorie") . "' ";
        //Finalisation de la requête
        $req .= "";
        //echo "<br>".$req;
        $result = DatabaseOperation::query($req);
        while ($rows = mysql_fetch_array($result)) {
            //Pour chaque processus, on vérifie que tous ces précédents sont validés
            $req = "SELECT * FROM fta_processus_cycle " . "WHERE id_next_fta_processus=" . $rows["id_next_fta_processus"] . " AND ( 1 ";
            $separator = "AND";
            //Ajout de la restriction des processus validé
            if ($t_processus_visible) {
                foreach ($t_processus_visible as $value) {
                    $req .= $separator . " id_init_fta_processus<>" . $value . " ";
                    $separator = "AND";
                }
            }
            //Recherche dans le cycle correspondant à l'état en cours de la fiche
            $req_etat = "SELECT `fta_etat`.`abreviation_fta_etat` " . "FROM `fta_etat`, `fta` " . "WHERE ( `fta_etat`.`id_fta_etat` = `fta`.`id_fta_etat` )" . "AND ( ( `fta`.`id_fta` = '" . $id_fta . "' ) )";
            $abreviation_fta_etat = mysql_result(DatabaseOperation::query($req_etat), 0, "abreviation_fta_etat");
            $req .= "AND id_etat_fta_processus_cycle='" . $abreviation_fta_etat . "' ";
            //Filtrage par catégorie
            //$req .= "AND id_fta_categorie='".$_SESSION["id_fta_categorie"]."' ";
            //Finalisation de la requête
            $req .= ")";
            //echo "<br>".$req;
            //Si la requête est vide, c'est que tous les processus précédents sont validés
            //Il est donc un Processus en cours
            $result_temp = DatabaseOperation::query($req);
            if (!mysql_num_rows($result_temp)) {
                //echo " Y";
                //Ce processus en cours, est-il du type repartie ou centralisé ?
                $req = "SELECT multisite_fta_processus FROM fta_processus " . "WHERE id_fta_processus=" . $rows["id_next_fta_processus"];
                $result_temp = DatabaseOperation::query($req);
                $multisite_fta_processus = mysql_result($result_temp, 0, "multisite_fta_processus");
                //Oui, il s'agit d'un Processus répartie sur les sites d'assemblage
                if ($multisite_fta_processus) {
                    //Existe-il une configuration de gestion forcée pour ce processus et ce site d'assemblage ?
                    $req = "SELECT id_site_processus_fta_processus_multisite FROM fta_processus_multisite, access_arti2 " . "WHERE id_site_assemblage_fta_processus_multisite=Site_de_production " . "AND id_processus_fta_processus_multisite='" . $rows["id_next_fta_processus"] . "' " . "AND id_fta=" . $id_fta . " ";
                    $result_temp = DatabaseOperation::query($req);
                    if (mysql_num_rows($result_temp)) {
                        $id_geo = mysql_result($result_temp, 0, "id_site_processus_fta_processus_multisite");
                    } else {
                        //Sinon, Vérification de l'égalité entre le site d'assemblage de la FTA et le site de Localisation de l'utilisateur
                        $req = "SELECT id_geo FROM access_arti2, geo " . "WHERE id_fta=" . $id_fta . " " . "AND Site_de_production=id_site ";
                        $result_temp = DatabaseOperation::query($req);
                        if (mysql_num_rows($result_temp)) {
                            $id_geo = mysql_result($result_temp, 0, "id_geo");
                        }
                    }
                    if ($id_geo == $_SESSION["lieu_geo"]) {
                        //L'égalité est respecté, donc ce processus est bien en cours
                        $t_processus_encours[] = $rows["id_next_fta_processus"];
                    } else {
                        //                   echo "TEST";
                    }
                } else {
                    //Enregistrement du processus en tant que processus en cours
                    $t_processus_encours[] = $rows["id_next_fta_processus"];
                }
            }
        }
        //Fin du balayage des processus non-validés
        //print_r($t_processus_encours);
        //Recherche des processus Publics
        //Création de la liste des processus dans la barre de navigation
        $t_processus_encours;
        $t_processus_visible;
        /*     switch ($synthese_action)//Suivant l'action effectuée sur la navigation:
                  {
                  case "modification":
                  $t_liste_processus = array_merge($t_processus_encours,$t_processus_visible);
                  break;
        
                  case "consultation":
                  $t_liste_processus = $t_processus_visible;
                  break;
                  } */
        $t_liste_processus = array_merge($t_processus_encours, $t_processus_visible);
        //$t_liste_processus = $t_processus_encours;
        //Ajout des processus n'ayant pas de précédents et donc obligatoirement présent dans le menu de navigation
        $req = "SELECT fta_processus.* FROM fta_processus " . "LEFT JOIN fta_processus_cycle " . "ON fta_processus.id_fta_processus=fta_processus_cycle.id_next_fta_processus " . "WHERE fta_processus_cycle.id_next_fta_processus IS NULL;";
        $result = DatabaseOperation::query($req);
        while ($rows = mysql_fetch_array($result)) {
            $t_liste_processus[] = $rows["id_fta_processus"];
        }
        //Récupération des Chapitres accessible dans le menu de naviguation
        if ($t_liste_processus) {
            $req = "SELECT * FROM fta_chapitre LEFT JOIN fta_processus " . "ON fta_processus.id_fta_processus=fta_chapitre.id_fta_processus " . "WHERE  ( " . "fta_chapitre.id_fta_processus=0 ";
            $separator = "OR";
            foreach ($t_liste_processus as $value) {
                $req .= $separator . " fta_processus.id_fta_processus=" . $value . " ";
                $separator = "OR";
            }
            $req .= " ) ORDER BY fta_chapitre.id_fta_chapitre";
            $result = DatabaseOperation::query($req);
            //Balyage des chapitres trouvés
            while ($rows = mysql_fetch_array($result)) {
                $id_fta_chapitre = $rows['id_fta_chapitre'];
                $nom_fta_chapitre = $rows['nom_fta_chapitre'];
                $nom_usuel_fta_chapitre = $rows['nom_usuel_fta_chapitre'];
                //Dans le cas où il n'y a pas de chapitre sélectionné, sélection du premier
                if (!$id_fta_chapitre_encours) {
                    $id_fta_chapitre_encours = $id_fta_chapitre;
                }
                if ($id_fta_chapitre_encours == $id_fta_chapitre) {
                    $b = "<font size=3 color=#5494EE><b>";
                    $image1 = "[>";
                    $image2 = "<]";
                    $num = 1;
                    //$image1="[<img src=../lib/images/etoile_clignotante.gif width=15 height=15 border=0 />]";
                    //$image2=$image1;
                } else {
                    $image1 = "[>";
                    $image2 = "<]";
                    //Ce chapitre est-il public?
                    if ($rows['id_fta_processus'] == 0) {
                        $b = "<font color=\"#8977A9\">";
                    } else {
                        //Le chapitre est-il validé ?
                        $req1 = "SELECT id_fta_suivi_projet " . "FROM fta_suivi_projet " . "WHERE id_fta={$id_fta} " . "AND id_fta_chapitre={$id_fta_chapitre} " . "AND signature_validation_suivi_projet<>0 ";
                        $result1 = DatabaseOperation::query($req1);
                        $num = mysql_num_rows($result1);
                        switch ($num) {
                            case 0:
                                //Chapiter pas encore validé
                                $b = "<font color=\"#FF0000\">";
                                break;
                            case 1:
                                //Chapitre validé
                                $b = "<font color=\"#00B300\">";
                                break;
                            default:
                                //Anomalie
                                $titre = "Erreur Grave !";
                                $message = "La fonction afficher_navigation() vient de trouver des doublons de validation des chapitres dans la table fta_suivi_projet";
                                afficher_message($titre, $message, $redirection);
                                break;
                        }
                    }
                    //Fin du test public
                }
                //Fin de la colorisation
                //$menu_navigation.="<a href=$page_default.php?id_fta=$id_fta&id_fta_chapitre_encours=$id_fta_chapitre><img src=images/bouton_menu-$nom_fta_chapitre.png border=$border></a> ";
                //echo $num." ".$_SESSION["synthese_action"]."<br>";
                if ($num == 0 and $_SESSION["synthese_action"] == "attente") {
                } else {
                    $menu_navigation .= "<a href={$page_default}.php?id_fta={$id_fta}&id_fta_chapitre_encours={$id_fta_chapitre}&synthese_action={$synthese_action}>{$b}" . $image1 . $nom_usuel_fta_chapitre . $image2 . "</a>" . "</b></font> ";
                }
                //$menu_navigation.="<input type=submit value=`".$nom_usuel_fta_chapitre."` border=$border> ";
            }
        }
        //Fin de la création des chapitres
    }
    //Fin du controle de $synthese_action
    //Lien de retour rapide
    /* $menu_navigation.= "</td></tr><tr><td>
       <a href=index.php?id_fta_etat=".$_SESSION["id_fta_etat"]."&nom_fta_etat=".$_SESSION["abreviation_fta_etat"]."&synthese_action=$synthese_action>Retour vers la synthèse</a>
       "; */
    if ($comeback == 1) {
        $_SESSION["comeback_url"] = $_SERVER["HTTP_REFERER"];
        $_GLOBALS["comeback_url"] = $_SESSION["comeback_url"];
    }
    $menu_navigation .= "</td></tr><tr><td>\r\n    <a href=" . $_SESSION["comeback_url"] . "><img src=../lib/images/bouton_retour.png alt=\"\" title=\"Retour à la synthèse\" width=\"18\" height=\"15\" border=\"0\" /> Retour vers la synthèse</a> |\r\n    ";
    //echo "<pre>".print_r($_SERVER["QUERY_STRING"])."</pre>";
    //Corps du menu
    $menu_navigation .= "\r\n                    <a href=historique.php?id_fta={$id_fta}><img src=./images/graphique.png alt=\"\" title=\"" . UserInterfaceLabel::FR_AVANCEMENT_FTA . "\" width=\"18\" height=\"15\" border=\"0\" />" . UserInterfaceLabel::FR_AVANCEMENT_FTA . "</a>\r\n                       </td></tr>\r\n                       </table>\r\n                       ";
    return $menu_navigation;
}
Example #5
0
<?php

if ($access != 'VALID') {
    header('location:../../index.php');
}
//Contrôleur secondaire affichage admin
$retour = '';
if (!isset($_SESSION['admin'])) {
    header('location:../../index.php');
} else {
    if (isset($_GET['a'])) {
        include_once 'model/contact/fonctions_messages.php';
        $message = afficher_message($_GET['a']);
        $title = 'Message reçu';
        include_once 'view/contact/afficher_message.php';
    }
}
function afficher_moteur_recherche($module, $id_recherche, $etat_table, $id_recherche_etat, $abreviation_recherche_etat, $nom_recherche_recherche_etat, $image_bordure, $image_recherche, $champ_retour, $nb_limite_resultat, $url_page_depart, $QUERY_STRING, $PHP_SELF, $nbligne, $nbcol, $champ_recherche, $operateur_recherche, $texte_recherche, $champ_courant, $operateur_courant, $texte_courant, $nb_col_courant, $ajout_col, $requete_resultat, $tab_resultat, $module_table)
{
    /*
     Définition des Variables
    */
    //$module="fta";
    //$etat_table="fta_etat";
    //$id_recherche="id_fta";
    //$id_recherche_etat="id_fta_etat";
    //$abreviation_recherche_etat="abreviation_fta_etat";
    //$nom_recherche_recherche_etat="nom_fta_etat";
    //$champ_retour = 'fta.id_fta';
    $nb_limite_resultat = 1000;
    if ($url_page_depart == '') {
        if ($QUERY_STRING) {
            $url_page_depart = '(' . $PHP_SELF . '?' . $QUERY_STRING . ')';
        } else {
            $url_page_depart = '(' . $PHP_SELF . ')';
        }
    }
    $return = "";
    $requete_resultat = stripcslashes($requete_resultat);
    $_SESSION['table_champ_retour'] = $module_table;
    // table du champ retour
    $_SESSION['table_tous_champs_rech'] = $module_table . "_moteur_de_recherche";
    $tab_resultat;
    //Construction du code HTML
    $return .= "\n     <center>\n     <img src={$image_bordure}> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp\n     <img src={$image_bordure}> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp\n     <img src={$image_bordure}> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp\n     <img src={$image_bordure}> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp\n     <img src={$image_bordure}> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp\n     <img src={$image_bordure}> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp\n     <img src={$image_bordure}>\n     <br>\n     </center>\n     <center>\n     <table width=100% border=1 valign=top cellspacing=0>\n     <tr>\n     <td class=titre_principal><img src=" . $image_recherche . " WIDTH=70 HEIGHT=50 align=left> <br> Recherche <br><br></td>\n     </tr>\n     <tr>\n     <td colspan=3> ";
    $return .= recuperation_donnees_recherche($module, $url_page_depart, $module_table, $champ_retour, $nb_limite_resultat, $nbligne, $nbcol, $champ_recherche, $operateur_recherche, $texte_recherche, $champ_courant, $operateur_courant, $texte_courant, $nb_col_courant, $nb_ligne_courant, $ajout_col);
    $return .= "</td>\n      </tr>\n      </table>\n      ";
    if ($tab_resultat) {
        $tab_resultat = explode(';;', $tab_resultat);
    }
    $return .= "\n     <table width=100% border=1 valign=top cellspacing=0>\n     <tr>\n     <td class=titre_principal> <br> Résultats <br><br></td>\n     </tr>\n     ";
    $choix = -1;
    // pour que l'on affiche les entetes du tableau une seule fois
    $tableau_fiche = '';
    if ($requete_resultat) {
        //On vérifie si le résultat n'est pas nul
        $result_requete_resultat = DatabaseOperation::convertSqlStatementWithoutKeyToArray($requete_resultat);
        if (!$result_requete_resultat) {
            $titre = 'Moteur de Recherche';
            $message = 'Vos critères de recherche ne donnent aucun résultat.';
            afficher_message($titre, $message, $redirection);
        }
        //Regroupement par Etat du résultat
        $req = "SELECT * FROM {$etat_table} ";
        //Spécificité propre au module FTMP
        //Restriction par droit d'accès
        //  $acces= $module."_modification";
        //  echo $SESSION[$acces];
        if (!$_SESSION[$module . "_modification"] and $_SESSION["module"] == "fiches_mp_achats") {
            $req .= "WHERE " . $abreviation_recherche_etat . "='V' OR " . $abreviation_recherche_etat . "='E' ";
        }
        $result = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req);
        foreach ($result as $rows) {
            //Construction de la reqûete de resultat propre à cet Etat
            $req1 = "{$requete_resultat} AND " . $id_recherche_etat . "=" . $rows[$id_recherche_etat];
            $result1 = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req1);
            //Si il y a des résltat on commence la construction du tableau
            if ($result1) {
                //Affichage de l'en-tête de regroupement
                $return .= "<tr><td class=titre>" . $rows["nom_" . $etat_table] . "</td></tr>";
                //Affichage des fiches
                foreach ($result1 as $rows1) {
                    //echo $choix;
                    $return .= "<tr><td>" . visualiser_fiches($rows1[$id_recherche], $choix, 0, "") . "</td></tr>";
                }
            }
            $return .= "<br>";
        }
        // Fin de l'affichage des résultats;
    }
    //Dans le cas où un résultat de recherche est proposé, affichage du tableau
    //if ($tab_resultat){
    $return .= "</td></tr>\n     </table>\n     <br>\n     <img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}>\n     <img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}>\n     <img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}>\n     <img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}><img src={$image_bordure}>\n     ";
    return $return;
    /*     * *****************************************************************************
          FIN MOTEUR DE RECHERCHE
         * ***************************************************************************** */
}
Example #7
0
 public function checkMandatoryFields($nom_fta_chapitre)
 {
     $recordFta =& $this->records[self::TABLE_FTA_NAME];
     //     $recordArti = &$this->records[self::TABLE_ARTI_NAME];
     $nom_fta_chapitre_encours = $nom_fta_chapitre;
     $return = false;
     //false = echec du contrôle / true = réussite du contrôle
     //Vérification des saisies obligatoires avant validation du chapitre
     $erreur_saisie_obligatoire = false;
     $req = "SELECT nom_table_fta_saisie_obligatoire,nom_champ_fta_saisie_obligatoire FROM fta_saisie_obligatoire " . "WHERE nom_chapitre_fta_saisie_obligatoire='" . $nom_fta_chapitre_encours . "' ";
     $result = DatabaseOperation::query($req);
     if (mysql_numrows($result)) {
         while ($rows = mysql_fetch_array($result)) {
             $record = null;
             $table_name = $rows["nom_table_fta_saisie_obligatoire"];
             $field_name = $rows["nom_champ_fta_saisie_obligatoire"];
             switch ($table_name) {
                 case "access_arti2":
                     $record = $recordArti;
                     break;
                 case "fta":
                     $record = $recordFta;
                     break;
             }
             if ($record->getFieldValue($field_name) == null) {
                 $erreur_saisie_obligatoire = true;
                 $message_saisie_obligatoire .= "- " . DatabaseDescription::getColumnLabel($table_name, $field_name) . "<br>";
             }
         }
     }
     if ($erreur_saisie_obligatoire) {
         $titre = "Informations manquantes";
         $message = "Certaines informations sont obligatoire pour permettre la validation du chapitre:<br><br>" . $message_saisie_obligatoire;
         afficher_message($titre, $message, $redirection);
         $noredirection = 1;
     } else {
         $return = true;
     }
     return $return;
 }