/** * * * @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; }
/** * 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))); }