From e09b7bbd6060840c58c87e3f5808f6363410e4c5 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Tue, 18 Nov 2008 18:35:33 +0000 Subject: [PATCH] Inclusão de contador de acessos para os web services do tipo WMS --- admin/php/criabanco.php | 2 +- admin/php/webservices.php | 25 +++++++++++++++++++++++-- admin/php/xml.php | 3 +++ classesphp/classe_mapa.php | 6 ++++-- classesphp/funcoes_gerais.php | 12 ++++++------ classesphp/wmswfs.php | 16 ++++++++++++++-- classesphp/wscliente.php | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- ferramentas/conectargeorss/index.htm | 29 ++++++++++++++++++++--------- ferramentas/conectargeorss/index.js | 18 ++++++++++-------- ferramentas/conectarwms/index.htm | 27 +++++++++++++-------------- ferramentas/conectarwms/index.js | 8 ++++++-- menutemas/admin.db | Bin 52224 -> 0 bytes 12 files changed, 176 insertions(+), 47 deletions(-) diff --git a/admin/php/criabanco.php b/admin/php/criabanco.php index aea67ca..294568f 100644 --- a/admin/php/criabanco.php +++ b/admin/php/criabanco.php @@ -8,7 +8,7 @@ $tabelas = array( "CREATE TABLE i3geoadmin_sistemasf (abrir_funcao TEXT, h_funcao NUMERIC, id_funcao INTEGER PRIMARY KEY, id_sistema NUMERIC, nome_funcao TEXT, perfil_funcao TEXT, w_funcao NUMERIC)", "CREATE TABLE i3geoadmin_subgrupos (desc_subgrupo TEXT, id_subgrupo INTEGER PRIMARY KEY, nome_subgrupo TEXT)", "CREATE TABLE i3geoadmin_temas (id_tema INTEGER PRIMARY KEY, kml_tema TEXT, ogc_tema TEXT, download_tema TEXT, tags_tema TEXT, tipoa_tema TEXT, link_tema TEXT, desc_tema TEXT, nome_tema TEXT, codigo_tema TEXT)", -"CREATE TABLE i3geoadmin_ws (autor_ws TEXT, desc_ws TEXT, id_ws INTEGER PRIMARY KEY, link_ws TEXT, nome_ws TEXT, tipo_ws TEXT)", +"CREATE TABLE i3geoadmin_ws (nacessos INTEGER, nacessosok INTEGER, autor_ws TEXT, desc_ws TEXT, id_ws INTEGER PRIMARY KEY, link_ws TEXT, nome_ws TEXT, tipo_ws TEXT)", "CREATE TABLE i3geoadmin_tags (id_tag INTEGER PRIMARY KEY, nome TEXT)", "CREATE TABLE i3geoadmin_perfis (id_perfil INTEGER PRIMARY KEY, perfil TEXT)", "CREATE TABLE i3geoadmin_atlasp (ordem_prancha NUMERIC, desc_prancha TEXT, h_prancha NUMERIC, icone_prancha TEXT, id_atlas NUMERIC, id_prancha INTEGER PRIMARY KEY, link_prancha TEXT, mapext_prancha TEXT, titulo_prancha TEXT, w_prancha NUMERIC)", diff --git a/admin/php/webservices.php b/admin/php/webservices.php index 8b09ade..8a9c4ad 100644 --- a/admin/php/webservices.php +++ b/admin/php/webservices.php @@ -83,7 +83,7 @@ function alterarWS() } else { - $dbhw->query("INSERT INTO i3geoadmin_ws (nome_ws,desc_ws,autor_ws,tipo_ws,link_ws) VALUES ('','','','','')"); + $dbhw->query("INSERT INTO i3geoadmin_ws (nome_ws,desc_ws,autor_ws,tipo_ws,link_ws,nacessos,nacessosok) VALUES ('','','','','','','')"); $id = $dbhw->query("SELECT id_ws FROM i3geoadmin_ws"); $id = $id->fetchAll(); $id = intval($id[count($id)-1]['id_ws']); @@ -114,6 +114,27 @@ function excluirWS() return "Error!: " . $e->getMessage(); } } +function adicionaAcesso($id_ws,$sucesso) +{ + try + { + //error_reporting(E_ALL); + include("conexao.php"); + $dados = pegaDados("select * from i3geoadmin_ws WHERE id_ws = $id_ws"); + $acessos = $dados[0]["nacessos"] + 1; + if($sucesso) + $ok = $dados[0]["nacessosok"] + 1; + else + $ok = $dados[0]["nacessosok"]; + $dbhw->query("UPDATE i3geoadmin_ws SET nacessos = '$acessos',nacessosok = '$ok' WHERE id_ws = $id_ws"); + $dbhw = null; + $dbh = null; + } + catch (PDOException $e) + { + return "Error!: " . $e->getMessage(); + } +} function importarXmlWS() { global $xml,$tipo; @@ -146,7 +167,7 @@ function importarXmlWS() $autor = utf8_encode($autor); } if(!isset($wsExistentes[$nome])) - $dbhw->query("INSERT INTO i3geoadmin_ws (nome_ws,desc_ws,autor_ws,link_ws,tipo_ws) VALUES ('$nome','$desc','$autor','$link','$tipo')"); + $dbhw->query("INSERT INTO i3geoadmin_ws (nome_ws,desc_ws,autor_ws,link_ws,tipo_ws,nacessos,nacessosok) VALUES ('$nome','$desc','$autor','$link','$tipo',0,0)"); $wsExistentes[$nome] = 0; } } diff --git a/admin/php/xml.php b/admin/php/xml.php index 5a473e3..3779588 100644 --- a/admin/php/xml.php +++ b/admin/php/xml.php @@ -106,6 +106,9 @@ function geraXmlRSS($locaplic,$sql,$descricao) $xml .= "".xmlTexto_prepara($row["link_ws"])."\n"; $xml .= "\n"; $xml .= "".xmlTexto_prepara($row["autor_ws"])."\n"; + $xml .= "".xmlTexto_prepara($row["nacessos"])."\n"; + $xml .= "".xmlTexto_prepara($row["nacessosok"])."\n"; + $xml .= "".xmlTexto_prepara($row["id_ws"])."\n"; $xml .= "\n"; } $xml .= "\n"; diff --git a/classesphp/classe_mapa.php b/classesphp/classe_mapa.php index e7ebccc..5ccf333 100644 --- a/classesphp/classe_mapa.php +++ b/classesphp/classe_mapa.php @@ -1134,9 +1134,10 @@ $canal - Identificador do canal (ordem em que está no RSS) { $env = array(); //define o tipo - $tipog = "envelope"; + $tipog = ""; if ($item->xpath('geo:lat')){$tipog = "geo";} if ($item->xpath('georss:point')){$tipog = "georsspoint";} + if ($item->xpath('georss:where')){$tipog = "envelope";} if ($tipog == "envelope") { foreach ($item->xpath('georss:where') as $w) @@ -1175,7 +1176,7 @@ $canal - Identificador do canal (ordem em que está no RSS) } if (count($env) > 0) { - $resultado[] = array($item->title,$item->link,$item->description,$item->category,$env); + $resultado[] = array(ixml($item,"title"),ixml($item,"link"),ixml($item,"description"),ixml($item,"category"),$env); } } //cria o shapefile com os dados @@ -1254,6 +1255,7 @@ $canal - Identificador do canal (ordem em que está no RSS) } //$layer->set("transparency",50); $layer->setmetadata("nomeoriginal",basename($nomeshp)); + //echo $tipol; return("ok"); } return("erro"); diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index a8fd367..de2c4e2 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -1448,7 +1448,7 @@ function reSLD($map_file,$tema,$sld) fclose($fp); } /* -function: georssCanais +function: georssCanais (depreciado) Lista os canais de um GeoRss. @@ -1464,15 +1464,15 @@ $locaplic - Localização do I3geo function georssCanais($servico,$map_file,$dir_tmp,$locaplic) { $xml = simplexml_load_file($servico); + //var_dump($xml); foreach($xml->channel as $c) { - $resultado[] = $c->title."#".$c->link."#".$c->description."#".$c->category; + $resultado[] = array("title"=>(ixml($c,"title")),"link"=>(ixml($c,"link")),"description"=>(ixml($c,"description")),"category"=>(ixml($c,"category"))); } - if (function_exists("mb_convert_encoding")) - {return(mb_convert_encoding(implode("*",$resultado),"HTML-ENTITIES","auto"));} - else - {return(implode("*",$resultado));} + //var_dump($resultado); + return $resultado; } + /* Section: tema */ diff --git a/classesphp/wmswfs.php b/classesphp/wmswfs.php index c9c7283..16bde0b 100644 --- a/classesphp/wmswfs.php +++ b/classesphp/wmswfs.php @@ -90,10 +90,12 @@ parameters: $servico - Endereço do web service. $cp - Objeto CPAINT. + +$id_ws - id do wms se estiver sendo utilizado o banco de administração do i3geo */ function getcapabilities() { - global $servico,$cp; + global $servico,$cp,$id_ws; $teste = explode("=",$servico); if ( count($teste) > 1 ){$servico = $servico."&";} $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WMS&version=1.1.0"; @@ -227,7 +229,7 @@ $cp - Objeto CPAINT. */ function temaswms() { - global $servico,$cp; + global $servico,$cp,$id_ws; $teste = explode("=",$servico); if ( count($teste) > 1 ){$servico = $servico."&";} $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.1.1"; @@ -235,11 +237,21 @@ function temaswms() # Test that the capabilites file has successfully downloaded. # //$wms_service_request = "c://temp//teste.xml"; + include_once("../admin/php/webservices.php"); if( !($wms_capabilities = file($wms_service_request)) ) { # Cannot download the capabilities file. + //registra a tentativa de acesso + if(isset($id_ws)) + { + adicionaAcesso($id_ws,false); + } $cp->set_data("Erro de acesso"); return; } + if(isset($id_ws)) + { + adicionaAcesso($id_ws,true); + } $wms_capabilities = implode("",$wms_capabilities); $dom = new DomDocument(); $dom->loadXML($wms_capabilities); diff --git a/classesphp/wscliente.php b/classesphp/wscliente.php index 2e57fa7..98c7c79 100644 --- a/classesphp/wscliente.php +++ b/classesphp/wscliente.php @@ -338,8 +338,15 @@ if ($funcao == "listaRSSws2") $cp->return_data(); exit; } +if ($funcao == "listaRSSwsARRAY") +{ + $cp->register('listaRSSwsARRAY'); + $cp->start(); + $cp->return_data(); + exit; +} /* -Function: listaRSSws2 +Function: listaRSSws2 (depreciado) Pega os links de um RSS. @@ -394,6 +401,74 @@ function listaRSSws2() $cp->set_data($retorna); } /* +Function: listaRSSwsARRAY + +Pega os links de um RSS e retorna o resultado como um array. + +cp - Objeto CPAINT. + +rss - Endereços dos RSS. + +tipo - Tipo de recurso, permite a escolha do programa PHP que será usado GEORSS|WMS|WS|DOWNLOAD +*/ +function listaRSSwsARRAY() +{ + global $cp,$rss,$locaplic,$tipo; + if(!isset($tipo)){$tipo = "GEORSS";} + include_once("$locaplic/classesphp/funcoes_gerais.php"); + include_once("$locaplic/admin/php/xml.php"); + include_once("$locaplic/ms_configura.php"); + $rsss = explode("|",$rss); + if(count($rsss) == 0){$rsss = array(" ");} + $erro = "Erro. Nao foi possivel ler o arquivo"; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $urli3geo = $protocolo[0]."://".$_SERVER['HTTP_HOST']."/".basename($locaplic); + foreach ($rsss as $r) + { + if($r == "" || $r == " ") + { + + if($tipo == "GEORSS") + { + $canali = simplexml_load_string(geraXmlGeorss($locaplic)); + $linkrss = $urli3geo."/admin/xmlgeorss.php"; + } + if($tipo == "WMS") + { + $canali = simplexml_load_string(geraXmlWMS($locaplic)); + $linkrss = $urli3geo."/admin/xmlservicoswms.php"; + } + if($tipo == "WS") + { + $canali = simplexml_load_string(geraXmlWS($locaplic)); + $linkrss = $urli3geo."/admin/xmlservicosws.php"; + } + if($tipo == "DOWNLOAD") + { + $canali = simplexml_load_string(geraXmlDownload($locaplic)); + $linkrss = $urli3geo."/admin/xmllinksdownload.php"; + } + } + else + {$canali = simplexml_load_file($rss);} + if($r != "") + $linhas["rss"] = ""; + else + { + $linhas["rss"] = ""; + } + //var_dump($canali); + $canais = array(); + foreach ($canali->channel->item as $item) + { + $canais[] = array("id_ws"=>(ixml($item,"id")),"title"=>(ixml($item,"title")),"description"=>(ixml($item,"description")),"link"=>(ixml($item,"link")),"author"=>(ixml($item,"author")),"nacessos"=>(ixml($item,"nacessos")),"nacessosok"=>(ixml($item,"nacessosok"))); + } + $linhas["canais"] = $canais; + } + $cp->set_data($linhas); +} + +/* Function: listaRSSws Pega os links de um RSS usando a biblioteca magpierss (depreciado). diff --git a/ferramentas/conectargeorss/index.htm b/ferramentas/conectargeorss/index.htm index 0e509bc..2988928 100644 --- a/ferramentas/conectargeorss/index.htm +++ b/ferramentas/conectargeorss/index.htm @@ -38,23 +38,34 @@ if (document.getElementById("RSS")) { if (g_RSS.length > 0) { - var p = "../../classesphp/wscliente.php?funcao=listaRSSws2&rss="+g_RSS.join("|")+"&tipo=GEORSS"; + var p = "../../classesphp/wscliente.php?funcao=listaRSSwsARRAY&rss="+g_RSS.join("|")+"&tipo=GEORSS"; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); - cp.call(p,"listaRSSws2",mostraRetornoRSS); + cp.call(p,"listaRSSwsARRAY",mostraRetornoRSS); } } function mostraRetornoRSS(retorno) { - aguarde("none"); - var linhas = retorno.data.split("|") - var ins = "" - for (i=0;i\"+caso[0]+"\<\/b\> "+caso[1]; - if (caso[3] != ""){ins += " ("+caso[3]+")\<\/p\>"} + alert("OOps! Ocorreu um erro\n"+retorno.data); + return; + } + var canais = retorno.data.canais + var ncanais = canais.length + var ins = "
"+retorno.data.rss + for (i=0;i\"+caso.title+"\<\/b\> "+caso.description+" ("+caso.author+")" + if(caso.nacessos > 0) + { + var pc = (parseInt(caso.nacessosok) * 100) / parseInt(caso.nacessos) + ins += " \(disponibilidade: "+pc+"%, acessos considerados: "+caso.nacessos+")\<\/span>\<\/p\>"; + } } document.getElementById("RSS").innerHTML = ins+"

" } diff --git a/ferramentas/conectargeorss/index.js b/ferramentas/conectargeorss/index.js index e889d5e..74dfa95 100644 --- a/ferramentas/conectargeorss/index.js +++ b/ferramentas/conectargeorss/index.js @@ -51,9 +51,13 @@ function clickGuia2() cp.call(p,"georssCanais",listaCanais); } } -function registraws(nome) +function registraws(nome,id_ws) { $i("servico").value = nome; + if(arguments.length == 2) + g_idws = id_ws + else + g_idws = "" clickGuia2() } function listaCanais(retorno) @@ -61,15 +65,13 @@ function listaCanais(retorno) var ins = "Clique no botão 'mapa' para incluir os dados do canal desejado
" if (retorno.data != undefined) { - var retorno = (retorno.data).split("*") + var retorno = retorno.data for (i=0;i "+descs[0]+ "

" - ins += "
"+descs[1]+"" - ins += "
Descrição: "+descs[2] - ins += "
Categoria: "+descs[3] + ins += "

 "+retorno[i].title+ "

" + ins += "
"+retorno[i].link+"" + ins += "
Descrição: "+retorno[i].description + ins += "
Categoria: "+retorno[i].category } $i("resultadoget").innerHTML = ins } diff --git a/ferramentas/conectarwms/index.htm b/ferramentas/conectarwms/index.htm index 8387eb3..5251438 100644 --- a/ferramentas/conectarwms/index.htm +++ b/ferramentas/conectarwms/index.htm @@ -63,6 +63,7 @@