Exemplo n.º 1
0
 /**
  * Méthode permettant de créer une copie de la version.
  *
  * @param $new_name
  * @param Doctrine_Connection $conn
  * @param null $ei_scenario_id
  * @return EiVersion|null
  * @throws Exception
  */
 public function createCopie($new_name, Doctrine_Connection $conn = null, $ei_scenario_id = null)
 {
     // Déclaration de la variable représentant l'instance de la version.
     /** @var EiVersion $copie */
     $copie = null;
     /** @var sfLogger $logger */
     $logger = sfContext::getInstance()->getLogger();
     try {
         if ($conn == null) {
             $conn = Doctrine_Manager::connection();
         }
         //Debut de la transaction
         $conn->beginTransaction();
         //********************************************************//
         //**********          CREATION VERSION          **********//
         //********************************************************//
         $logger->info("----------------------------------------------");
         $logger->info("----------     CREATION VERSION     ----------");
         $logger->info("----------------------------------------------");
         // Instanciation de la version
         $copie = new EiVersion();
         // Affectation de son libellé.
         $copie->setLibelle($new_name);
         // On stocke l'identifiant du scénario.
         if ($ei_scenario_id) {
             $copie->setEiScenarioId($ei_scenario_id);
         } else {
             $copie->setEiScenarioId($this->getEiScenarioId());
         }
         // La description
         $copie->setDescription($this->getDescription());
         $this->createStructureCopy($copie, $conn, $ei_scenario_id);
         // Fin de la transaction. Tout s'est bien déroulé, on enregistre.
         $conn->commit();
     } catch (Exception $e) {
         // En cas d'erreur, on annule l'ensemble de la transaction.
         $conn->rollback();
         throw $e;
     }
     return $copie;
 }
Exemplo n.º 2
0
 public function executeCreate(sfWebRequest $request)
 {
     $this->checkProject($request);
     $this->checkProfile($request, $this->ei_project);
     $this->checkEiScenario($request, $this->ei_project);
     /* On recherche le package par défaut. S'il n'est pas définit , on le spécifie à l'utilisateur au lieu  de lui retourner le formulaire */
     $this->searchDefPackAndRedirect();
     if (!($request->isMethod(sfRequest::POST) || $request->isXmlHttpRequest())) {
         $this->forward404("Request error ...");
     }
     //vérification des paramètres.
     $this->getUrlParameters($request);
     $this->ei_block_root = Doctrine_Core::getTable('EiBlock')->getEiBlockRoot($this->ei_scenario_id);
     if (!$this->ei_block_root) {
         return $this->createJSONErrorResponse("The version could not be created. Scenario's root block not found.");
     }
     $ei_blocks = Doctrine_Core::getTable('EiVersionStructure')->getEiBlocksTree($this->ei_block_root->getId(), EiVersionStructure::getBlockTypes());
     //création de la version
     $ei_version = new EiVersion();
     $ei_version->setEiScenarioId($this->ei_scenario_id);
     $ei_version->setEiScenarioBlocks($ei_blocks);
     $ei_version->setOldVersionId($this->ei_block_root->getEiVersionId());
     $this->form = new EiVersionForm($ei_version, array('ei_scenario_package' => new EiScenarioPackage()));
     $ei_scenario_package_form = $request->getParameter($this->form->getName());
     $ei_scenario_package_datas = $ei_scenario_package_form['ei_scenario_package'];
     if ($ei_scenario_package_datas['package_id'] != null && $ei_scenario_package_datas['package_ref'] != null) {
         $this->ei_package = Doctrine_core::getTable('EiTicket')->findOneByTicketIdAndTicketRef($ei_scenario_package_datas['package_id'], $ei_scenario_package_datas['package_ref']);
         /* On recherche si pour le package par défaut et le scénario , il existe une  version */
         $this->ei_scenario_package = Doctrine_Core::getTable('EiScenarioPackage')->findOneByEiScenarioIdAndPackageIdAndPackageRef($this->ei_scenario_id, $ei_scenario_package_datas['package_id'], $ei_scenario_package_datas['package_ref']);
     } else {
         //Erreur dû au fait qu'on ne permet pas la création d'une version sans spécification de package
         throw new Exception('No package set for version !');
     }
     $this->processForm($request, $this->form);
     $this->setTemplate('new');
 }