processDatas)) unset($this->processDatas); $final = ""; if (is_dir(IHMConfigClass::getDownloadTmpPath())) { foreach (glob(IHMConfigClass::getDownloadTmpPath().'*.zip') as $filename) unlink($filename); foreach (glob(IHMConfigClass::getDownloadTmpPath().'*.tar.gz') as $filename) unlink($filename); } foreach($input->list as $tt) { //create a list of data to treat $processData = new TTRequestDataClass(); if (strpos($tt->id,"sharedtimeTable_") === 0) { //Shared TimeTable $result = IHMSharedObjectsClass::getPath("timeTable", $tt->id); if (!$result['success']) throw new Exception('Shared TimeTable '.$tt->name.' not found'); $ttName = $result['path']; } else { //User TimeTable $ttName = IHMConfigClass::getUserTTPath().$tt->id.'.xml'; } if (!file_exists($ttName)) throw new Exception('TimeTable '.$tt->name.' not found'); $processData->setInputFileName($ttName); $processData->setInputFileFormat(TTRequestFileFormatEnum::INTERNAL); $processData->setOutputDir(IHMConfigClass::getDownloadTmpPath()); switch ($input->fileformat) { case 'vot' : $processData->setOutputFileFormat(TTRequestFileFormatEnum::VOTABLE); $outputName = $tt->name.'.xml'; break; default : $processData->setOutputFileFormat(TTRequestFileFormatEnum::ASCII); $outputName = $tt->name; } // $processData->setOutputTimeFormat($input->timeformat); $processData->setOutputFileName($outputName); $final .= " ".$outputName; $processData->setType($function); $processData->setCmd("ttConversion"); $this->processDatas[] = $processData; } $this->postProcessTT = new PostProcessTTClass(); $this->postProcessTT->setOutputDirAlias($this->processDatas[0]->getOutputDir()); if ($input->compression !== 'none') { $this->postProcessTT->compression = true; $archive = "Timetable_archive_".date('Ymd_Hi'); switch ($input->compression) { case 'zip' : $postCmd = "zip -Dj ".$archive.".zip ".$final." 1> /dev/null 2> /dev/null"; $outputFileName = $archive.".zip"; break; case 'tar+gzip': default : $postCmd="tar cfz ".$archive.".tar.gz --directory=".$this->processDatas[0]->getOutputDir()." ".$final; $outputFileName = $archive.".tar.gz"; break; } $this->postProcessTT->setPostCmd($postCmd); $this->postProcessTT->setOutputFileName($outputFileName); $this->postProcessTT->setOutputDir($this->processDatas[0]->getOutputDir()); } return $this->processDatas; } /* * @brief translate output data from AMDA_Integration module to IHM client request */ public function getOutput($data) { if ( $this->postProcessTT->compression ) { $timeStart = time(); $cmd = $this->postProcessTT->getPostCmd(); system($cmd); while (!file_exists($this->postProcessTT->getOutputFileName()) && ( time() - $timeStart ) < KernelConfigClass::getTimeToBatchMode()) sleep(1); foreach ($data as $d) { $rawFileName = $d->getOutputDir().$d->getOutputFileName(); if (file_exists($rawFileName)) unlink($rawFileName); } $result = array('success'=>true, 'download'=>$this->postProcessTT->getOutputDirAlias().$this->postProcessTT->getOutputFileName(), 'compression' => $this->postProcessTT->compression); } else { $result = array('success'=>$data[0]->getSuccess(), 'download' => $this->postProcessTT->getOutputDirAlias().$data[0]->getOutputFileName()); } return $result; } } ?>