Forráskód Böngészése

Dodanie możiwości wyboru mapy z poziomu dodawania pliku z tabeli WIZJA_LOKALNA do warstwy WMS oraz automatyczne ustawianie statusu warstwy WMS z WAITING na NORMAL po przetworzeniu warstwy WMS.

Mariusz Muszyński 9 éve
szülő
commit
9b5793cf53
1 módosított fájl, 52 hozzáadás és 14 törlés
  1. 52 14
      SE/se-lib/Route/UrlAction/WmsGenerate.php

+ 52 - 14
SE/se-lib/Route/UrlAction/WmsGenerate.php

@@ -137,14 +137,14 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
 				$displayForm=false;
 			} else {
 				$ID_WMS_LAYERS=V::get('ID_WMS_LAYERS',0,$_POST,'int');
-				$file=V::get('file','',$_POST);
+				$form_file=V::get('file','',$_POST);
 				if ($ID_WMS_LAYERS!=0) {
-					if ($file=='') SE_Layout::alert('danger','Nie wybrano żadnego pliku!');
+					if ($form_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']));
+							$ID_WMS_LAYERS=DB::getDB()->ADD_NEW_OBJ('WMS_LAYERS',(object) array('LAYER_NAME'=>$wizje[0]['LAYER_NAME'],'LAYER_TYPE'=>'GeoTIFF'));
 							$resMsg.="Utworzono nową warstwę WMS - ID ".$ID_WMS_LAYERS."<br/>\n";
 						}
 						$WmsLayerDir=$this->getDirectory('WMS_LAYERS',$ID_WMS_LAYERS);
@@ -155,7 +155,7 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
 						}
 						@chmod($WmsLayerDir, 0777);
 						exec("rm -f ".$WmsLayerDir."/*.tif 2>/dev/null");
-						symlink($file,$WmsLayerDir."/".basename($file));
+						symlink($form_file,$WmsLayerDir."/".basename($form_file));
 
 						DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$ID_WMS_LAYERS,'FILE_STATUS_INFO'=>'Utoworzono link symboliczny z poziomu tabeli WIZJE_LOKALNE'));
 
@@ -178,13 +178,21 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
 <?php
 					}
 				}
+				elseif ($_POST) {
+					$msgErr='Nie wybrano żadnej warstwy!';
+					if (!$form_file) $msgErr.="<br/>Nie wybrano żadnego pliku!";
+					SE_Layout::alert('danger',$msgErr);
+				}
 			}
 			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']."'");
+					$layers=DB::getPDO()->fetchall("select l.LAYER_NAME,l.LAYER_TYPE,l.ID_WMS_MAPS,m.MAP_NAME from WMS_LAYERS l left join WMS_MAPS m on l.ID_WMS_MAPS=m.ID where l.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 (!$LAYER_NAME) $LAYER_NAME="Brak nazwy warstwy";
+					$ID_WMS_MAPS=$layers[0]['ID_WMS_MAPS'];
+					$MAP_NAME=$layers[0]['MAP_NAME'];
+					if ($ID_WMS_MAPS && !$MAP_NAME) $MAP_NAME="Brak nazwy mapy";
 				}
 				if (!$wizje) throw new Exception("Błędne ID z tabeli WIZJE_LOKALNE");
 ?>
@@ -195,19 +203,37 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
     <label class="col-sm-1 control-label">Warstwa</label>
     <div class="col-sm-11">
 <?php
-				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";
+				if ($wizje[0]['WMS_LAYER_ID']) echo '<p class="form-control-static">'.$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'].'"'.($layer['ID']==$ID_WMS_LAYERS?" selected":"").'>(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">Mapa</label>
+    <div class="col-sm-11">
+<?php
+				if ($wizje[0]['WMS_LAYER_ID']) echo '<p class="form-control-static">'.(($ID_WMS_MAPS)?$ID_WMS_MAPS.": ".$MAP_NAME:'Brak').'</p>';
+				else {
+?>
+      <select id="mapa" class="form-control" name="ID_WMS_MAPS">
+        <option value="0">Brak</option>
+<?php
+					$maps=DB::getPDO()->fetchall("select ID,MAP_NAME from WMS_MAPS");
+					$form_ID_WMS_MAPS=V::get('ID_WMS_MAPS',0,$_POST,'int');
+					foreach ($maps as $map) echo '<option value="'.$map['ID'].'"'.($map['ID']==$form_ID_WMS_MAPS?" selected":"").">".$map['ID'].': '.$map['MAP_NAME']."</option>\n";
+				}
+?>
+       </select>
+    </div>
+  </div>
   <div class="form-group">
     <label class="col-sm-1 control-label">Status wizji lokalnej</label>
     <div class="col-sm-11">
