/** convertXmlREsults */ public function convertXmlREsults($xml) { /** @var Remoteprocessing_JobModel $jobModel */ $jobModel = MidasLoader::loadmodel('Job', 'remoteprocessing'); /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadmodel('Item'); $xml = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); if (!$xml) { return; } $return = array(); $return['job'] = $jobModel->load((int) $xml->attributes()->id[0]); $return['params'] = JsonComponent::decode((string) $xml->JobParameters); $return['process'] = array(); $i = 1; foreach ($xml->Process as $process) { $tmp = array(); $tmp['status'] = (string) $process->attributes()->status[0]; $tmp['command'] = trim((string) $process->Command); $tmp['stderr'] = trim((string) $process->Error); $tmp['stdout'] = trim((string) $process->Output); $tmp['xmlStdout'] = simplexml_load_string($tmp['stdout'], 'SimpleXMLElement', LIBXML_NOCDATA); $tmp['time'] = (double) trim(str_replace('s', '', (string) $process->ExecutionTime)); // convert in milliseconds $tmp['output'] = array(); $tmp['parameters'] = array(); foreach ($return['params']['parametersList'] as $key => $parameter) { $tmp['parameters'][$key] = trim($return['params']['optionMatrix'][$i][$key]); } if (isset($return['params']['outputKeys'][$i])) { foreach ($return['params']['outputKeys'][$i] as $itemId) { $tmp['output'][] = $itemModel->load($itemId); } } $return['process'][] = $tmp; ++$i; } return $return; }