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 @@