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