/[openfoncier]/branches/3.14.0-b13/obj/utils.class.php
ViewVC logotype

Diff of /branches/3.14.0-b13/obj/utils.class.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2282 by softime, Thu Sep 12 10:14:50 2013 UTC revision 2715 by softime, Thu Feb 6 14:09:06 2014 UTC
# Line 96  class utils extends application { Line 96  class utils extends application {
96              $this->om_utilisateur["libelle_profil"] = $resProfil;              $this->om_utilisateur["libelle_profil"] = $resProfil;
97    
98              // si c'est un administrateur technique              // si c'est un administrateur technique
99              if ($resProfil == "ADMINISTRATEUR TECHNIQUE") {              // XXX Mauvaise méthode, il faut utiliser isAccredited
100                if ($resProfil == "ADMINISTRATEUR TECHNIQUE"
101                    || $resProfil == "ADMINISTRATEUR FONCTIONNEL") {
102                  $this->user_is_admin = true;                  $this->user_is_admin = true;
103              } else {              } else {
104                  $this->user_is_admin = false;                  $this->user_is_admin = false;
# Line 615  class utils extends application { Line 617  class utils extends application {
617          }          }
618      }      }
619    
620        /**
621         * Permet de vérifier que des champs existe dans une table
622         * @param  array  $list_fields Liste des champs à tester
623         * @param  string $table       Table où les champs doivent exister
624         * @return mixed               Retourne les champs qui n'existent pas
625         *                             ou true
626         */
627        public function check_field_exist($list_fields, $table) {
628    
629            // Requête SQL pour récupérer le nom des colonnes
630            $sql = "SELECT column_name
631                    FROM information_schema.columns
632                    WHERE table_schema = '".substr(DB_PREFIXE, 0, -1)."'
633                    AND table_name = '".$table."'
634                    ORDER BY ordinal_position";
635            $this->addToLog("check_field_exist() : db->query(\"".$sql."\")", VERBOSE_MODE);
636            $res = $this->db->query($sql);
637            $this->isDatabaseError($res);
638    
639            // Tant qu'il y a un résultat
640            while ($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
641                
642                // Le nom de la colonne est mise dans un tableau
643                $list_column[] = $row['column_name'];
644            }
645    
646            // Tableau des champs en erreur
647            $error_fields = array();
648    
649            // Pour chaque champ à tester
650            foreach ($list_fields as $value) {
651                
652                // S'il n'apparaît pas dans la liste des champs possible
653                if (!in_array($value, $list_column)) {
654    
655                    // Alors le champ est ajouté au tableau des erreurs
656                    $error_fields[] = $value;
657                }
658            }
659    
660            // Si le tableau des erreurs n'est pas vide on le retourne
661            if (count($error_fields) > 0) {
662                return $error_fields;
663            }
664    
665            // Sinon on retourne le booléen true
666            return true;
667    
668        }
669    
670        /*
671         *
672         */
673        /**
674         * Récupère la lettre type lié à un événement
675         * @param  integer  $evenement L'identifiant de l'événement
676         * @return integer             Retourne l'idenfiant de la lettre-type                             ou true
677         */
678        function getLettreType($evenement){
679            
680             $lettretype = NULL;
681            
682             $sql =
683                "SELECT
684                    lettretype
685                FROM
686                    ".DB_PREFIXE."evenement
687                WHERE
688                    evenement = $evenement";
689                
690            $this->addToLog("getLettreType() : db->query(\"".$sql."\")", VERBOSE_MODE);
691            $res = $this->db->query($sql);
692            if ( database::isError($res)){
693                die();
694            }
695            
696            if ( $res->numrows() > 0 ){
697                    
698                $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
699                $lettretype = $row['lettretype'];
700            }
701          
702            return $lettretype;
703        }
704        
705        /**
706         * Retourne le type de dossier d'autorisation du dossier courant :
707         * @param $idxDossier Le numéro du dossier d'instruction
708         * @return le code du type détaillée de dossier d'autorisation
709         **/
710        function getDATDCode($idxDossier) {
711            $sql = "SELECT dossier_autorisation_type_detaille.code
712                    FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
713                    INNER JOIN ".DB_PREFIXE."dossier_autorisation
714                        ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille =
715                           dossier_autorisation.dossier_autorisation_type_detaille
716                    INNER JOIN ".DB_PREFIXE."dossier ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
717                    WHERE dossier.dossier = '".$idxDossier."'";
718            $res = $this->db->getOne($sql);
719            $this->addToLog("getDATDCode() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
720            if ( database::isError($res)){
721                die();
722            }
723            return $res;
724        }
725    
726        /**
727         * Permet de copier un enregistrement
728         * @param  mixed $idx   Identifiant de l'enregistrment
729         * @param  string $obj   Objet de l'enregistrment
730         * @param  string $objsf Objets associés
731         * @return array        Tableau des nouveaux id et du message
732         */
733        function copier($idx, $obj, $objsf) {
734    
735            // Tableau de résultat
736            $resArray = array();
737            // Message retourné à l'utilisateur
738            $message = "";
739            // Type du message (valid ou error)
740            $message_type = "valid";
741    
742            // Requête SQL permettant de récupérer les informations sur l'objet métier
743            $sql = "SELECT *
744                    FROM ".DB_PREFIXE.$obj."
745                    WHERE ".$obj." = ".$idx;
746            $res = $this->db->query($sql);
747            $this->isDatabaseError($res);
748    
749            // Valeurs clonées
750            $valF = array();
751            while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
752                // Recupère la valeur
753                $valF = $row;
754            }
755    
756            // Valeurs non clonées
757            // Identifiant modifié pour que ça soit un ajout
758            $valF[$obj] = "]";
759    
760            // Inclus la classe de l'objet métier
761            require_once "../obj/".$obj.".class.php";
762    
763            // Instance de l'objet métier
764            $clone_obj = new $obj("]", $this->db, DEBUG);
765            // Si dans l'objet métier la fonction "copier" existe
766            if (method_exists($clone_obj, "copier")) {
767                // Traitement sur les valeurs du duplicata
768                $valF = $clone_obj->copier($valF, $objsf, DEBUG);
769                // Recupère les messages retourné par la fonction
770                $message .= $valF['message'];
771                // Supprime les messages de la liste des valeurs
772                unset($valF['message']);
773            }
774            // Ajoute le duplicata
775            $clone_obj->ajouter($valF, $this->db, DEBUG);
776            // Si aucune erreur se produit dans la classe instanciée
777            if ($clone_obj->correct === true) {
778                // Récupère l'identifiant de l'objet créé
779                $clone_obj_id = $clone_obj->valF[$obj];
780    
781                // Message
782                $message .= sprintf(_("La copie de l'enregistrement %s avec l'identifiant %s s'est effectuee avec succes"), "<span class='bold'>"._($obj)."</span>", "<span class='bold'>".$idx."</span>")."<br />";
783    
784                // Ajout de l'identifant au tableau des résultat
785                $resArray[$obj.'_'.$idx] = $clone_obj_id;
786    
787                // S'il y a au moins un objet metier associé
788                if ($objsf != "") {
789                    // Liste des objet métier associés
790                    $list_objsf = explode(",", $objsf);
791                    // Pour chaque objet associé
792                    foreach ($list_objsf as $key => $objsf) {
793                        // Inclus la classe de l'objet métier associé
794                        require_once "../obj/".$objsf.".class.php";
795    
796                        // Requête SQL permettant de récupérer les informations sur
797                        // l'objet métier associé
798                        $sql = "SELECT *
799                                FROM ".DB_PREFIXE.$objsf."
800                                WHERE ".$obj." = ".$idx;
801                        $res = $this->db->query($sql);
802                        $this->isDatabaseError($res);                    
803    
804                        // Pour chaque élément associé
805                        while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
806                            // Identifiant de l'objet associé à copier
807                            $idxsf = $row[$objsf];
808    
809                            // Valeurs clonées
810                            $valF = $row;
811                            // Valeurs non clonées
812                            $valF[$obj] = $clone_obj_id;
813                            // Identifiant modifié pour que ça soit un ajout
814                            $valF[$objsf] = "]";
815                            // Instance de l'objet métier associé
816                            $clone_objsf = new $objsf("]", $this->db, DEBUG);
817                            // Si dans l'objet métier associé
818                            // la fonction "copier" existe
819                            if (method_exists($clone_objsf, "copier")) {
820                                // Traitement sur les valeurs du duplicata
821                                $valF = $clone_objsf->copier($valF, $objsf, DEBUG);
822                                // Recupère les messages retourné par la fonction
823                                $message .= $valF['message'];
824                                // Supprime les messages de la liste des valeurs
825                                unset($valF['message']);
826                            }
827                            // Ajoute le duplicata
828                            $clone_objsf->ajouter($valF, $this->db, DEBUG);
829                            // Si aucune erreur se produit dans la classe instanciée
830                            if ($clone_objsf->correct === true) {
831                                // Récupère l'identifiant de l'objet créé
832                                $clone_objsf_id = $clone_objsf->valF[$objsf];
833    
834                                // Message
835                                $message .= sprintf(_("La copie de l'enregistrement %s avec l'identifiant %s s'est effectuee avec succes"), "<span class='bold'>"._($objsf)."</span>", "<span class='bold'>".$idxsf."</span>")."<br />";
836    
837                                // Ajout de l'identifant au tableau des résultat
838                                $resArray[$objsf.'_'.$row[$objsf]] = $clone_objsf_id;
839                            } else {
840    
841                                // Message d'erreur récupéré depuis la classe
842                                $message .= $clone_objsf->msg;
843                                // Type du message
844                                $message_type = "error";
845                            }
846                        }
847                    }
848                }
849            //    
850            } else {
851    
852                // Message d'erreur récupéré depuis la classe
853                $message .= $clone_obj->msg;
854                // Type du message
855                $message_type = "error";
856            }
857    
858            // Ajout du message au tableau des résultats
859            $resArray['message'] = $message;
860            // Ajout du type de message au tableau des résultats
861            $resArray['message_type'] = $message_type;
862    
863            // Retourne le tableau des résultats
864            return $resArray;
865        }
866    
867        /**
868         * Permet de détailler les conditions pour l'affichage des contraintes dans
869         * une édition.
870         * @param  string $contraintes_param    Chaine des conditions
871         * @return array                        Conditions
872         */
873        function explodeConditionContrainte($contraintes_param) {
874    
875            // Initialisation des variables
876            $return = array();
877            $listGroupes = "";
878            $listSousgroupes = "";
879    
880            // Coupe la condition au ";"
881            // Doit séparer groupe et sous-groupe
882            $contraintes_params = explode(";", $contraintes_param);
883    
884            // Enlève le mots-clés "ssgroupe=" dans la première partie de
885            // la condition
886            $listSousgroupes = str_replace("ssgroupe=", "", $contraintes_params[0]);
887            // Si après traitement le mots-clés "groupe=" est toujours présent
888            if (strstr($listSousgroupes, "groupe=")) {
889                // On enlève le mots-clés "groupe="
890                $listGroupes = str_replace("groupe=", "", $contraintes_params[0]);
891                // Met à null la liste des sousgroupes
892                $listSousgroupes = "";
893            }
894            // Si il y a une deuxième partie à la condition, ça doit être les
895            // sousgroupes
896            if (count($contraintes_params) > 1) {
897                // Enlève le mots-clés "ssgroupe="
898                $listSousgroupes = str_replace("ssgroupe=", "", $contraintes_params[1]);
899            }
900    
901            // Récupère la liste des groupes et sous-groupes qui doivent
902            // être utilisés pour la condition
903            $groupes = explode(",", $listGroupes);
904            $sousgroupes = explode(",", $listSousgroupes);
905    
906            // Tableau à retourner
907            $return['groupes'] = $groupes;
908            $return['sousgroupes'] = $sousgroupes;
909    
910            //
911            return $return;
912        }
913  }  }
914    
915  ?>  ?>

Legend:
Removed from v.2282  
changed lines
  Added in v.2715

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26