Exemplo n.º 1
0
 public function ChargerFonctions($xmlfile, Doctrine_Connection $conn = null)
 {
     /* Tous les objets vont etre recharger sur le projet courant. 
      * Du coup on récupère l'id et le ref du projet
      */
     $project_id = $this->getProjectId();
     $project_ref = $this->getRefId();
     if ($conn == null) {
         $conn = Doctrine_Manager::connection();
     }
     $dom = new DomDocument();
     if ($xmlfile != null) {
         $dom->loadXML($xmlfile);
         $dom->save('projet.xml');
         /* A utiliser en cas de deboguage pour visualiser le contenu du fichier */
         //recherche de l'element racine <projets>
         if ($dom->documentElement) {
             $projets = $dom->documentElement;
             //rechargement des données du projet
             //si le projet a été trouvé
             if ($projets->getElementsByTagName("info")->item(0)) {
                 MyFunction::rechargerProjet($projets->getElementsByTagName("info")->item(0), true, $conn);
                 //Création des tables temporaires pour opérations d'insert - delete
                 //Table temporaire des fonctions
                 Doctrine_Core::getTable('ScriptEiFunction')->insertTmpData($projets, $project_id, $project_ref, $conn);
                 //Table temporaire des dossiers de fonctions (EiView)
                 Doctrine_Core::getTable('ScriptEiView')->insertTmpData($projets, $project_id, $project_ref, $conn);
                 //Table temporaire des scripts
                 Doctrine_Core::getTable('ScriptEiScript')->insertTmpData($projets, $project_id, $project_ref, $conn);
                 //Table temporaire des relations script-profil
                 Doctrine_Core::getTable('ScriptEiScriptVersion')->insertTmpData($projets, $project_id, $project_ref, $conn);
                 //Table temporaire des notices
                 Doctrine_Core::getTable('ScriptEiNotice')->insertTmpData($projets, $project_id, $project_ref, $conn);
                 //Table temporaire des profils de notice
                 Doctrine_Core::getTable('ScriptEiNoticeProfil')->insertTmpData($projets, $project_id, $project_ref, $conn);
                 //Table temporaire des versions de notice
                 Doctrine_Core::getTable('ScriptEiVersionNotice')->insertTmpData($projets, $project_id, $project_ref, $conn);
                 //Rechargement des relations version_notice-profil du projet
                 Doctrine_Core::getTable('EiNoticeProfil')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des  versions de notice d'un projet
                 Doctrine_Core::getTable('EiVersionNotice')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des  notice d'un projet
                 //$this->getNotices()->delete($conn);
                 Doctrine_Core::getTable('EiNotice')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des liaisons utilisateurs-tickets
                 $this->getUserTickets()->delete($conn);
                 //Doctrine_Core::getTable('EiUserTicket')->deleteUserTicketForProject($project_id, $project_ref , $conn);
                 Doctrine_Core::getTable('EiUserTicket')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des paramètres de profil
                 //$this->getProjectProfileParams()->delete($conn);
                 Doctrine_Core::getTable('EiProfileParam')->deleteProjectProfileParams($project_id, $project_ref, $conn);
                 Doctrine_Core::getTable('EiProfileParam')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des paramètres d'une fonction
                 Doctrine_Core::getTable('EiFunctionHasParam')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des liaisons script-profil des fonctions d'un projet
                 Doctrine_Core::getTable('EiScriptVersion')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des scripts de fonction
                 Doctrine_Core::getTable('EiScript')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des fonctions (KalFunction pour ne pas créer d'ambiguité avec EiFonction)
                 Doctrine_Core::getTable('KalFunction')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des commandes de fonction d'un projet
                 Doctrine_Core::getTable('EiFunctionHasCommande')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des vues du projet
                 //Doctrine_Core::getTable('EiView')->deleteProjectViews($project_id, $project_ref , $conn);
                 Doctrine_Core::getTable('EiView')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des profils
                 //Doctrine_Core::getTable('EiProfil')->deleteProjectProfiles($project_id, $project_ref , $conn );
                 Doctrine_Core::getTable('EiProfil')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des tickets
                 Doctrine_Core::getTable('EiTicket')->deleteProjectTickets($project_id, $project_ref, $conn);
                 Doctrine_Core::getTable('EiTicket')->reload($projets, $project_id, $project_ref, $conn);
                 //récupération des noeuds ouverts pour les garder ouverts.
                 $nodes = $this->getAllProjectNodes();
                 $openNodes = array();
                 foreach ($nodes as $i => $n) {
                     $opened = $n->getEiTreeOpenedByUsers();
                     if ($opened->count() > 0) {
                         $openNodes[$n->getId()] = $opened;
                     }
                 }
                 //Doctrine_Core::getTable('EiTree')->deleteProjectNodes($project_id, $project_ref ,$conn);
                 //Rechargement de l'arbre
                 Doctrine_Core::getTable('EiTree')->reload($projets, $project_id, $project_ref, $conn, $openNodes);
                 //Rechargement des langues du projet
                 Doctrine_Core::getTable('EiProjectLang')->deleteProjectLangs($project_id, $project_ref, $conn);
                 Doctrine_Core::getTable('EiProjectLang')->reload($projets, $project_id, $project_ref, $conn);
                 //Rechargement des paramètres globaux du projet
                 Doctrine_Core::getTable('EiProjectParam')->deleteProjectParams($project_id, $project_ref, $conn);
                 Doctrine_Core::getTable('EiProjectParam')->reload($projets, $project_id, $project_ref, $conn);
                 //Suppression des fonctions inactives
                 Doctrine_Core::getTable('KalFunction')->deleteInactiveFunctions($this, $conn);
                 //Création des status par défaut du projet
                 $this->createDefaultStates($conn);
             }
         } else {
             $d = date('Y-m-d H:i:s');
             $this->setObsolete(true);
             $this->setCheckedAt($d);
             $this->save();
         }
     }
     return null;
 }