0, 'YYYY MM DD hh mm ss' => 1, 'DD MM YYYY hh mm ss' => 2, 'YYYY DDD hh mm ss' => 3); protected $fileMgr; function __construct($type) { parent::__construct('Request.xml'); $this->type = $type; $this->contentRootId = $type.'-treeRootNode'; $this->contentRootTag = $type.'List'; $this->objTagName = $type; //'request'; $this->jobXmlName = USERDIR.'jobs.xml'; $this->jobXml = new DomDocument("1.0"); if (file_exists($this->jobXmlName)) { $this->jobXml->load($this->jobXmlName); } if ($type == 'request') { $this->id_prefix = 'req_'; $this->attributes = array('name' => ''); $this->optionalAttributes = array(); } else { $this->id_prefix = 'cond_'; $this->attributes = array('name' => ''); //, 'timestep' => '', 'datagap' => '', 'buildchain' => '', // 'StartTime' => '', 'TimeInt' => ''); $this->optionalAttributes = array(); } if (!file_exists($this->xmlName)) { $this->createDom(); $this->xp = new domxpath($this->contentDom); } //external bases if (file_exists(RemoteData.'Bases.xml')) { $dataBasesDoc = new DomDocument("1.0"); $dataBasesDoc->load(RemoteData.'Bases.xml'); $this->dataBases = $dataBasesDoc->getElementsByTagName('dataCenter'); } putenv("USER_DATA_PATH=".USERDATADIR); putenv("USER_WS_PATH=".USERWSDIR); putenv("PHP_CLASSES_PATH=".CLASSPATH); } /********************************************************************* * BEGIN : generic functions **********************************************************************/ protected function setObject($obj) { $this->obj = $obj; } /********************************************************************* * END : generic functions **********************************************************************/ public function generateVOTableFromDownloadResult($id,$newName,$inputCompressed = true,$canBeAlreadyVOTable = false) { //ToDo - use the new kernel $res = array('success' => false, 'message' => 'NOT IMPLEMENTED => To implement with the new Kernel'); } /***************************************************************** * PUBLIC FUNCTIONS *****************************************************************/ /* Stop Time from StartTime and Interval*/ public function convertTime($obj) { $time = strtotime($obj->startDate); $interval = $obj->durationDay*86400 + $obj->durationHour*3600 + $obj->durationMin*60 + $obj->durationSec; $stopTime = gmdate("Y-m-d\TH:i:s", $time+$interval); $obj->stopDate = $stopTime; return $obj; } //TODO public function markAsUndefined($paramId) { $n_requests = 0; return $n_requests; } /* * Get Object JSON!!! (request or condition) into Edit */ public function getObject($id) { if (!file_exists(USERREQDIR.$id)) return array('error' => NO_OBJECT_FILE); if (!($objToGet = $this->contentDom->getElementById($id))) return array('error' => NO_SUCH_ID); $obj = json_decode(file_get_contents(USERREQDIR.$id)); //if alias exists, replace parameter name by alias name if (file_exists(USERWSDIR.'Alias.xml')) { if ($this->type == 'condition') { $obj->expression = $this->setAlias($obj->expression); } else if ($this->type == 'request') { for ($i=0; $i < count($obj->children); $i++) { for ($j=0; $j < count($obj->children[$i]->children); $j++) { $obj->children[$i]->children[$j]->name = $this->setAlias($obj->children[$i]->children[$j]->name); } } //TODO Ajout des SCATTER // if $obj->children[$i]->plotType == "SCATTER" //$obj->children[$i]->scatterParam->data->name pour 1 panel (bug si 2 panels devient $obj->children[$i]->scatterParam->data->data->name) } } //if Start Time - Stop Time if (!$obj->timeTables) $obj = $this->convertTime($obj); return $obj; } /* * Change NAME in JSON resource */ protected function renameInResource($name, $id) { $obj = json_decode(file_get_contents(USERREQDIR.$id)); $obj->name = $name; $file = fopen(USERREQDIR.$id, 'w'); fwrite($file, json_encode($obj)); fclose($file); } /* * Make new request/condition resource file (JSON!!) and add it to content file * ATTENTION : it is not DD parameter!!! */ protected function createParameter($p) { if ($this -> objectExistsByName($p->name)) { $p->id = $this->getObjectIdByName($p->name); $this -> deleteObject($p); } $this->id = $this->setId(); if (!$this->id) return array('error' => ID_CREATION_ERROR); //if alias exists, replace alias name by parameter name if (file_exists(USERWSDIR.'Alias.xml')) { if ($this->type == 'condition') { $p->expression = $this->resetAlias($p->expression); $info = $p->expression; } else if ($this->type == 'request') { $info = ''; for ($i=0; $i < count($p->children); $i++) { for ($j=0; $j < count($p->children[$i]->children); $j++) { $p->children[$i]->children[$j]->name = $this->resetAlias($p->children[$i]->children[$j]->name); $info = $info.' '.$p->children[$i]->children[$j]->name; } } } } $this->descFileName = USERREQDIR.$this->id; $p->id = $this->id; // save request as json $file = fopen($this->descFileName, 'w'); fwrite($file, json_encode($p)); fclose($file); $this -> addToContent($p, $folder); return array('id' => $this->id, 'info' => $info); } /* * Delete request/condition JSON file */ protected function deleteParameter($id){ if (file_exists(USERREQDIR.$id)) unlink(USERREQDIR.$id); } /* * TODO Check file JSON objects differ in names only */ protected function renameOnly($p) { return false; } } ?>