@@ -226,7 +252,7 @@ class Route_UrlAction_WmsGenerate extends RouteBase {
         <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";
+					echo '<tr><td><input style="margin:0; position:relative;" type="radio" name="file" value="'.$file.'"'.(($file==$form_file)?' checked':'').'/></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>
@@ -247,6 +273,10 @@ $('#warstwa').selectize({
 create: false,
 openOnFocus: false
 });
+$('#mapa').selectize({
+create: false,
+openOnFocus: false
+});
 </script>
 
 <?php
@@ -356,8 +386,12 @@ rm -rf $tmp
 
 				$xml->asXml($destFolderPath.'/.wms/wms.qgs');
 				unlink($destFolderPath.'/.wms/'.$layer['FILE_NAME']);
-				DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$layer['ID'],'FILE_STATUS'=>'GENERATED','FILE_STATUS_INFO'=>'Plik przetworzony poprawnie','the_geom'=>"GeomFromText('{$geom}')",'EPSG'=>"{$epsg}",'EXTENT'=>"{$extent}"));
-				if ($layer['A_STATUS']=='NORMAL') $mapsToGenerate[$layer['ID_WMS_MAPS']]=1;
+
+				$sqlArr=array('ID'=>$layer['ID'],'FILE_STATUS'=>'GENERATED','FILE_STATUS_INFO'=>'Plik przetworzony poprawnie','the_geom'=>"GeomFromText('{$geom}')",'EPSG'=>"{$epsg}",'EXTENT'=>"{$extent}");
+				if ($layer['A_STATUS']=="WAITING") $sqlArr['A_STATUS']='NORMAL';
+				DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) $sqlArr);
+
+				if ($layer['A_STATUS']=='WAITING' || $layer['A_STATUS']=='NORMAL') $mapsToGenerate[$layer['ID_WMS_MAPS']]=1;
 			}
 
 
@@ -428,9 +462,13 @@ END
 							$replace=array($LAYER_NAME,$extent,$_SERVER['SERVER_NAME'],$layer['ID'],$layer['EPSG'],$destFolderPath.'/.wms/'.$layer['FILE_NAME']);
 							$map = str_replace($search,$replace,$mapSchema);
 							file_put_contents($destFolderPath.'/.wms/wms.map',$map);
-							DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$layer['ID'],'FILE_STATUS'=>'GENERATED','FILE_STATUS_INFO'=>'Plik przetworzony poprawnie','the_geom'=>"GeomFromText('{$geom}')",'EXTENT'=>"{$extent}"));
+
+							$sqlArr=array('ID'=>$layer['ID'],'FILE_STATUS'=>'GENERATED','FILE_STATUS_INFO'=>'Plik przetworzony poprawnie','the_geom'=>"GeomFromText('{$geom}')",'EXTENT'=>"{$extent}");
+							if ($layer['A_STATUS']=="WAITING") $sqlArr['A_STATUS']='NORMAL';
+							DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) $sqlArr);
 							unlink($destFolderPath.'/.wms/.completed');
-							if ($layer['A_STATUS']=='NORMAL') $mapsToGenerate[$layer['ID_WMS_MAPS']]=1;
+
+							if ($layer['A_STATUS']=='WAITING' || $layer['A_STATUS']=='NORMAL') $mapsToGenerate[$layer['ID_WMS_MAPS']]=1;
 						}
 					} else {
 						DB::getDB()->UPDATE_OBJ('WMS_LAYERS',(object) array('ID'=>$layer['ID'],'FILE_STATUS'=>'TO_GENERATE','FILE_STATUS_INFO'=>'Wystąpił błąd przetwarzania, ale nastąpi kolejna próba jego przetworzenia'));
@@ -449,7 +487,7 @@ END
 
 
 			### Aktywacja nieaktywnych warstw, ktore nalezy zaktywowac
-			$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'");
+			$layers=DB::getPDO()->fetchall("select ID,ID_WMS_MAPS,LAYER_TYPE,A_STATUS 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('WMS_LAYERS',$layer['ID']);