/**
  * Action permettant de créer un data set.
  *
  * @param sfWebRequest $request
  */
 public function execute($request)
 {
     $this->ei_scenario = Doctrine_Core::getTable('EiScenario')->find($this->scenario->getId());
     $this->forward404Unless($this->ei_scenario);
     $this->forward404Unless(Doctrine_Core::getTable("EiProjectUser")->getEiProjet($this->ei_scenario->getProjectId(), $this->ei_scenario->getProjectRef(), $this->user->getEiUser()));
     /** @var EiDataSetStructure $ei_root_node */
     $ei_root_node = Doctrine_Core::getTable("EiDataSetStructure")->getRoot($this->ei_scenario->getId());
     $this->forward404Unless($ei_root_node);
     /** @var DOMDocument $xsd */
     $xsd = EiDataSetStructure::createXSD($ei_root_node);
     $xsd->formatOutput = true;
     $xsd = $xsd->saveXML();
     $response = $this->getResponse();
     $response->setContentType('text/xml');
     $response->setHttpHeader('Content-Disposition', 'attachment; filename="' . $this->ei_scenario->getNomScenario() . '-XSD.xsd');
     $response->setContent($xsd);
     return sfView::NONE;
 }
Example #2
0
 /**
  * @param sfWebRequest $request
  */
 public function executeDownloadXMLSample(sfWebRequest $request)
 {
     //**************************************************************************************************************
     // VERIFICATION DES INFORMATIONS PROJET/PROFIL.
     $this->checkUpParameters($request);
     // Récupération & vérification du scénario.
     $this->ei_scenario = Doctrine_Core::getTable('EiScenario')->find($this->request->getParameter('ei_scenario_id'));
     $this->forward404Unless($this->ei_scenario);
     /** @var EiDataSetStructure $ei_root_node */
     $ei_root_node = Doctrine_Core::getTable("EiDataSetStructure")->getRoot($this->ei_scenario->getId());
     $this->forward404Unless($ei_root_node);
     /** @var DOMDocument $xml */
     $xml = EiDataSetStructure::createXML($ei_root_node);
     $xml->formatOutput = true;
     $xml = $xml->saveXML();
     $response = $this->getResponse();
     $response->setContentType('text/xml');
     $response->setHttpHeader('Content-Disposition', 'attachment; filename="' . $this->ei_scenario->getNomScenario() . '-XMLSample.xml');
     $response->setContent($xml);
     return sfView::NONE;
 }
Example #3
0
 /**
  * TODO: Améliorer la gestion des max_execution_time
  * Create data lines from XML to Nested Tree.
  *
  * @param $file
  * @param null $root_data_line
  * @throws Exception
  */
 public function createDataLines($file, $root_data_line = null)
 {
     $maxExecutionTime = ini_get("max_execution_time");
     set_time_limit(0);
     $this->save();
     $xml = new DOMDocument();
     if (is_file($file) && @$xml->load($file) === false || !is_file($file) && is_string($file) && @$xml->loadXML($file) === false) {
         throw new Exception('Your XML file seems to be corrupted. Please check the syntax.');
     }
     //récupération de la racine.
     $root = $xml->documentElement;
     $root_data_line = $root_data_line === null ? $this->createRootDataLine() : $root_data_line;
     //**************************************************//
     //***   ETAPE 1 : Récupération de la Structure   ***//
     //**************************************************//
     /** @var EiDataSetStructure[] $ei_dataset_structures */
     $ei_dataset_structures = $this->tableStructure->createQuery('str')->where("str.ei_scenario_id =  ?", $this->root_str->getEiScenarioId())->fetchArray();
     //********************************************//
     //***   ETAPE 2 : Analyse du fichier XML   ***//
     //********************************************//
     $compteur = 1;
     $index = 0;
     $listeElts = array();
     $this->evaluateDataLines($listeElts, $compteur, $index, $ei_dataset_structures, $root);
     //************************************//
     //***   ETAPE 4 : Calcul des IDs   ***//
     //************************************//
     /** @var EiDataLineTable $DataLinesTable */
     $DataLinesTable = Doctrine_Core::getTable("EiDataLine");
     $conn = Doctrine_Manager::connection();
     // On retire le root.
     $rootTab = array_shift($listeElts);
     $conn->beginTransaction();
     $DataLinesTable->insertDataLinesFromTab($listeElts, $root_data_line->getId(), $this->getId(), $conn);
     $root_data_line->setRgt($rootTab["rgt"]);
     $root_data_line->save($conn);
     $conn->commit();
     set_time_limit($maxExecutionTime);
 }