| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 | <?phprequire_once(dirname(__FILE__)."/../../../Tools/controllers/TransformerController.php");class RemoteController{	public static function Run ($type = "", $files = array())	{		$remoteCtrl = new RemoteController();		$remoteCtrl->getOptions();		if ($type == "") {			return $remoteCtrl->options;		}		if (!in_array($type, array_keys($remoteCtrl->options))) {			return "Falscher Aufruf";		}		return $remoteCtrl->getDetails($type, $files);	}	private $config;	private $info;	private $paths;		private $options;	private function __construct ()	{		$this->config = parse_ini_file(dirname(__FILE__) . "/../../../../GAPS.ini");		$this->info = json_decode(file_get_contents($this->config['XML'] . "\\info\\info.json"), true);		$this->paths = array(			'Tasks' => dirname(__FILE__) . "/../../../..",			'Starter' => $this->config['STARTER'] . "\\Batch",			'Transformer' => $this->config['PORTAL'] . "\\System\\Models",			'Impromptu' => $this->config['PORTAL'] . "\\System\\IQD",			'Powerplay' => $this->config['PORTAL'] . "\\System\\Report",			'Portal' => $this->config['XML'],			'Logs' => dirname(__FILE__) . "/../../../../logs",			'Prot' => $this->config['PORTAL'] . "\\System\\Prot"		);		if (isset($this->config['PROT'])) {			$this->paths['Prot'] = $this->config['PROT'];		}	}	public function getOptions ()	{		$this->options = array(			'Tasks' => $this->getFilenames($this->paths['Tasks'], "*.bat", false),			'Starter' => $this->getFilenames($this->paths['Starter'], "*.bat"),			'Transformer' => $this->getFilenames($this->paths['Transformer'], "*.pyi"),			'Impromptu' => $this->getFilenames($this->paths['Impromptu'], "*.imr"),			'Powerplay' => $this->getFilenames($this->paths['Powerplay'] , "*.ppr"),			'Portal' => $this->getFilenames($this->paths['Portal'], "*.xml"),			'Logs' => $this->getFilenames($this->paths['Logs'], "*"),			'Prot' => $this->getFilenames($this->paths['Prot'], "*.log")		);	}	private function removePath (&$value, $key, $path)	{		$value = utf8_encode(str_replace($path . "\\", "", $value));	}	private function getFilenames ($path, $filter, $recursive = true, $isSubdir = false)	{		$path = realpath($path);		$result = glob($path . "\\" . $filter);		if ($recursive) {			foreach(glob($path . "\\*", GLOB_ONLYDIR) as $subdir) {				if ($subdir != $path && substr($subdir, -1) != ".") {					$result = array_merge($result, $this->getFilenames($subdir, $filter, $recursive, true));				}			}		}		if (!$isSubdir) {			array_walk($result, array($this, 'removePath'), $path);		}		return $result;	}	public function getDetails ($type, $files)	{		$result = array();		foreach ($files as $file) {			$fullname = realpath($this->paths[$type] . "\\" . $file);			if (!file_exists($fullname)) {				continue;			}			$fileinfo = $this->getFileInfo($fullname);			$fileinfo = call_user_func(array($this, "getDetails" . $type), $fileinfo);			$result[$file] = $fileinfo;		}		return $result;	}		private function getFileInfo ($filename) 	{		$result = array(			'filename' => $filename,			'exists' => file_exists($filename)		);		if ($result['exists']) {			$result['size'] = filesize($filename);			$result['modified'] = date('d.m.Y H:i', filemtime($filename));			$result['days'] = $this->dateDiff(filemtime($filename));		} else {			$result['size'] = 0;			$result['modified'] = "fehlt";			$result['days'] = 0;		}		return $result;	}	private function getDetailsTasks ($fileinfo)	{		$info['contents'] = explode("\r\n", file_get_contents($fileinfo['filename']));		return $info;	}	private function getDetailsStarter ($fileinfo)	{		$info['contents'] = explode("\r\n", file_get_contents($fileinfo['filename']));		return $info;	}	private function getDetailsImpromptu ($fileinfo)	{		$filename = substr($fileinfo['filename'], 0, -3);		$ext = array('csv', 'ims', 'iqd');		foreach($ext as $e) {			$fileinfo[$e] = $this->getFileInfo($filename . $e);		}		if ($fileinfo['iqd']['exists']) {			$fileinfo['iqd']['newer'] = filemtime($fileinfo['filename']) <= filemtime($fileinfo['iqd']['filename']) + 20;		}		return $fileinfo;	}			private function getDetailsTransformer ($fileinfo)	{		$fileinfo['cube'] = TransformerController::GetCubeName($fileinfo['filename']);		$fileinfo['mdc'] = $this->getFileInfo(realpath($this->config['PORTAL'] . "\\System\\Cube_out") . "\\" . $fileinfo['cube'] . ".mdc");		return $fileinfo;	}	private function getDetailsPowerplay ($fileinfo)	{		$filename = substr($fileinfo['filename'], 0, -3);		$ext = array('ppx', 'gif', 'pdf', 'csv', 'xls');		foreach($ext as $e) {			$fileinfo[$e] = $this->getFileInfo($filename . $e);		}		return $fileinfo;	}	private function getDetailsPortal ($fileinfo)	{		$filename = strtolower(basename($fileinfo['filename']));		$users = array('*' => '');		$structure = array('*' => '');		$email = array('*' => '');		$cube = array('*' => '');		foreach ($this->info['versand'] as $e) {			if (strtolower($e['Datei']) == $filename) {				$users[$e['Benutzer']] = 1;				$structure[$e['Struktur']] = 1;				$email[$e['Empfaenger']] = 1;				$cube[$e['Cube']] = 1;			}		}		$fileinfo['type'] = (count($users) == 1) ? "Portal" : "Versand";		if ($fileinfo['type'] == "Portal") {			foreach ($this->info['reports'] as $e) {				if (strtolower($e['Datei']) == $filename) {					$users[$e['Benutzer']] = 1;					$structure[$e['Struktur']] = 1;					$cube[$e['Cube']] = 1;				}			}		}		$fileinfo['users'] = array_keys($users);		$fileinfo['structure'] = array_keys($structure);		$fileinfo['email'] = array_keys($email);		$fileinfo['cube'] = array_keys($cube);		sort($fileinfo['users']);		sort($fileinfo['structure']);		sort($fileinfo['email']);		sort($fileinfo['cube']);		return $fileinfo;	}	private function dateDiff ($timestamp, $now = "now")	{		return round((strtotime($now) - strtotime($timestamp)) / (24 * 60 * 60));	}}
 |