| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- Lib::loadClass('RouteBase');
- Lib::loadClass('UI');
- Lib::loadClass('DBG');
- Lib::loadClass('Request');
- Lib::loadClass('Crypt');
- Lib::loadClass('Route_Ant');
- class Route_UrlAction_Ant extends Route_Ant {// @doc @see Route_Ant
- public function defaultAction() {
- UI::gora();
- UI::tag('h1', [], 'Ant');
- try {
- $taskList = $this->getAntUrlActionList();
- DBG::nicePrint($taskList, 'ant-url_action');
- $featureID = V::get('featureID', '', $_GET);
- $typeName = V::get('typeName', '', $_GET);
- // TODO: validate missing ...
- UI::startTag('ul');
- foreach ($taskList as $path => $label) {
- $link = "index.php?_route=UrlAction_Ant&_task=ant&path={$path}&typeName={$typeName}&featureID={$featureID}";
- echo UI::h('li', [], [
- UI::h('a', ['href'=>$link], "Uruchom '{$label}'")
- ]);
- }
- UI::endTag('ul');
- } catch (Exception $e) {
- UI::alert('danger', $e->getMessage());
- DBG::log($e);
- }
- UI::dol();
- }
- public function outputAction() {// index.php?_route=UrlAction_Ant&_task=output & path={$path} & file={$file}";
- $path = V::get('path', '', $_GET);
- if (!$path) throw new Exception("Missing Ant path!");
- $file = V::get('file', '', $_GET);
- if (!$file) throw new Exception("Missing Ant file!");
- // TODO: allow auth by token?
- throw new Exception("TODO: return output file '$file' from ant task '{$path}'");
- }
- public function antAction() {
- UI::gora();
- try {
- echo UI::h('h1', [], "Ant action");
- $path = V::get('path', '', $_GET);
- if (!$path) throw new Exception("Missing Ant path!");
- $primaryKey = V::get('primaryKey', '', $_GET);
- $xpath = V::get('xpath', '', $_GET);
- $typeName = V::get('typeName', '', $_GET);
- list($nsPrefix, $objectName) = explode(':', $typeName);// TODO: get wfs prefix from typeName
- // TODO: validate missing ...
- DBG::log([ 'msg'=>'$path', '$path'=>$path]);
- DBG::log([ 'msg'=>'$primaryKey', '$primaryKey'=>$primaryKey]);
- DBG::log([ 'msg'=>'$typeName', '$typeName'=>$typeName]);
- $taskList = $this->getAntUrlActionList();
- if (!array_key_exists($path, $taskList)) throw new Exception("Ant path not exists! '{$path}'");
- echo UI::h('hr');
- $webRootUrl = Request::getPathUri() . "schema/ant-url_action/{$path}";// TODO: security - only for test
- $outputFunctionUrl = Request::getPathUri() . "index.php?_route=UrlAction_Ant&_task=output&path={$path}&file=";
- DBG::log([ 'msg'=>'$webRootUrl', '$webRootUrl'=>$webRootUrl]);
- DBG::log([ 'msg'=>'$outputFunctionUrl', '$outputFunctionUrl'=>$outputFunctionUrl]);
- $testUrl = Request::getPathUri() . "wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=".$typeName."&SRSNAME=EPSG:3003&featureID={$objectName}.{$primaryKey}";
- $cryptedPass = base64_encode(User::getLogin() . ":" . Crypt::decrypt($_SESSION['ADM_PASS_HASH']));
- $cmd = "cd {$this->pathUrlActions}{$path} && {$this->antBin} -S -DoutputFunctionUrl='{$outputFunctionUrl}' -DwebRootUrl='{$webRootUrl}' -Durl='{$testUrl}' -DpasswordBase64Basic='{$cryptedPass}' -Duuid=\"".session_id()."\" -Dxpath=".$xpath." -Dxpath_value=".$primaryKey." -DtypeName=\"".$typeName."\" 2>&1";
- DBG::log([ 'msg'=>"cmd", 'cmd'=>str_replace(APP_PATH_ROOT, 'SE', $cmd) ]);
- V::exec($cmd, $out, $ret);
- DBG::log([ 'msg'=>"cmd and returns({$ret})", 'output'=>$out ]);
- $html = []; $startRead = false;
- foreach ($out as $line) {
- if (!$startRead) {
- if ('OUTPUT__START' == $line) {
- $startRead = true;
- continue;
- }
- } else {
- if ('<!DOCTYPE' == substr($line, 0, strlen('<!DOCTYPE'))) continue;
- if ('OUTPUT__END' == $line) {
- break;
- }
- $html[]= $line;
- }
- }
- echo UI::h('h3', [], "output:");
- if (empty($html)) UI::alert('danger', "Empty output!");
- // echo UI::h('pre', [], htmlspecialchars(implode("\n", $html)));
- echo UI::h('div', ['class'=>"container", 'style'=>"padding:12px; border:1px solid #ddd"], $html);
- } catch (Exception $e) {
- UI::alert('danger', $e->getMessage());
- DBG::log($e);
- }
- UI::dol();
- }
- }
|