/[openfoncier]/trunk/obj/utils.class.php
ViewVC logotype

Diff of /trunk/obj/utils.class.php

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

revision 2689 by softime, Thu Dec 12 18:00:35 2013 UTC revision 2690 by softime, Wed Jan 22 16:04:33 2014 UTC
# Line 722  class utils extends application { Line 722  class utils extends application {
722          }          }
723          return $res;          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  ?>  ?>

Legend:
Removed from v.2689  
changed lines
  Added in v.2690

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26