Przeglądaj źródła

Merge branch 'master' of ssh://biuro.biall-net.pl:2222/plabudda/se

Piotr Labudda 9 lat temu
rodzic
commit
e14d24c6f8
2 zmienionych plików z 108 dodań i 24 usunięć
  1. 90 24
      SE/se-lib/Route/UrlAction/WmsGenerate.php
  2. 18 0
      SE/superedit-ZLECENIE.php

+ 90 - 24
SE/se-lib/Route/UrlAction/WmsGenerate.php

@@ -13,11 +13,11 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
 		}
 	}
 
-	private function getDirectory($id) {
-		$folderConf = FoldersConfig::getAll('WMS_LAYERS_COLUMN');
+	private function getDirectory($table,$id) {
+		$folderConf = FoldersConfig::getAll($table.'_COLUMN');
 		$record=new stdClass;
 		$record->ID=$id;
-		$uploader = new FileUploader('WMS_LAYERS_COLUMN', $record);
+		$uploader = new FileUploader($table.'_COLUMN', $record);
 		$errMsg="";
 		if (!$uploader->setConfig($folderConf, $errMsg)) throw new HttpException("Błąd danych konfiguracyjnych" . '<br>' . "\n" . $errMsg, 404);
 		$uploader->findFolder();
@@ -37,7 +37,7 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
 
 			if ($layer[0]['FILE_STATUS']=="IN_PROGRESS") throw new Exception('Błąd - plik w trakcie przetwarzania!');
 
-			$destFolderPath = $this->getDirectory($ID_WMS_LAYERS);
+			$destFolderPath = $this->getDirectory('WMS_LAYERS',$ID_WMS_LAYERS);
 			$files=array();
 			
 			if ($layer[0]['LAYER_TYPE']=='GeoTIFF') {
@@ -121,21 +121,70 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
 
 	private function defaultAction_WIZJE_LOKALNE($ID_WIZJE_LOKALNE,$REFERER) {
 		try {
-			SE_Layout::alert('warning','Funkcja w trakcie implementacji');
-			if (V::get('ID_WMS_LAYERS',0,$_POST,'int')!=0) {
-				//$ID=DB::getDB()->ADD_NEW_OBJ('WMS_LAYERS',(object) array('FILE_STATUS'=>'ERROR','FILE_STATUS_INFO'=>'Wystąpił błąd pliku qgs'));
-				$WmsLayerTableZasobId=ProcesHelper::getZasobTableID('WMS_LAYERS');
+			$wizje=DB::getPDO()->fetchall("select WMS_LAYER_ID,LAYER_NAME from WIZJE_LOKALNE where ID='".$ID_WIZJE_LOKALNE."'");
+			if (!$wizje) throw new Exception("Błąd danych");
+
+			$displayForm=true;
+			$dirWizja=$this->getDirectory('WIZJE_LOKALNE',$ID_WIZJE_LOKALNE);
+			exec('find '.$dirWizja.' -type f -name "*.tif" 2>/dev/null',$files);
+			if (!$files) {
+				SE_Layout::alert('danger',"Wybrana wizja lokalna nie zawiera żadnych plików GeoTIFF!");
 ?>
 <div class="container" style="text-align:center">
   <a href="<?php echo $REFERER?>" class="btn btn-primary">Powrót</a>
 </div>
 <?php
+				$displayForm=false;
 			} else {
-				$wizje=DB::getPDO()->fetchall("select WMS_LAYER_ID,LAYER_NAME from WIZJE_LOKALNE where ID='".$ID_WIZJE_LOKALNE."'");
+				$ID_WMS_LAYERS=V::get('ID_WMS_LAYERS',0,$_POST,'int');
+				$file=V::get('file','',$_POST);
+				if ($ID_WMS_LAYERS!=0) {
+					if ($file=='') SE_Layout::alert('danger','Nie wybrano żadnego pliku!');
+					else {
+						$displayForm=false;
+						$resMsg="";
+						if ($ID_WMS_LAYERS==-1) {
+							$ID_WMS_LAYERS=DB::getDB()->ADD_NEW_OBJ('WMS_LAYERS',(object) array('LAYER_NAME'=>$wizje[0]['LAYER_NAME']));
+							$resMsg.="Utworzono nową warstwę WMS - ID ".$ID_WMS_LAYERS."<br/>\n";
+						}
+						$WmsLayerDir=$this->getDirectory('WMS_LAYERS',$ID_WMS_LAYERS);
+						if (!file_exists($WmsLayerDir)) @mkdir($WmsLayerDir);
+						if (!is_dir($WmsLayerDir)) {
+							DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$ID_WMS_LAYERS,'FILE_STATUS_INFO'=>'Nie można utworzyć katalogu warstwy'));
+							throw new Exception("Wystąpił nieoczekiwany błąd - nie można utworzyć katalogu ".$WmsLayerDir);
+						}
+						@chmod($WmsLayerDir, 0777);
+						exec("rm -f ".$WmsLayerDir."/*.tif 2>/dev/null");
+						symlink($file,$WmsLayerDir."/".basename($file));
+
+						DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$ID_WMS_LAYERS,'FILE_STATUS_INFO'=>'Utoworzono link symboliczny z poziomu tabeli WIZJE_LOKALNE'));
+
+						$sqlObj = new stdClass();
+						$sqlObj->ID = $ID_WIZJE_LOKALNE;
+						$sqlObj->WMS_LAYER_UPLOADED='Y';
+						$sqlObj->WMS_LAYER_ID=$ID_WMS_LAYERS;
+						if (V::get('WIZJE_LOKALNE_OFF_HARD',0,$_POST,'int')==1) $sqlObj->A_STATUS='OFF_HARD';
+						DB::getDB()->UPDATE_OBJ('WIZJE_LOKALNE', $sqlObj);
+
+						SE_Layout::alert('success',$resMsg.'Pomyślnie dodano plik GeoTIFF do warstwy.');
+
+						$WmsLayerTableZasobId=ProcesHelper::getZasobTableID('WMS_LAYERS');
+						$editWmsLayerUrl=Request::getPathUri()."index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID=".$WmsLayerTableZasobId."#EDIT/".$ID_WMS_LAYERS;
+?>
+<div class="container" style="text-align:center">
+  <a href="<?php echo $editWmsLayerUrl?>" class="btn btn-primary">Edytuj warstwę WMS</a>
+  <a href="<?php echo $REFERER?>" class="btn btn-default">Powrót</a>
+</div>
+<?php
+					}
+				}
+			}
+			if ($displayForm) {
 				if ($wizje[0]['WMS_LAYER_ID']) {
 					$layers=DB::getPDO()->fetchall("select LAYER_NAME,LAYER_TYPE from WMS_LAYERS where ID='".$wizje[0]['WMS_LAYER_ID']."'");
 					if ($layers[0]['LAYER_TYPE']!="GeoTIFF") throw new Exception("Niespójny typ wartstwy - należy zmienić typ warstwy ID ".$wizje[0]['WMS_LAYER_ID']." na GeoTIFF");
 					$LAYER_NAME=$layers[0]['LAYER_NAME'];
+					if (!$LAYER_NAME) $LAYER_NAME="BRAK NAZWY WARSTWY";
 				}
 				if (!$wizje) throw new Exception("Błędne ID z tabeli WIZJE_LOKALNE");
 ?>
@@ -145,21 +194,42 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
   <div class="form-group">
     <label class="col-sm-1 control-label">Warstwa</label>
     <div class="col-sm-11">
-      <select id="warstwa" class="form-control" name="ID_WMS_LAYERS"<?php if ($wizje[0]['WMS_LAYER_ID']) echo " disabled"?>>
-        <option value=<?php echo '"'.($wizje[0]['WMS_LAYER_ID']?$wizje[0]['WMS_LAYER_ID'].'">'.$LAYER_NAME:'-1">(Utwórz nową warstwę) '.$wizje[0]['LAYER_NAME'])?></option>
 <?php
-				if (!$wizje[0]['WMS_LAYER_ID']) {
+				if ($wizje[0]['WMS_LAYER_ID']) echo '<p class="form-control-static">ID:'.$wizje[0]['WMS_LAYER_ID']." ".$LAYER_NAME.'</p><p style="color:red;">Uwaga! Ten rekord wizji lokalnej został już powiazany z daną warstwą i nie ma możliwości zmiany powiązania.<br/>Ponowne dodanie pliku GeoTIFF spowoduje usunięcie dotychczasowego pliku GeoTIFF z danej warstwy.</p>'."\n".'<input type="hidden" name="ID_WMS_LAYERS" value="'.$wizje[0]['WMS_LAYER_ID'].'"/>'."\n";
+				else {
+?>
+      <select id="warstwa" class="form-control" name="ID_WMS_LAYERS">
+        <option value="-1">(Utwórz nową warstwę) <?php echo $wizje[0]['LAYER_NAME']?></option>
+<?php
 					$layers=DB::getPDO()->fetchall("select ID,LAYER_NAME from WMS_LAYERS where LAYER_TYPE='GeoTIFF' and A_STATUS='WAITING'");
-					foreach ($layers as $layer) echo '<option value="'.$layer['ID'].'">(Oczekująca warstwa) '.$layer['ID'].': '.$layer['LAYER_NAME'].'</option>\n';
+					foreach ($layers as $layer) echo '<option value="'.$layer['ID'].'"'.($layer['ID']==$ID_WMS_LAYERS?" selected":"").'>(Oczekująca warstwa) '.$layer['ID'].': '.$layer['LAYER_NAME'].'</option>\n';
 				}
 ?>
       </select>
     </div>
   </div>
   <div class="form-group">
-    <label class="col-sm-1 control-label">Plik</label>
+    <label class="col-sm-1 control-label">Status wizji lokalnej</label>
     <div class="col-sm-11">
-	Tutaj będą pliki
+      <label class="checkbox-inline">
+        <input type="checkbox" name="WIZJE_LOKALNE_OFF_HARD" value="1" checked> Ustaw automatycznie status wizji lokalnej na OFF_HARD
+      </label>
+    </div>
+  </div>
+  <div class="form-group">
+    <label class="col-sm-1 control-label">Plik</label>
+    <div class="col-sm-11" style="max-height:400px; overflow:auto;">
+      <table class="table table-bordered table-hover">
+        <thead>
+          <tr style="text-align:center;"><td width="1"></td><td>Ścieżka/nazwa</td><td width="1">Wielkość</td><td width="1">Data</td></tr>
+        </thead>
+        <tbody>
+<?php
+				foreach ($files as $file)
+					echo '<tr><td><input style="margin:0; position:relative;" type="radio" name="file" value="'.$file.'"/></td><td>'.substr($file,strlen($dirWizja)+1).'</td><td style="text-align:right;" nowrap>'.V::humanFileSize(filesize($file))."</td><td nowrap>".date("Y-m-d H:i:s",filectime($file))."</td></tr>\n";
+?>
+        </tbody>
+      </table>
     </div>
   </div>
   <div class="form-group">
@@ -168,7 +238,7 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
       <a href="<?php echo $REFERER?>" class="btn btn-default">Anuluj</a>
     </div>
   </div>
-  <input type="hidden" name="WMS_REFERER" value="<?php echo $_SERVER['HTTP_REFERER']?>"/>
+  <input type="hidden" name="WMS_REFERER" value="<?php echo $REFERER?>"/>
 </form>
 </div>
 
@@ -233,7 +303,7 @@ openOnFocus: false
 			### Przetworzenie projektów QGIS
                         $layers=DB::getPDO()->fetchall("select ID,FILE_NAME,LAYER_NAME,A_STATUS,ID_WMS_MAPS from WMS_LAYERS where LAYER_TYPE='QGIS' and FILE_STATUS='TO_GENERATE'");
                         foreach ($layers as $layer) {
-                                $destFolderPath = $this->getDirectory($layer['ID']);
+                                $destFolderPath = $this->getDirectory('WMS_LAYERS',$layer['ID']);
                                 if(!is_file($destFolderPath.'/'.$layer['FILE_NAME'])) {
                                         DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$layer['ID'],'FILE_STATUS'=>'ERROR','FILE_STATUS_INFO'=>'Wystąpił błąd pliku qgs'));
                                         throw new Exception("Błąd pliku: ".$layer['FILE_NAME']);
@@ -342,7 +412,7 @@ END
 			foreach ($layers as $layer) {
 				if (!file_exists('/tmp/generate_wms-'.$layer['ID'].'.lock')) {
 					unlink('/tmp/generate_wms-'.$layer['ID'].'.sh');
-					$destFolderPath = $this->getDirectory($layer['ID']);
+					$destFolderPath = $this->getDirectory('WMS_LAYERS',$layer['ID']);
 					if (file_exists($destFolderPath.'/.wms/.completed')) {
 						if (file_exists($destFolderPath.'/.wms/.error')) {
 							DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$layer['ID'],'FILE_STATUS'=>'ERROR','FILE_STATUS_INFO'=>'Wystąpił błąd przetwarzania, przekaż problem administratorowi systemu'));
@@ -382,7 +452,7 @@ END
 			$layers=DB::getPDO()->fetchall("select ID,ID_WMS_MAPS,LAYER_TYPE from WMS_LAYERS where A_STATUS='NORMAL' and FILE_STATUS='GENERATED' and MAP_STATUS='INACTIVE'");
 			foreach ($layers as $layer) {
 				if (!file_exists($wmsDirLocation.'/.maps/.single/'.$layer['ID'].$mapFileSuffix[$layer['LAYER_TYPE']])) {
-					$destFolderPath = $this->getDirectory($layer['ID']);
+					$destFolderPath = $this->getDirectory('WMS_LAYERS',$layer['ID']);
 					symlink($destFolderPath.'/.wms/wms'.$mapFileSuffix[$layer['LAYER_TYPE']],$wmsDirLocation.'/.maps/.single/'.$layer['ID'].$mapFileSuffix[$layer['LAYER_TYPE']]);
 				}
 				DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$layer['ID'],'MAP_STATUS'=>'ACTIVE'));
@@ -514,10 +584,6 @@ END
 					foreach ($layers as $layer) {
 						if ($layer['LAYER_NAME']) $LAYER_NAME=V::convert($layer['LAYER_NAME'],'url');
 						else $LAYER_NAME=$layer['LAYER_TYPE']."_".$layer['ID'];
-						//$destFolderPath = $this->getDirectory($layer['ID']);
-						//$file=$destFolderPath.'/.wms/'.$layer['FILE_NAME'];
-						//if(is_file($file)) $files[]='"'.$file.'"';
-						//else throw new Exception("ERROR - couldn't find file ".$file."\n");
 						$replace=array($LAYER_NAME,$urlLayerType[$layer['LAYER_TYPE']],$layer['ID'],$layer['EXTENT'],$layer['EPSG'],$wmsDirLocation.'/.maps/.template.html');
 						$MAP_LAYERS .= str_replace($layerSearch,$replace,$layerSchema[$layer['LAYER_TYPE']]);
 						$EPSGS['EPSG:'.$layer['EPSG']]=1;
@@ -568,7 +634,7 @@ fi
 			$layers=DB::getPDO()->fetchall("select ID,FILE_NAME from WMS_LAYERS where LAYER_TYPE='GeoTIFF' and FILE_STATUS='TO_GENERATE'");
 			foreach ($layers as $layer) {
 echo $layer['ID']."\n";
-				$destFolderPath = $this->getDirectory($layer['ID']);
+				$destFolderPath = $this->getDirectory('WMS_LAYERS',$layer['ID']);
 				if(!is_file($destFolderPath.'/'.$layer['FILE_NAME'])) {
 					DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$layer['ID'],'FILE_STATUS'=>'ERROR','FILE_STATUS_INFO'=>'Wystąpił błąd pliku tif'));
 					throw new Exception("Błąd pliku: ".$layer['FILE_NAME']);

+ 18 - 0
SE/superedit-ZLECENIE.php

@@ -327,6 +327,23 @@ function ZLECENIE() {
 		$out_P_DEAL_DATE = $h['P_DEALDATE'];
 	}
 
+	// wyszukanie wszystkich rodzai uslug na waitingu dla danej umowy
+	$query = "select
+			ls.`description`
+		from
+			`DEALS_TABLE` d
+			join `SERVICES` s
+				on d.`ID`=s.`ID_DEALS_TABLE`
+			join `LIST_SERVICES` ls
+				on s.`NAME_LIST_SERVICES`=ls.`name`
+		where d.`P_DEALNUMBER`='".$out_P_DEALNUMBER."'
+		group by ls.`description`
+		order by ls.`description`
+	";
+	$result=$db->query($query);
+	while ($h = $db->fetch_assoc($result)) $out_ALL_SERVICES_a[] = $h['description'];
+	$out_ALL_SERVICES=implode(", ",$out_ALL_SERVICES_a);
+
 	// fetch user billing owner data from `BILLING_OWNER
 	$query = "select
                         BO.name1 as OPERATOR
@@ -373,6 +390,7 @@ function ZLECENIE() {
                 Umowa: <b>" . $out_P_DEALNUMBER . "</b> z dnia: <b>" . $out_P_DEAL_DATE . "</b><br>
                 Abonent: <b>" . $out_P_NAME . "</b><br>
                 Kontakty: <b>" . $out_P_PHONE . "</b> Fax:<b>" . $out_P_FAX . " </b><br>
+		Usługi w ramach umowy: <b>" . $out_ALL_SERVICES . "</b><br>
                 Adres: <b>" . $SES_A['S_ADDRESS_STREET'] . "</b>
                 <font size='-2'>
                 Budynek: $MAKE_ORDERER_BUILDING_INFO