Commit 9289b7e937c559ddad6e49744c733de7ae3d70e0

Authored by Edmar Moretti
1 parent 4da76dc9

validação dasopções de getlayrbyname e layer->open

classesphp/atlas_controle.php
... ... @@ -212,10 +212,10 @@ function gravaid()
212 212 $_SESSION["utilizacgi"] = "nao";
213 213 $_SESSION["atlasxml"] = $atlasxmltemp;
214 214 $m = ms_newMapObj($tmpfname);
215   - $nomes = $m->getalllayernames();
216   - foreach($nomes as $n)
  215 + $c = $m->numlayers;
  216 + for ($i=0;$i < $c;++$i)
217 217 {
218   - $l = $m->getlayerbyname($n);
  218 + $l = $m->getlayer($i);
219 219 $l->setmetadata("ATLAS","nao");
220 220 $l->setmetadata("TIP","");
221 221 }
... ...
classesphp/classe_alteraclasse.php
... ... @@ -83,7 +83,7 @@ $tema - nome do tema
83 83 $this->mapa = ms_newMapObj($map_file);
84 84 $this->arquivo = $map_file;
85 85 $this->layer = "";
86   - if($tema != "")
  86 + if($tema != "" && @$this->mapa->getlayerbyname($tema))
87 87 $this->layer = $this->mapa->getlayerbyname($tema);
88 88 $this->nome = $tema;
89 89 }
... ... @@ -106,6 +106,7 @@ Todos os elementos passarão a ser desenhados conforme essa primeira classe, uma
106 106 */
107 107 function simbolounico()
108 108 {
  109 + if(!$this->layer){return "erro";}
109 110 $numclasses = $this->layer->numclasses;
110 111 if ($numclasses > 0)
111 112 {
... ... @@ -197,6 +198,7 @@ $ignorar - valor que será ignorado na listagem final
197 198 */
198 199 function intervalosiguais($item,$nclasses,$ignorar)
199 200 {
  201 + if(!$this->layer){return "erro";}
200 202 $valores = pegaValores($this->mapa,$this->layer,$item,true,$ignorar);
201 203 if (count($valores) > 0)
202 204 {
... ... @@ -257,6 +259,7 @@ Include:
257 259 */
258 260 function quartis($item,$ignorar)
259 261 {
  262 + if(!$this->layer){return "erro";}
260 263 $valores = pegaValores($this->mapa,$this->layer,$item,true,$ignorar);
261 264 if (count($valores) > 0)
262 265 {
... ... @@ -315,6 +318,7 @@ $ignorar - valor que será ignorado na listagem final
315 318 */
316 319 function valorunico($item,$ignorar)
317 320 {
  321 + if(!$this->layer){return "erro";}
318 322 // pega valores
319 323 $valoresu = array_unique(pegaValores($this->mapa,$this->layer,$item,false,$ignorar));
320 324 // processa array com os valores
... ... @@ -367,6 +371,7 @@ A nova classe será uma cópia da classe 0.
367 371 */
368 372 function adicionaclasse()
369 373 {
  374 + if(!$this->layer){return "erro";}
370 375 $classe = $this->layer->getclass(0);
371 376 $c = ms_newClassObj($this->layer, $classe);
372 377 //$classe = $this->layer->getclass(0);
... ... @@ -388,6 +393,7 @@ Include:
388 393 */
389 394 function alteraCoresClasses($cori,$corf)
390 395 {
  396 + if(!$this->layer){return "erro";}
391 397 if(file_exists($this->locaplic."/class.palette.php"))
392 398 include_once($this->locaplic."/class.palette.php");
393 399 else
... ... @@ -419,6 +425,7 @@ Inverte as cores da legenda de um tema.
419 425 */
420 426 function inverteCoresClasses()
421 427 {
  428 + if(!$this->layer){return "erro";}
422 429 $numclasses = $this->layer->numclasses;
423 430 for($i=0;$i<$numclasses;++$i)
424 431 {
... ... @@ -444,6 +451,7 @@ Calcula o tamanho dos estilos das classes, alterando o tamanho do símbolo.
444 451 */
445 452 function calculaTamanhoClasses()
446 453 {
  454 + if(!$this->layer){return "erro";}
447 455 $numclasses = $this->layer->numclasses;
448 456 for($i=0;$i<$numclasses;++$i)
449 457 {
... ... @@ -474,6 +482,7 @@ $classe - id da classe
474 482 */
475 483 function statusClasse($classe)
476 484 {
  485 + if(!$this->layer){return "erro";}
477 486 $classe = $this->layer->getclass($classe);
478 487 $status = $classe->status;
479 488 if ($status == MS_OFF)
... ...
classesphp/classe_analise.php
... ... @@ -85,7 +85,7 @@ $tema - Nome do tema que será processado
85 85 $this->locaplic = $locaplic;
86 86 $this->mapa = ms_newMapObj($map_file);
87 87 $this->arquivo = $map_file;
88   - if($tema != "")
  88 + if($tema != "" && @$this->mapa->getlayerbyname($tema))
89 89 $this->layer = $this->mapa->getlayerbyname($tema);
90 90 $this->nome = $tema;
91 91 $this->diretorio = dirname($this->arquivo);
... ... @@ -906,7 +906,8 @@ $locaplic - Localização do I3geo.
906 906 $res_count = $layerPt->getNumresults();
907 907 $pontos = array();
908 908 //pega um shape especifico
909   - $layerPt->open();
  909 + $sopen = $layerPt->open();
  910 + if($sopen == MS_FAILURE){return "erro";}
910 911 for ($i = 0; $i < $res_count; ++$i)
911 912 {
912 913 $result = $layerPt->getResult($i);
... ... @@ -947,7 +948,8 @@ $locaplic - Localização do I3geo.
947 948 $dbname = $nomeshp.".dbf";
948 949 foreach($pontos as $ponto)
949 950 {
950   - $layerPt->open();
  951 + $sopen = $layerPt->open();
  952 + if($sopen == MS_FAILURE){return "erro";}
951 953 foreach ($itemspt as $ni)
952 954 {$reg[] = $ponto->values[$ni];}
953 955 $layerPt->close();
... ... @@ -963,7 +965,8 @@ $locaplic - Localização do I3geo.
963 965 $ident = @$layer->queryByPoint($pt, 0, 0);
964 966 $itens = pegaItens($layer);
965 967 $res_count = $layer->getNumresults();
966   - $layer->open();
  968 + $sopen = $layer->open();
  969 + if($sopen == MS_FAILURE){return "erro";}
967 970 if ($res_count > 0)
968 971 {
969 972 $result = $layer->getResult(0);
... ... @@ -1037,38 +1040,30 @@ function distanciaptpt($temaorigem,$temadestino,$temaoverlay,$locaplic,$itemorig
1037 1040 $layerorigem = $this->mapa->getlayerbyname($temaorigem);
1038 1041 $layerdestino = $this->mapa->getlayerbyname($temadestino);
1039 1042 $layeroverlay = $this->mapa->getlayerbyname($temaoverlay);
1040   - if (@$layerorigem->open() == MS_SUCCESS)
  1043 + $sopen = $layerorigem->open();
  1044 + if($sopen == MS_FAILURE){return "erro";}
  1045 + $res_count = $layerorigem->getNumresults();
  1046 + for ($i = 0; $i < $res_count; ++$i)
1041 1047 {
1042   - $layerorigem->open();
1043   - $res_count = $layerorigem->getNumresults();
1044   - for ($i = 0; $i < $res_count; ++$i)
1045   - {
1046   - $result = $layerorigem->getResult($i);
1047   - $shp_index = $result->shapeindex;
1048   - $shapesorigem[] = $layerorigem->getshape(-1, $shp_index);
1049   - }
1050   - $layerorigem->close();
  1048 + $result = $layerorigem->getResult($i);
  1049 + $shp_index = $result->shapeindex;
  1050 + $shapesorigem[] = $layerorigem->getshape(-1, $shp_index);
1051 1051 }
1052   - else
1053   - {return "erro";}
  1052 + $layerorigem->close();
1054 1053 $layeroverlay->set("tolerance",0);
1055 1054 $layerdestino->set("tolerance",0);
1056 1055 $layeroverlay->queryByrect($this->mapa->extent);
1057 1056 $layerdestino->queryByFeatures($layeroverlay->index);
1058   - if (@$layerdestino->open() == MS_SUCCESS)
  1057 + $sopen = $layerdestino->open();
  1058 + if($sopen == MS_FAILURE){return "erro";}
  1059 + $res_count = $layerdestino->getNumresults();
  1060 + for ($i = 0; $i < $res_count; ++$i)
1059 1061 {
1060   - $layerdestino->open();
1061   - $res_count = $layerdestino->getNumresults();
1062   - for ($i = 0; $i < $res_count; ++$i)
1063   - {
1064   - $result = $layerdestino->getResult($i);
1065   - $shp_index = $result->shapeindex;
1066   - $shapesdestino[] = $layerdestino->getshape(-1, $shp_index);
1067   - }
1068   - $layerdestino->close();
  1062 + $result = $layerdestino->getResult($i);
  1063 + $shp_index = $result->shapeindex;
  1064 + $shapesdestino[] = $layerdestino->getshape(-1, $shp_index);
1069 1065 }
1070   - else
1071   - {return "erro";}
  1066 + $layerdestino->close();
1072 1067 $rect = $this->mapa->extent;
1073 1068 $projInObj = $layerorigem->getProjection();
1074 1069 if ($projInObj == "")
... ... @@ -1148,6 +1143,7 @@ nome do layer criado com o buffer.
1148 1143 */
1149 1144 function criaBuffer($distancia,$locaplic,$unir="nao")
1150 1145 {
  1146 + if(!$this->layer){return "erro";}
1151 1147 set_time_limit(180);
1152 1148 //para manipular dbf
1153 1149 if(file_exists($this->locaplic."/pacotes/phpxbase/api_conversion.php"))
... ... @@ -1159,37 +1155,36 @@ nome do layer criado com o buffer.
1159 1155 //pega os shapes selecionados
1160 1156 if (file_exists(($this->arquivo)."qy"))
1161 1157 {$this->mapa->loadquery(($this->arquivo)."qy");}
1162   - if (@$this->layer->open() == MS_SUCCESS)
  1158 + $sopen = $this->layer->open();
  1159 + if($sopen == MS_FAILURE){return "erro";}
  1160 + $items = pegaItens($this->layer);
  1161 + $this->layer->open();
  1162 + $res_count = $this->layer->getNumresults();
  1163 + $buffers = array();
  1164 + //pega um shape especifico
  1165 + for ($i = 0; $i < $res_count; ++$i)
1163 1166 {
1164   - $items = pegaItens($this->layer);
1165   - $this->layer->open();
1166   - $res_count = $this->layer->getNumresults();
1167   - $buffers = array();
1168   - //pega um shape especifico
1169   - for ($i = 0; $i < $res_count; ++$i)
1170   - {
1171   - $result = $this->layer->getResult($i);
1172   - $shp_index = $result->shapeindex;
1173   - $shape = $this->layer->getshape(-1, $shp_index);
1174   - //calcula a extensão geografica
1175   - $rect = $shape->bounds;
1176   - $projInObj = ms_newprojectionobj("proj=latlong");
1177   - $projOutObj = ms_newprojectionobj("proj=poly,ellps=GRS67,lat_0=".$rect->miny.",lon_0=".$rect->minx.",x_0=5000000,y_0=10000000");
1178   - $poPoint = ms_newpointobj();
1179   - $poPoint->setXY($rect->minx, $rect->miny);
1180   - $dd1 = ms_newpointobj();
1181   - $dd1->setXY($rect->minx, $rect->miny);
1182   - $poPoint->project($projInObj, $projOutObj);
1183   - $dd2 = ms_newpointobj();
1184   - $dd2->setXY(($poPoint->x + $distancia), $poPoint->y);
1185   - $dd2->project($projOutObj,$projInObj);
1186   - $d = $dd1->distanceToPoint($dd2);
1187   - if ($distancia < 0){$d = $d * -1;}
1188   - //calcula a distancia 29100
1189   - //gera o buffer
1190   - $buffers[] = $shape->buffer($d);
1191   - $shapes[] = $shape;
1192   - }
  1167 + $result = $this->layer->getResult($i);
  1168 + $shp_index = $result->shapeindex;
  1169 + $shape = $this->layer->getshape(-1, $shp_index);
  1170 + //calcula a extensão geografica
  1171 + $rect = $shape->bounds;
  1172 + $projInObj = ms_newprojectionobj("proj=latlong");
  1173 + $projOutObj = ms_newprojectionobj("proj=poly,ellps=GRS67,lat_0=".$rect->miny.",lon_0=".$rect->minx.",x_0=5000000,y_0=10000000");
  1174 + $poPoint = ms_newpointobj();
  1175 + $poPoint->setXY($rect->minx, $rect->miny);
  1176 + $dd1 = ms_newpointobj();
  1177 + $dd1->setXY($rect->minx, $rect->miny);
  1178 + $poPoint->project($projInObj, $projOutObj);
  1179 + $dd2 = ms_newpointobj();
  1180 + $dd2->setXY(($poPoint->x + $distancia), $poPoint->y);
  1181 + $dd2->project($projOutObj,$projInObj);
  1182 + $d = $dd1->distanceToPoint($dd2);
  1183 + if ($distancia < 0){$d = $d * -1;}
  1184 + //calcula a distancia 29100
  1185 + //gera o buffer
  1186 + $buffers[] = $shape->buffer($d);
  1187 + $shapes[] = $shape;
1193 1188 }
1194 1189 //faz a união dos elementos se necessário
1195 1190 if($unir == "sim")
... ... @@ -1241,7 +1236,6 @@ nome do layer criado com o buffer.
1241 1236 $cor->setrgb(255,0,0);
1242 1237 $coro = $estilo->outlinecolor;
1243 1238 $coro->setrgb(255,0,0);
1244   -
1245 1239 return($novolayer->name);
1246 1240 }
1247 1241 /*
... ... @@ -1257,6 +1251,7 @@ $locaplic - Localização do I3geo.
1257 1251 */
1258 1252 function criaCentroide($locaplic)
1259 1253 {
  1254 + if(!$this->layer){return "erro";}
1260 1255 set_time_limit(180);
1261 1256 //para manipular dbf
1262 1257 if(file_exists($this->locaplic."/pacotes/phpxbase/api_conversion.php"))
... ... @@ -1268,26 +1263,25 @@ $locaplic - Localização do I3geo.
1268 1263 //pega os shapes selecionados
1269 1264 if (file_exists(($this->arquivo)."qy"))
1270 1265 {$this->mapa->loadquery(($this->arquivo)."qy");}
1271   - if (@$this->layer->open() == MS_SUCCESS)
  1266 + $sopen = $this->layer->open();
  1267 + if($sopen == MS_FAILURE){return "erro";}
  1268 + $items = pegaItens($this->layer);
  1269 + $this->layer->open();
  1270 + $res_count = $this->layer->getNumresults();
  1271 + $centroides = array();
  1272 + $shapes = array();
  1273 + //pega um shape especifico
  1274 + for ($i = 0; $i < $res_count; ++$i)
1272 1275 {
1273   - $items = pegaItens($this->layer);
1274   - $this->layer->open();
1275   - $res_count = $this->layer->getNumresults();
1276   - $centroides = array();
1277   - $shapes = array();
1278   - //pega um shape especifico
1279   - for ($i = 0; $i < $res_count; ++$i)
1280   - {
1281   - $result = $this->layer->getResult($i);
1282   - $shp_index = $result->shapeindex;
1283   - $shape = $this->layer->getshape(-1, $shp_index);
1284   - $LineObj = ms_newLineObj();
1285   - $LineObj->add($shape->getCentroid());
1286   - $ShapeObj = ms_newShapeObj(MS_SHAPE_POINT);
1287   - $ShapeObj->add($LineObj);
1288   - $centroides[] = $ShapeObj;
1289   - $shapes[] = $shape;
1290   - }
  1276 + $result = $this->layer->getResult($i);
  1277 + $shp_index = $result->shapeindex;
  1278 + $shape = $this->layer->getshape(-1, $shp_index);
  1279 + $LineObj = ms_newLineObj();
  1280 + $LineObj->add($shape->getCentroid());
  1281 + $ShapeObj = ms_newShapeObj(MS_SHAPE_POINT);
  1282 + $ShapeObj->add($LineObj);
  1283 + $centroides[] = $ShapeObj;
  1284 + $shapes[] = $shape;
1291 1285 }
1292 1286 $fechou = $this->layer->close();
1293 1287 //gera o novo arquivo shape file
... ... @@ -1763,7 +1757,8 @@ $locaplic - Localização do I3geo
1763 1757 $def[] = array("npontos","N","10","0");
1764 1758 $db = xbase_create($nomeshp.".dbf", $def);
1765 1759 $dbname = $nomeshp.".dbf";
1766   - $layerPo->open();
  1760 + $sopen = $layerPo->open();
  1761 + if($sopen == MS_FAILURE){return "erro";}
1767 1762 $layerPo->whichShapes($this->mapa->extent);
1768 1763 while ($shape = $layerPo->nextShape())
1769 1764 {
... ... @@ -1796,6 +1791,7 @@ Salva o mapa acrescentando um novo layer com o resultado.
1796 1791 */
1797 1792 function agrupaElementos($item,$locaplic)
1798 1793 {
  1794 + if(!$this->layer){return "erro";}
1799 1795 set_time_limit(180);
1800 1796 //para manipular dbf
1801 1797 if(!isset($item)){$item="";}
... ... @@ -1806,7 +1802,8 @@ Salva o mapa acrescentando um novo layer com o resultado.
1806 1802 //define o nome do novo shapefile que será criado
1807 1803 if (file_exists(($this->arquivo)."qy"))
1808 1804 {$this->mapa->loadquery(($this->arquivo)."qy");}
1809   - $this->layer->open();
  1805 + $sopen = $this->layer->open();
  1806 + if($sopen == MS_FAILURE){return "erro";}
1810 1807 $res_count = $this->layer->getNumresults();
1811 1808 //
1812 1809 //pega os indices dos poligonos por classe de atributo
... ... @@ -1909,6 +1906,7 @@ $locaplic - Localização do I3geo
1909 1906 */
1910 1907 function dissolvePoligono($item,$locaplic)
1911 1908 {
  1909 + if(!$this->layer){return "erro";}
1912 1910 set_time_limit(180);
1913 1911 //para manipular dbf
1914 1912 if(!isset($item)){$item="";}
... ... @@ -1919,7 +1917,8 @@ $locaplic - Localização do I3geo
1919 1917 //define o nome do novo shapefile que será criado
1920 1918 if (file_exists(($this->arquivo)."qy"))
1921 1919 {$this->mapa->loadquery(($this->arquivo)."qy");}
1922   - $this->layer->open();
  1920 + $sopen = $this->layer->open();
  1921 + if($sopen == MS_FAILURE){return "erro";}
1923 1922 $res_count = $this->layer->getNumresults();
1924 1923 //
1925 1924 //pega os indices dos poligonos por classe de atributo
... ... @@ -2305,7 +2304,9 @@ function gravaCoordenadasPt($tema,$limitepontos=&quot;TRUE&quot;)
2305 2304 $res_count = $layerPt->getNumresults();
2306 2305 $pontos = array();
2307 2306 //pega um shape especifico
2308   - $layerPt->open();
  2307 + $sopen = $layerPt->open();
  2308 + if($sopen == MS_FAILURE){return "erro";}
  2309 +
2309 2310 if (($prjTema != "") && ($prjMapa != $prjTema))
2310 2311 {
2311 2312 $projInObj = ms_newprojectionobj($prjTema);
... ...
classesphp/classe_atributos.php
... ... @@ -77,7 +77,7 @@ $tema - nome do tema
77 77 $this->locaplic = $locaplic;
78 78 $this->mapa = ms_newMapObj($map_file);
79 79 $this->arquivo = $map_file;
80   - if($tema != "")
  80 + if($tema != "" && @$this->mapa->getlayerbyname($tema))
81 81 $this->layer = $this->mapa->getlayerbyname($tema);
82 82 $this->nome = $tema;
83 83 }
... ... @@ -106,6 +106,7 @@ xmin ymin xmax ymax separados por espaço.
106 106 */
107 107 function extensaoShape($shape)
108 108 {
  109 + if(!$this->layer){return "erro";}
109 110 $prjMapa = $this->mapa->getProjection();
110 111 $prjTema = $this->layer->getProjection();
111 112 $ret = $shape->bounds;
... ... @@ -141,6 +142,7 @@ $registro - Índice do registro que será consultado.
141 142 */
142 143 function extensaoRegistro($registro)
143 144 {
  145 + if(!$this->layer){return "erro";}
144 146 $this->layer->set("template","none.htm");
145 147 $this->layer->setfilter("");
146 148 $ext = "";
... ... @@ -201,6 +203,7 @@ $tipo - Tipo de busca brasil|null
201 203 */
202 204 function itensTexto($tipo)
203 205 {
  206 + if(!$this->layer){return "erro";}
204 207 if ($tipo == "brasil")
205 208 {$this->mapa = extPadrao($this->mapa);}
206 209 $this->layer->set("template","none.htm");
... ... @@ -213,7 +216,8 @@ $tipo - Tipo de busca brasil|null
213 216 if ($this->layer->getNumresults() > 0){$existesel = "sim";}
214 217 if ($existesel == "nao")
215 218 {$this->layer->querybyrect($this->mapa->extent);}
216   - $this->layer->open();
  219 + $sopen = $this->layer->open();
  220 + if($sopen == MS_FAILURE){return "erro";}
217 221 $registros[] = array();
218 222 $res_count = $this->layer->getNumresults();
219 223 for ($i = 0; $i < $res_count; ++$i)
... ... @@ -256,6 +260,7 @@ $tipolista - Indica se serão mostrados todos os registros ou apenas os seleciona
256 260 */
257 261 function listaRegistros($itemtema,$tipo,$unico,$inicio,$fim,$tipolista)
258 262 {
  263 + if(!$this->layer){return "erro";}
259 264 $resultadoFinal = array();
260 265 if ((!isset($tipolista)) || ($tipolista=="")){$tipolista = "tudo";}
261 266 if (!isset($inicio)){$inicio = 0;}
... ... @@ -276,7 +281,8 @@ $tipolista - Indica se serão mostrados todos os registros ou apenas os seleciona
276 281 if (file_exists($this->arquivo."qy"))
277 282 {$this->mapa->loadquery(($this->arquivo)."qy");}
278 283 $indxlayer = $this->layer->index;
279   - $this->layer->open();
  284 + $sopen = $this->layer->open();
  285 + if($sopen == MS_FAILURE){return "erro";}
280 286 $res_count = $this->layer->getNumresults();
281 287 $registros = array();
282 288 //lista apenas os selecionados
... ... @@ -323,7 +329,8 @@ $tipolista - Indica se serão mostrados todos os registros ou apenas os seleciona
323 329 if (($res_count >= $fim) && ($fim < $res_count))
324 330 {$res_count = $fim;}
325 331 }
326   - $this->layer->open();
  332 + $sopen = $this->layer->open();
  333 + if($sopen == MS_FAILURE){return "erro";}
327 334 for ($i = $inicio; $i < $res_count; ++$i)
328 335 {
329 336 $valitem = array();
... ... @@ -406,7 +413,8 @@ $onde - Tipo de abrangência espacial (brasil ou mapa)
406 413 if ($filtro != ""){$l->setfilter("");}
407 414 $buscas = "ÁÃÓÕÔáàãâóòôõúûíéêç";
408 415 $trocas = "AAOOOaaaaoooouuieec";
409   - $l->open();
  416 + $sopen = $l->open();
  417 + if($sopen == MS_FAILURE){return "erro";}
410 418 $l->whichShapes($this->mapa->extent);
411 419 $fr = array();
412 420 while ($shape = $l->nextShape())
... ... @@ -465,6 +473,7 @@ Include:
465 473 */
466 474 function estatDescritivas($item,$exclui)
467 475 {
  476 + if(!$this->layer){return "erro";}
468 477 $this->layer->set("template","none.htm");
469 478 $items = pegaItens($this->layer);
470 479 $valores = array();
... ... @@ -477,7 +486,8 @@ Include:
477 486 if ($this->layer->getNumresults() > 0){$existesel = "sim";}
478 487 if ($existesel == "nao")
479 488 {$this->layer->queryByrect($this->mapa->extent);}
480   - $abriu = $this->layer->open();
  489 + $sopen = $this->layer->open();
  490 + if($sopen == MS_FAILURE){return "erro";}
481 491 $res_count = $this->layer->getNumresults();
482 492 //pega os valores
483 493 for ($i = 0; $i < $res_count; ++$i)
... ... @@ -837,7 +847,8 @@ function identificaQBP($tema,$x,$y,$map_file,$resolucao,$item=&quot;&quot;,$tiporetorno=&quot;&quot;
837 847 }
838 848 }
839 849 $res_count = $layer->getNumresults();
840   - $layer->open();
  850 + $sopen = $layer->open();
  851 + if($sopen == MS_FAILURE){return "erro";}
841 852 for ($i = 0; $i < $res_count; ++$i)
842 853 {
843 854 $valori = array();
... ...
classesphp/classe_legenda.php
... ... @@ -116,7 +116,7 @@ $template - nome do template para processar a legenda
116 116 $this->mapa = ms_newMapObj($map_file);
117 117 $this->arquivo = $map_file;
118 118 $this->localaplicacao = $locaplic;
119   - if ($tema != "")
  119 + if($tema != "" && @$this->mapa->getlayerbyname($tema))
120 120 {
121 121 $this->layer = $this->mapa->getlayerbyname($tema);
122 122 $this->nome = $tema;
... ... @@ -296,7 +296,8 @@ array
296 296 if (($totaliza=="sim") && ($nc > 1))
297 297 {
298 298 $layer->set("template","none.htm");
299   - $layer->open();
  299 + $sopen = $layer->open();
  300 + if($sopen == MS_FAILURE){return "erro";}
300 301 $itens = $layer->getitems();
301 302 $total = 0;
302 303 $nreg = array();
... ... @@ -354,6 +355,7 @@ Exclui um estilo de uma classe.
354 355 */
355 356 function excluiEstilo($classe,$estilo)
356 357 {
  358 + if(!$this->layer){return "erro";}
357 359 $classe = $this->layer->getclass($classe);
358 360 $classe->deletestyle($estilo);
359 361 }
... ... @@ -367,6 +369,7 @@ objeto estilo
367 369 */
368 370 function adicionaEstilo($classe,$estilo)
369 371 {
  372 + if(!$this->layer){return "erro";}
370 373 $classe = $this->layer->getclass($classe);
371 374 $estilo = $classe->getstyle($estilo);
372 375 $e = ms_newStyleObj($classe,$estilo);
... ... @@ -384,6 +387,7 @@ $estilo - Índice do estilo de uma classe que será clonado.
384 387 */
385 388 function sobeEstilo($classe,$estilo)
386 389 {
  390 + if(!$this->layer){return "erro";}
387 391 $classe = $this->layer->getclass($classe);
388 392 $classe->movestyleup($estilo);
389 393 }
... ... @@ -399,6 +403,7 @@ $estilo - Índice do estilo de uma classe que será clonado.
399 403 */
400 404 function desceEstilo($classe,$estilo)
401 405 {
  406 + if(!$this->layer){return "erro";}
402 407 $classe = $this->layer->getclass($classe);
403 408 $classe->movestyledown($estilo);
404 409 }
... ... @@ -480,6 +485,7 @@ string com o tipo do layer,id do estilo,outlinecolor,backgroundcolor,color,symbo
480 485 */
481 486 function pegaParametros($classe)
482 487 {
  488 + if(!$this->layer){return "erro";}
483 489 $tipoLayer = $this->layer->type;
484 490 $classe = $this->layer->getclass($classe);
485 491 $numestilos = $classe->numstyles;
... ... @@ -520,6 +526,7 @@ $size - Tamanho que será aplicado ao símbolo.
520 526 */
521 527 function aplicaParametro($classe,$estilo,$outlinecolor,$backgroundcolor,$color,$symbolname,$size)
522 528 {
  529 + if(!$this->layer){return "erro";}
523 530 $classe = $this->layer->getclass($classe);
524 531 $estilo = $classe->getstyle($estilo);
525 532 if (isset($outlinecolor))
... ...
classesphp/classe_mapa.php
... ... @@ -142,10 +142,13 @@ string - javascript com os parametros
142 142 $sel = "nao";
143 143 if ($qy) //verifica se existe alguma selecao no tema
144 144 {
145   - $oLayer->open();
146   - $res_count = $oLayer->getNumresults();
147   - $oLayer->close();
148   - if ($res_count > 0){$sel = "sim";$existesel = true;}
  145 + $sopen = $oLayer->open();
  146 + if($sopen != MS_FAILURE)
  147 + {
  148 + $res_count = $oLayer->getNumresults();
  149 + $oLayer->close();
  150 + if ($res_count > 0){$sel = "sim";$existesel = true;}
  151 + }
149 152 }
150 153 if ((strtoupper($oLayer->getmetadata("tema")) != "NAO") && ($oLayer->getmetadata("escondido") == ""))
151 154 {
... ...
classesphp/classe_navegacao.php
... ... @@ -140,10 +140,10 @@ Desliga o status das camadas raster
140 140 */
141 141 function desabilitaRASTER()
142 142 {
143   - $ls = $this->mapa->getalllayernames();
144   - foreach ($ls as $l)
145   - {
146   - $layer = $this->mapa->getlayerbyname($l);
  143 + $c = $this->mapa->numlayers;
  144 + for ($i=0;$i < $c;++$i)
  145 + {
  146 + $layer = $this->mapa->getlayer($i);
147 147 if ($layer->type == MS_LAYER_RASTER)
148 148 {$layer->set("status",MS_OFF);}
149 149 }
... ...
classesphp/classe_selecao.php
... ... @@ -76,6 +76,7 @@ $tema - nome do tema
76 76 //error_reporting(E_ALL);
77 77 $this->mapa = ms_newMapObj($map_file);
78 78 $this->arquivo = $map_file;
  79 + if($tema != "" && @$this->mapa->getlayerbyname($tema))
79 80 $this->layer = $this->mapa->getlayerbyname($tema);
80 81 $this->nome = $tema;
81 82 }
... ... @@ -104,6 +105,7 @@ $ys - lista de coordenadas y separadas por virgula
104 105 */
105 106 function selecaoPorPoligono($tipo,$xs,$ys)
106 107 {
  108 + if(!$this->layer){return "erro";}
107 109 $this->layer->set("tolerance",0);
108 110 if ($tipo == "limpa")
109 111 {return($this->selecaoLimpa());}
... ... @@ -160,6 +162,7 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa
160 162 */
161 163 function selecaoTema($temao,$tipo)
162 164 {
  165 + if(!$this->layer){return "erro";}
163 166 $this->layer->set("tolerance",0);
164 167 if ($tipo == "limpa")
165 168 {return($this->selecaoLimpa());}
... ... @@ -191,7 +194,8 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa
191 194 $selecao = "";
192 195 if (($selecao != "ok") && ($layero->data != ""))
193 196 {
194   - $layero->open();
  197 + $sopen = $layero->open();
  198 + if($sopen == MS_FAILURE){return "erro";}
195 199 $res_count = $layero->getNumresults();
196 200 for ($i = 0; $i < $res_count; ++$i)
197 201 {
... ... @@ -245,7 +249,8 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa
245 249 if (($selecao != "ok") && ($layero->data == ""))
246 250 {
247 251 $layero->queryByRect($this->mapa->extent);
248   - $layero->open();
  252 + $sopen = $layero->open();
  253 + if($sopen == MS_FAILURE){return "erro";}
249 254 $conta = $layero->getNumresults();
250 255 for ($k = 0; $k < $conta; $k++)
251 256 {
... ... @@ -319,6 +324,7 @@ $valor - Valor.
319 324 {return($this->selecaoLimpa());}
320 325 if ($tipo == "inverte")
321 326 {return($this->selecaoInverte());}
  327 + if(!$this->layer){return "erro";}
322 328 $operador = explode(",",$operador);
323 329 $operador = $operador[1];
324 330 $this->layer->set("template","none.htm");
... ... @@ -373,6 +379,7 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa
373 379 {return ($this->selecaoLimpa());}
374 380 if ($tipo == "inverte")
375 381 {return ($this->selecaoInverte());}
  382 + if(!$this->layer){return "erro";}
376 383 $this->layer->set("template","none.htm");
377 384 if (file_exists(($this->arquivo)."qy"))
378 385 {$this->mapa->loadquery(($this->arquivo)."qy");}
... ... @@ -449,6 +456,7 @@ Limpa a seleção do tema.
449 456 {
450 457 if ($this->nome != "") //limpa de um tema
451 458 {
  459 + if(!$this->layer){return "erro";}
452 460 if (file_exists(($this->arquivo)."qy"))
453 461 {$this->mapa->loadquery(($this->arquivo)."qy");}
454 462 $indxlayer = $this->layer->index;
... ... @@ -470,6 +478,7 @@ Inverte seleção do tema.
470 478 */
471 479 function selecaoInverte()
472 480 {
  481 + if(!$this->layer){return "erro";}
473 482 $this->layer->set("template","none.htm");
474 483 if (file_exists(($this->arquivo)."qy"))
475 484 {$this->mapa->loadquery(($this->arquivo)."qy");}
... ... @@ -513,6 +522,7 @@ $shp_atual - Indices dos elementos já selecionados.
513 522 */
514 523 function selecaoAdiciona($shpi,$shp_atual)
515 524 {
  525 + if(!$this->layer){return "erro";}
516 526 $this->layer->set("template","none.htm");
517 527 $indxlayer = $this->layer->index;
518 528 $shp = array_merge($shpi,$shp_atual);
... ... @@ -536,6 +546,7 @@ $shp_atual - Indices dos elementos já selecionados.
536 546 */
537 547 function selecaoRetira($shpi,$shp_atual)
538 548 {
  549 + if(!$this->layer){return "erro";}
539 550 $this->layer->set("template","none.htm");
540 551 $indxlayer = $this->layer->index;
541 552 $this->mapa->freequery($indxlayer);
... ... @@ -560,6 +571,7 @@ $ids - Ids separados por vírgula correspondendo aos registros.
560 571 */
561 572 function incluiSel($ids)
562 573 {
  574 + if(!$this->layer){return "erro";}
563 575 $this->layer->set("template","none.htm");
564 576 if (file_exists(($this->arquivo)."qy"))
565 577 {$this->mapa->loadquery(($this->arquivo)."qy");}
... ... @@ -583,6 +595,7 @@ $dir_tmp - localização do diretório temporário
583 595 */
584 596 function selecao2tema($locaplic,$dir_tmp)
585 597 {
  598 + if(!$this->layer){return "erro";}
586 599 $this->layer->set("template","none.htm");
587 600 $this->layer->setfilter("");
588 601 $nomeshp = criaSHP($this->nome,$this->arquivo,$locaplic,$dir_tmp);
... ... @@ -611,6 +624,7 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa
611 624 */
612 625 function selecaoEXT($tipo)
613 626 {
  627 + if(!$this->layer){return "erro";}
614 628 $this->layer->set("tolerance",0);
615 629 if ($tipo == "limpa")
616 630 {return ($this->selecaoLimpa());}
... ... @@ -659,6 +673,7 @@ $ext - coordenadas separadas por espaços no estilo xmin ymin xmax ymax
659 673 */
660 674 function selecaoBOX($tipo,$ext)
661 675 {
  676 + if(!$this->layer){return "erro";}
662 677 $this->layer->set("tolerance",0);
663 678 if ($tipo == "limpa")
664 679 {return ($this->selecaoLimpa());}
... ...
classesphp/classe_shp.php
... ... @@ -75,13 +75,11 @@ $tema - nome do tema
75 75 $this->mapa = ms_newMapObj($map_file);
76 76 $this->arquivo = $map_file;
77 77 $this->tema = $tema;
78   - if ($tema != "")
  78 + if($tema != "" && @$this->mapa->getlayerbyname($tema))
79 79 {
80 80 $this->layer = $this->mapa->getlayerbyname($tema);
81   - $this->nome = $tema;
82 81 }
83   - else
84   - {$this->layer = "";}
  82 + $this->nome = $tema;
85 83 }
86 84 /*
87 85 function: salva
... ... @@ -146,8 +144,7 @@ $projecao - código epsg da projeção das coordenadas
146 144 */
147 145 function insereSHP($xy,$projecao,$item="",$valor="")
148 146 {
149   - if($this->layer == "")
150   - {return("erro");}
  147 + if(!$this->layer){return "erro";}
151 148 if(file_exists($this->locaplic."/pacotes/phpxbase/api_conversion.php"))
152 149 include_once($this->locaplic."/pacotes/phpxbase/api_conversion.php");
153 150 else
... ... @@ -287,9 +284,9 @@ string - xy
287 284 */
288 285 function listaPontosShape()
289 286 {
290   - if($this->layer == "")
291   - {return("erro");}
292   - $this->layer->open();
  287 + if(!$this->layer){return "erro";}
  288 + $sopen = $this->layer->open();
  289 + if($sopen == MS_FAILURE){return "erro";}
293 290 $this->layer->whichShapes($this->mapa->extent);
294 291 $xy = array();
295 292 while ($shape = $this->layer->nextShape())
... ... @@ -318,8 +315,7 @@ $para - linha|poligono
318 315 include_once($this->locaplic."/pacotes/phpxbase/api_conversion.php");
319 316 else
320 317 include_once "../pacotes/phpxbase/api_conversion.php";
321   - if($this->layer == "")
322   - {return("erro");}
  318 + if(!$this->layer){return "erro";}
323 319 $this->layer->set("template","none.htm");
324 320 $diretorio = dirname($this->arquivo);
325 321 $tipol = MS_SHP_ARC;
... ...
classesphp/classe_temas.php
... ... @@ -97,9 +97,9 @@ $tema - nome do tema que será processado
97 97 $this->locaplic = $locaplic;
98 98 $this->mapa = ms_newMapObj($map_file);
99 99 $this->arquivo = $map_file;
100   - if (isset($tema))
  100 + if($tema != "" && @$this->mapa->getlayerbyname($tema))
101 101 {
102   - $this->layer = @$this->mapa->getlayerbyname($tema);
  102 + $this->layer = $this->mapa->getlayerbyname($tema);
103 103 $this->nome = $tema;
104 104 $vermultilayer = new vermultilayer();
105 105 $vermultilayer->verifica($map_file,$tema);
... ... @@ -136,6 +136,7 @@ $lista - lista de processos separados por |
136 136 */
137 137 function aplicaProcessos($lista)
138 138 {
  139 + if(!$this->layer){return "erro";}
139 140 if ($this->layer->num_processing > 0)
140 141 {$this->layer->clearProcessing();}
141 142 $lista = str_replace('"',"",$lista);
... ... @@ -342,6 +343,7 @@ Calcula a extensão geográfica de um tema e ajusta o mapa para essa extensão.
342 343 */
343 344 function zoomTema()
344 345 {
  346 + if(!$this->layer){return "erro";}
345 347 $prjMapa = "";
346 348 $prjTema = "";
347 349 if($this->layer->type != MS_LAYER_RASTER)
... ... @@ -382,6 +384,7 @@ string Filtro.
382 384 */
383 385 function pegaFiltro()
384 386 {
  387 + if(!$this->layer){return "erro";}
385 388 $fil = $this->layer->getfilter();
386 389 if ($this->layer->getfilter() == '"(null)"'){return " ";}
387 390 if (function_exists("mb_convert_encoding"))
... ... @@ -402,6 +405,7 @@ $testa - Testa o filtro e retorna uma imagem.
402 405 */
403 406 function insereFiltro($filtro,$testa="")
404 407 {
  408 + if(!$this->layer){return "erro";}
405 409 $fil = $this->layer->getfilter();
406 410 $filtro = str_replace("|","'",$filtro);
407 411 if ($this->layer->connectiontype == MS_POSTGIS)
... ... @@ -536,7 +540,7 @@ $fonte - Fonte.
536 540 //verifica se j'a existe um layer criado anteriormente com o mesmo nome e apaga se existir
537 541 if ($tipo == "limpaponto")
538 542 {
539   - if ($this->layer != "")
  543 + if ($this->layer)
540 544 {
541 545 $this->layer->set("status",MS_DELETE);
542 546 $this->layer->set("name","pindelete");
... ... @@ -544,7 +548,7 @@ $fonte - Fonte.
544 548 }
545 549 }
546 550 //se o novo layer nao existir, cria um novo copiando o layer "pin" que ja deve existir no map file (no map file que iniciou a aplicacao)
547   - if ($this->layer == "")
  551 + if (!$this->layer)
548 552 {
549 553 $pinlayer = criaLayer($this->mapa,MS_LAYER_LINE,MS_DEFAULT,"Ins",$metaClasse="SIM");
550 554 $c = $pinlayer->getclass(0);
... ... @@ -674,6 +678,7 @@ $nome - nome que será dado a geometria
674 678 */
675 679 function capturaGeometrias($dir_tmp,$imgdir,$nome="")
676 680 {
  681 + if(!$this->layer){return "erro";}
677 682 $this->mapa->setsize(30,30);
678 683 $ext = $this->mapa->extent;
679 684 $sb = $this->mapa->scalebar;
... ... @@ -681,7 +686,9 @@ $nome - nome que será dado a geometria
681 686 if (file_exists($this->arquivo."qy"))
682 687 {$this->mapa->loadquery(($this->arquivo)."qy");}
683 688 $items = pegaItens($this->layer);
684   - $this->layer->open();
  689 + $sopen = $this->layer->open();
  690 + if($sopen == MS_FAILURE){return "erro";}
  691 +
685 692 $res_count = $this->layer->getNumresults();
686 693 $final["layer"] = pegaNome($this->layer);
687 694 $registros = array();
... ... @@ -791,6 +798,7 @@ lista - lista de item e cores de cada parte do grafico
791 798 */
792 799 function graficotema($lista,$tamanho="50",$tipo="PIE",$outlinecolor="",$offset=0)
793 800 {
  801 + if(!$this->layer){return "erro";}
794 802 $nome = pegaNome($this->layer);
795 803 $novolayer = ms_newLayerObj($this->mapa, $this->layer);
796 804 $nomer = nomeRandomico();
... ...
classesphp/classe_toponimia.php
... ... @@ -81,6 +81,7 @@ $tema - nome do tema que será processado
81 81 include_once("funcoes_gerais.php");
82 82 $this->mapa = ms_newMapObj($map_file);
83 83 $this->arquivo = $map_file;
  84 + if($tema != "" && @$this->mapa->getlayerbyname($tema))
84 85 $this->layer = $this->mapa->getlayerbyname($tema);
85 86 $this->nome = $tema;
86 87 }
... ... @@ -144,6 +145,7 @@ $tipo Tipo teste|
144 145 */
145 146 function criaToponimia($item,$position,$partials,$offsetx,$offsety,$minfeaturesize,$mindistance,$force,$shadowcolor,$shadowsizex,$shadowsizey,$outlinecolor,$cor,$sombray,$sombrax,$sombra,$fundo,$angulo,$tamanho,$fonte,$tipo)
146 147 {
  148 + if(!$this->layer){return "erro";}
147 149 if (!isset($tipo)){$tipo = "";}
148 150 if ($item != "") //o layer nao tem tabela mas tem toponimia
149 151 {
... ... @@ -230,6 +232,7 @@ $item Item que será utilizado.
230 232 */
231 233 function ativaEtiquetas($item)
232 234 {
  235 + if(!$this->layer){return "erro";}
233 236 $this->layer->setmetadata("TIP",$item);
234 237 return("ok");
235 238 }
... ... @@ -241,6 +244,7 @@ remove a inclusão de etiquetas em um tema.
241 244 */
242 245 function removeEtiquetas()
243 246 {
  247 + if(!$this->layer){return "erro";}
244 248 $this->layer->setmetadata("TIP","");
245 249 return("ok");
246 250 }
... ...
classesphp/flamingoogc.php
... ... @@ -92,10 +92,10 @@ foreach(array_keys($_SESSION) as $k)
92 92 }
93 93 $postgis_mapa = $_SESSION["postgis_mapa"];
94 94 $nmap = ms_newMapobj($map_file);
95   -$ts = $nmap->getalllayernames();
96   -foreach ($ts as $t)
  95 +$c = $nmap->numlayers;
  96 +for ($i=0;$i < $c;++$i)
97 97 {
98   - $l = $nmap->getlayerbyname($t);
  98 + $l = $nmap->getlayer($i);}
99 99 if($l->connectiontype != MS_WMS)
100 100 {
101 101 $l->setmetadata("ows_title",pegaNome($l));
... ...
classesphp/funcoes_gerais.php
... ... @@ -1020,7 +1020,8 @@ function pegaValores($mapa,$layer,$item,$numerico=false,$ignorar=&quot;&quot;)
1020 1020 $layer->setfilter("");
1021 1021 if (@$layer->queryByrect($mapa->extent) == MS_SUCCESS)
1022 1022 {
1023   - $layer->open();
  1023 + $sopen = $layer->open();
  1024 + if($sopen == MS_FAILURE){return "erro";}
1024 1025 $res_count = $layer->getNumresults();
1025 1026 $valitem = array();
1026 1027 for ($i=0;$i<$res_count;++$i)
... ... @@ -1083,7 +1084,8 @@ function pegaValoresM($mapa,$layer,$itens,$exclui=&quot;nulo&quot;,$selecionados=&quot;nao&quot;)
1083 1084 //pega os valores dos indices dos elementos selecionados para comparacao posterior
1084 1085 if ($selecionados == "sim")
1085 1086 {
1086   - $layer->open();
  1087 + $sopen = $layer->open();
  1088 + if($sopen == MS_FAILURE){return "erro";}
1087 1089 $res_count = $layer->getNumresults();
1088 1090 for ($i = 0; $i < $res_count; ++$i)
1089 1091 {
... ... @@ -1095,7 +1097,9 @@ function pegaValoresM($mapa,$layer,$itens,$exclui=&quot;nulo&quot;,$selecionados=&quot;nao&quot;)
1095 1097 $valores = array();
1096 1098 if (@$layer->queryByrect($mapa->extent) == MS_SUCCESS)
1097 1099 {
1098   - $layer->open();
  1100 + $sopen = $layer->open();
  1101 + if($sopen == MS_FAILURE){return "erro";}
  1102 +
1099 1103 $res_count = $layer->getNumresults();
1100 1104 for ($i=0;$i<$res_count;++$i)
1101 1105 {
... ... @@ -1616,7 +1620,9 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE)
1616 1620 $res_count = $layer->getNumresults();
1617 1621 if ($res_count > 0)
1618 1622 {
1619   - $abriu = $layer->open();
  1623 + $sopen = $layer->open();
  1624 + if($sopen == MS_FAILURE){return "erro";}
  1625 +
1620 1626 for ($i = 0; $i < $res_count; ++$i)
1621 1627 {
1622 1628 $result = $layer->getResult($i);
... ... @@ -1932,7 +1938,9 @@ function autoClasses(&amp;$nlayer,$mapa)
1932 1938 $ret->setextent($temp[0],$temp[1],$temp[2],$temp[3]);
1933 1939 }
1934 1940 //
1935   - $nlayer->open();
  1941 + $sopen = $nlayer->open();
  1942 + if($sopen == MS_FAILURE){return "erro";}
  1943 +
1936 1944 $status = $nlayer->whichShapes($ret);
1937 1945 $parametrosClasses = array();
1938 1946 if ($status == 0)
... ...