Esempio n. 1
0
 /**
  * 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));
 }