/** * @param EiCampaignExecution $execution * @return array */ public function getTestSetExecutionInfos(EiCampaignExecution $execution) { // Création de la requête SQL de récupération $sql = "SELECT id, duree, status_nom, status_color FROM ei_test_set_status_vw WHERE id IN (" . "SELECT ei_test_set_id FROM ei_campaign_execution_graph WHERE execution_id =" . $execution->getId() . ");"; // Récupération des résultats. $resultats = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAll($sql); $datas = array(); foreach ($resultats as $resultat) { $datas[$resultat["id"]] = $resultat; unset($datas[$resultat["id"]]["id"]); } return $datas; }
/** * @param array $array * @param EiCampaignExecution $exec * @return EiCampaignExecution */ private function createObjectStatusFromArray(array $array, EiCampaignExecution $exec = null) { if ($exec == null) { // Création de l'objet. $exec = new EiCampaignExecution(); $exec->fromArray($array); } $exec->setStatusName($array["status_nom"]); $exec->setStatusColor($array["status_color"]); $exec->setDuree($array["duree"]); $exec->setNbEtapesCamp($array["nb_step_camp"]); $exec->setNbEtapesExecution($array["nb_step_ex"]); $exec->setNbEtapesExecutees($array["nb_step_executed"]); $exec->setAuthorUsername($array["author_username"]); return $exec; }
/** * Create an execution. * * @param sfRequest $request A request object */ public function executeCreate(sfWebRequest $request) { $this->setLayout(false); $this->getResponse()->setContentType('application/json'); $resultat = array(); $erreur = false; $id = false; $url = false; $internal = false; // Récupération des valeurs POST. if ($request->getParameter("internal") != null && $request->getParameter("internal") == true) { $projet_nom = $request->getParameter("projet"); $profil_nom = $request->getParameter("profil"); $campagne_id = $request->getParameter("campagne"); $positionDebut = $request->getParameter("position_debut"); $positionFin = $request->getParameter("position_fin"); $onError = $request->getParameter("onError"); $internal = true; } else { $projet_nom = $request->getPostParameter("projet"); $profil_nom = $request->getPostParameter("profil"); $campagne_id = $request->getPostParameter("campagne"); $positionDebut = $request->getPostParameter("position_debut"); $positionFin = $request->getPostParameter("position_fin"); $onError = $request->getPostParameter("onError"); } // Recherche des éléments. // On récupère le projet, le profil et la campagne. /** @var EiProjet $oProjet */ $oProjet = Doctrine_Core::getTable("EiProjet")->findOneByName($projet_nom); /** @var EiProfil $oProfil */ $oProfil = $oProjet != null ? Doctrine_Core::getTable("EiProfil")->findOneByNameAndProjectIdAndProjectRef($profil_nom, $oProjet->getProjectId(), $oProjet->getRefId()) : null; /** @var EiCampaign $oCampagne */ $oCampagne = Doctrine_Core::getTable("EiCampaign")->find($campagne_id); // On vérifie la concordance entre le projet et le profil puis le projet et la campagne. if (!($oProfil != null && $oProjet != null && $oCampagne != null)) { $erreur = "Impossible to retrieve Environment, project or campaign."; } elseif (!($oProjet->getProjectId() == $oProfil->getProjectId() && $oProjet->getRefId() == $oProfil->getProjectRef())) { $erreur = "Impossible to retrieve project's Environment."; } elseif (!($oProjet->getProjectId() == $oCampagne->getProjectId() && $oProjet->getRefId() == $oCampagne->getProjectRef())) { $erreur = "Impossible to retrieve project's campaign."; } else { $graphs = Doctrine_Core::getTable("EiCampaign")->getCampaignScenarios($oCampagne, $positionDebut, $positionFin); $execution = new EiCampaignExecution(); $execution->setAuthorId($this->getUser()->getGuardUser()->getId()); $execution->setProfileId($oProfil->getProfileId()); $execution->setProfileRef($oProfil->getProfileRef()); $execution->setProjectId($oProjet->getProjectId()); $execution->setProjectRef($oProjet->getRefId()); $execution->setCampaignId($campagne_id); $execution->setTermine(false); if (is_array($onError)) { $execution->setOnError($onError["id"]); } $execution->save(); $position = 1; /** @var EiCampaignGraph $graph */ foreach ($graphs as $graph) { $executionGraph = new EiCampaignExecutionGraph(); $executionGraph->setDataSetId($graph->getDataSetId()); $executionGraph->setDescription($graph->getDescription()); $executionGraph->setExecutionId($execution->getId()); $executionGraph->setFilename($graph->getFilename()); $executionGraph->setStepTypeId($graph->getStepTypeId()); $executionGraph->setGraphId($graph->getId()); $executionGraph->setMimeType($graph->getMimeType()); $executionGraph->setPath($graph->getPath()); $executionGraph->setPosition($position++); $executionGraph->setScenarioId($graph->getScenarioId()); $executionGraph->setEiVersion($graph->getEiScenario()->getVersionForProfil($oProfil)); $executionGraph->setState($graph->getState()); $executionGraph->save(); $this->execution = $executionGraph; } $id = $execution->getId(); $url = $this->generateUrl("executionGraphHasChainedList", array('project_id' => $oProjet->getProjectId(), 'project_ref' => $oProjet->getRefId(), 'profile_ref' => $request->getParameter("profile_ref"), 'profile_id' => $request->getParameter("profile_id"), 'profile_name' => $request->getParameter("profile_name"), 'campaign_id' => $oCampagne->getId(), 'execution_id' => $execution->getId())); $this->getUser()->setAttribute("executionIdForRobot", $execution->getId()); } $resultat["erreur"] = $erreur; $resultat["id"] = $id; $resultat["url"] = $url; return $internal != null ? sfView::NONE : $this->renderText(json_encode($resultat)); }