/**
  *
  *
  * @param EiBlock $parent
  * @param $params
  * @return null
  */
 private function getLogsFromStructureParentAndBlockName($parent, &$params)
 {
     $elts = null;
     foreach ($params as $ind => $param) {
         if ($param["ei_version_structure_id"] == $parent->getId() && $this->getName() == $param["param_name"]) {
             $elts["params"][$param["ei_log_id"]] = array("name" => $param["param_name"], "value" => $param["param_valeur"], "type" => $param["param_type"], "log_id" => $param["ei_log_id"]);
             $elts["logs"][] = $param["ei_log_id"];
             array_splice($params, $ind, 1);
         }
     }
     return $elts;
 }
Example #2
0
 /**
  * Méthode permettant de créer un block avec ses paramètres, de l'insérer au bon endroit dans la structure et
  * de l'afficher dans la structure.
  *
  * @param sfWebRequest $request
  */
 public function executeCreateForVersion(sfWebRequest $request)
 {
     $this->checkProject($request);
     $this->checkProfile($request, $this->ei_project);
     $this->forward404Unless($request->isMethod(sfRequest::POST));
     // Tables utilisées.
     /** @var EiVersionStructureTable $tableVersionStr */
     $tableVersionStr = Doctrine_Core::getTable("EiVersionStructure");
     // Initialisation des variables de retour.
     $html = "";
     $success = false;
     $type = $request->getPostParameter("typeBlock");
     // Récupération des informations principales.
     //=> ID de l'élément de la structure de la version précédant le block.
     $this->insertAfter = $request->getParameter('insert_after');
     //=> ID du block parent au sein de la structure de la version.
     $this->ei_block_parent_id = $request->getParameter('ei_version_structure_id');
     //=> ID de la version du scénario.
     $this->ei_version_id = $request->getParameter("ei_version_id");
     // Récupération des objets à partir des informations principales.
     /** @var EiVersion $ei_version */
     $ei_version = Doctrine_Core::getTable("EiVersion")->find($this->ei_version_id);
     /** @var EiVersionStructure $ei_version_block_parent */
     $ei_version_block_parent = $tableVersionStr->find($this->ei_block_parent_id);
     /** @var EiVersionStructure $ei_block_parent */
     $ei_block_parent = $ei_version_block_parent;
     /** @var EiVersionStructure $ei_version_structure_precedent */
     $ei_version_structure_precedent = $tableVersionStr->find($this->insertAfter);
     $ei_version_structure_precedent = !is_bool($ei_version_structure_precedent) ? $ei_version_structure_precedent : null;
     $this->forward404Unless($ei_version);
     $this->forward404Unless($ei_block_parent);
     // Création de l'instance de Bloc selon le type sélectionné.
     if ($type == null) {
         /** @var EiBlock $ei_block */
         $ei_block = new EiBlock();
         // On détermine les données déjà en notre possession.
         $ei_block->setEiVersionStructureParentId($ei_version_block_parent->getId());
         // Création du formulaire.
         $this->form = new EiBlockForm($ei_block);
     } elseif ($type == EiVersionStructure::$TYPE_FOREACH) {
         /** @var EiBlockForeach $ei_block */
         $ei_block = new EiBlockForeach();
         // On détermine les données déjà en notre possession.
         $ei_block->setEiVersionStructureParentId($ei_version_block_parent->getId());
         // Création du formulaire.
         $this->form = new EiBlockForeachForm($ei_block);
     } else {
         $ei_block = new EiBlock();
         // On détermine les données déjà en notre possession.
         $ei_block->setEiVersionStructureParentId($ei_version_block_parent->getId());
         // Création du formulaire.
         $this->form = new EiBlockForm($ei_block);
     }
     $ei_block->setEiVersionStructureParentId($ei_block_parent);
     $ei_block->setRootId($ei_block_parent->getRootId());
     $ei_block->setInsertAfter($ei_version_structure_precedent != null ? $ei_version_structure_precedent->getId() : null);
     $ei_block->setEiVersionId($ei_block_parent->getEiVersionId());
     $this->ei_block = $ei_block;
     $this->ei_block_parent = $ei_block_parent;
     $this->element_structure_precendent = $ei_version_structure_precedent;
     $this->ei_block_precedent = null;
     $this->ei_vs_precedent = $ei_version_structure_precedent;
     if ($ei_version_structure_precedent != null && !$ei_version_structure_precedent->isEiBlock()) {
         $node = $ei_version_structure_precedent;
         /** @var EiVersionStructure $node */
         while (($node = $node->getNode()->getPrevSibling()) && $this->ei_block_precedent == null) {
             if ($node->isEiBlock()) {
                 $this->ei_block_precedent = $node;
             }
         }
     } else {
         $this->ei_block_precedent = $ei_version_structure_precedent;
     }
     // Création du formulaire.
     $this->isFull = true;
     //*****     VERIFICATION DU FORMULAIRE
     //=> Si OK, on prépare la réponse à retourner, à savoir le noeud à ajouter dans la structure de la version + dans
     // le menu contenant la structure du scénario.
     if (!($JSONResponse = $this->processForm($request, $this->form))) {
         // Récupération du block créé au sein de la structure.
         /** @var EiVersionStructure $blockVersionStruct */
         $blockVersionStruct = Doctrine_Core::getTable("EiVersionStructure")->findOneByIdAndEiVersionId($this->ei_block->getId(), $ei_version->getId());
         // Récupération de la ligne à insérer dans la structure de la version avec le curseur.
         $html = $this->getPartial("eiversion/lineBlockWithCursor", array('child' => $blockVersionStruct, 'insert_after' => $blockVersionStruct->getId(), 'paramsForUrl' => array('ei_version_id' => $ei_version->getId(), 'ei_version_structure_id' => $ei_version_block_parent->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())));
         // On vérifie où le noeud a été inséré.
         if ($this->element_structure_precendent != null && $this->ei_block_precedent != null) {
             //$this->element_structure_precendent->getId();
             $insertAfter = $this->ei_block_precedent->getId();
             $insertFirst = false;
         } else {
             $insertAfter = false;
             $insertFirst = $this->ei_block->getEiVersionStructureParentId();
         }
         // On récupère le noeud à ajouter dans le menu de la structure.
         $createLiElemParams = $this->urlParameters;
         $createLiElemParams['ei_scenario_id'] = $ei_version->getEiScenarioId();
         $createLiElemParams['ei_version_id'] = $ei_version->getId();
         $itemTree = $this->ei_block->createLiElem($createLiElemParams, 'eiversion');
         // On indique que tout c'est bien passé.
         $success = true;
     } else {
         $html = $this->getPartial('block/formFull', array('form' => $this->form));
         $itemTree = null;
         $insertAfter = null;
         $insertFirst = null;
     }
     return $this->renderText(json_encode(array('html' => $html, 'success' => $success, 'itemTree' => $itemTree, 'insert_after' => $insertAfter, 'insert_first' => $insertFirst, 'type' => $type)));
 }