Exemplo n.º 1
0
 /**
  * Ajouter une fonction à une version/sous_version
  * @author Grégory Elhaimer
  * @param sfWebRequest $request
  * @return type 
  */
 public function executeAjouter(sfWebRequest $request)
 {
     $this->getUrlParameters($request);
     $this->checkProject($request);
     $this->checkProfile($request, $this->ei_project);
     //Récupération du profil
     $this->forward404Unless($this->ei_version, "Version not found.");
     $this->checkFunction($request, $this->ei_project);
     $this->forward404Unless($this->kal_function);
     /* Récupération du User courant et du package par défaut */
     $this->defaultPackage = $this->getDefaultPackage($this->ei_user, $this->ei_project);
     $function_ref = $request->getParameter('function_ref');
     $function_id = $request->getParameter('function_id');
     $subjectFunctions = array();
     /* Récupération d'une liaison éventuelle liaison existente entre la fonction et le bug */
     if ($function_id != null && $function_ref != null && $this->defaultPackage != null) {
         /* Recherche du sujet par rapport au package par défaut.
          * Ici, on vérifie que plusieurs bugs ne sont pas associés au même package , auquel cas on déclenche un exception pour contacter l'administrateur .
          */
         $this->defaultPackageSubjects = Doctrine_Core::getTable('EiSubject')->findByPackageIdAndPackageRefAndProjectIdAndProjectRef($this->defaultPackage->getTicketId(), $this->defaultPackage->getTicketRef(), $this->ei_project->getProjectId(), $this->ei_project->getRefId());
         if (count($this->defaultPackageSubjects) > 1) {
             //Plusieurs sujets avec la même intervention.On déclenche une alerte système.
             throw new Exception('Please contact administrator.There many intervention with the same package ...');
         } elseif (count($this->defaultPackageSubjects) == 1) {
             $this->ei_subject = $this->defaultPackageSubjects->getFirst();
             $link = Doctrine_Core::getTable('EiSubjectFunctions')->findOneBySubjectIdAndFunctionIdAndFunctionRef($this->ei_subject->getId(), $function_id, $function_ref);
             if ($link != null) {
                 $subjectFunctions[] = array('sf_subject_id' => $link->getSubjectId(), 'sf_function_id' => $link->getFunctionId(), 'sf_function_ref' => $link->getFunctionRef(), 'sf_automate' => $link->getAutomate());
             }
         }
     }
     //création et initialisation de la fonction
     $ei_fonction = new EiFonction();
     $ei_fonction->setName($this->kal_function->getNodeTree()->getName());
     $ei_fonction->setProjectId($this->project_id);
     $ei_fonction->setProjectRef($this->project_ref);
     $ei_fonction->setFunctionId($this->kal_function->getFunctionId());
     $ei_fonction->setFunctionRef($this->kal_function->getFunctionRef());
     $ei_fonction->setSubjectFunctions($subjectFunctions);
     $this->ei_version_structure = Doctrine_Core::getTable('EiVersionStructure')->find($request->getParameter('ei_version_structure_id'));
     $this->forward404Unless($this->ei_version_structure && $this->ei_version_structure->getEiVersionId() == $this->ei_version->getId());
     $ei_version_structure = new EiVersionStructure();
     $ei_version_structure->setType('EiFonction');
     $ei_version_structure->setEiVersion($this->ei_version);
     $ei_version_structure->setEiVersionStructureParentId($this->ei_version_structure->getId());
     $ei_fonction->setEiVersionStructure($ei_version_structure);
     $ei_fonction = $ei_fonction->save();
     if ($insert_after = $request->getParameter('insert_after')) {
         $aft_version = Doctrine_Core::getTable('EiVersionStructure')->find($insert_after);
         $this->forward404Unless($aft_version);
         $ei_version_structure->getNode()->insertAsNextSiblingOf($aft_version);
     } else {
         $ei_version_structure->getNode()->insertAsFirstChildOf($this->ei_version_structure);
     }
     $form = new EiFonctionForm($ei_fonction, array('params' => $ei_fonction->getEiParams(), 'mappings' => $ei_fonction->getEiFunctionMapping()));
     return $this->renderPartial('ajouterFonction', array('form' => $form, 'insert_after' => $ei_version_structure->getId(), 'obj' => $ei_fonction, 'paramsForUrl' => array('ei_version_id' => $this->ei_version->getId(), 'ei_version_structure_id' => $this->ei_version_structure->getId(), 'project_id' => $this->project_id, 'project_ref' => $this->project_ref, 'profile_id' => $this->profile_id, 'profile_ref' => $this->profile_ref, 'profile_name' => $this->profile_name, 'default_notice_lang' => $this->ei_project->getDefaultNoticeLang())));
 }
Exemplo n.º 2
0
 public function createCopie($ei_version_str, $conn = null)
 {
     $copie = null;
     try {
         //$conn->beginTransaction();
         //Création de la copie
         $copie = new EiFonction();
         $copie->setDescription($this->getDescription());
         $copie->setEiVersionStructure($ei_version_str);
         $copie->setFunctionId($this->getFunctionId());
         $copie->setFunctionRef($this->getFunctionRef());
         $copie->setProjectRef($this->getProjectRef());
         $copie->setProjectId($this->getProjectId());
         //Sauvegarde de la copie
         $copie->save($conn, false);
         $params = $this->getEiParams();
         if ($params->getFirst()) {
             foreach ($params as $i => $param) {
                 $param->createCopie($copie->getId(), $conn);
             }
         }
     } catch (Exception $e) {
         throw $e;
     }
     return $copie;
 }