register('getcapabilities');
$cp->start();
$cp->return_data();
exit;
}
/*
Function: getcapabilities
Retorna a resposta da função getcapabilities de um serviço WMS.
Globais:
$cp {CPAINT} - Objeto CPAINT.
$onlineresource {string} - Endereço do serviço.
$tipo {string} - Tipo do serviço WMS|WFS.
Retorno:
{JSON} - Objeto JSON com as marcações do XML resultante convertidas para HTML
*/
function getcapabilities()
{
global $cp,$onlineresource,$tipo;
$teste = explode("=",$onlineresource);
if ( count($teste) > 1 ){$onlineresource = $onlineresource."&";}
# -------------------------------------------------------------
# Test that there is a wms service defined before proceding.
#
if ( ! $onlineresource ) {
# No WMS service provided.
wms_fatal("No 'onlineresource' defined.");
}
$wms_service_request = $onlineresource . "REQUEST=GetCapabilities&SERVICE=".$tipo;
# -------------------------------------------------------------
# Test that the capabilites file has successfully downloaded.
#
if( !($wms_capabilities = file($wms_service_request)) ) {
# Cannot download the capabilities file.
wms_fatal("Não foi possível ler o retorno do serviço '$wms_service_request'.");
}
$wms_capabilities = implode("",$wms_capabilities);
# -------------------------------------------------------------
# Test that the capabilites file has successfully parsed.
#
$dom = new DomDocument();
$dom->loadXML($wms_capabilities);
$cp->set_data(xml2html($wms_capabilities));
}
//le links de RSS para ws
if ($funcao == "listaRSSws")
{
$cp->register('listaRSSws');
$cp->start();
ob_clean();
$cp->return_data();
exit;
}
if ($funcao == "listaRSSwsARRAY")
{
$tipos = explode(",",$tipo);
if(count($tipos) > 1){
$r = array();
foreach($tipos as $tipo){
$d = listaRSSwsARRAY();
$r = array_merge($r,$d["canais"]);
}
ob_clean();
header('Content-Type: application/json');
echo json_encode(["data"=>$r]);
} else {
//para efeitos de compatibilidade
ob_clean();
header('Content-Type: application/json');
echo json_encode(["data"=>listaRSSwsARRAY()]);
}
exit;
}
/*
Function: listaRSSwsARRAY
Pega os links de um RSS e retorna o resultado como um array.
Globais:
$cp {CPAINT} - Objeto CPAINT.
$rss {string} - Endereços dos RSS.
$tipo {string} - Tipo de recurso, permite a escolha do programa PHP que será usado GEORSS|WMS|WS|DOWNLOAD|WMSMETAESTAT
Retorno:
{JSON}
*/
function listaRSSwsARRAY()
{
global $cp,$rss,$locaplic,$tipo,$esquemaadmin;
if(!isset($tipo)){$tipo = "GEORSS";}
include_once("$locaplic/classesphp/funcoes_gerais.php");
include_once("$locaplic/classesphp/xml.php");
include("$locaplic/ms_configura.php");
if($esquemaadmin != ""){
$esquemaadmin = $esquemaadmin.".";
}
$rsss = explode("|",$rss);
if(count($rsss) == 0){
$rsss = array(" ");
}
$erro = "Erro. Nao foi possivel ler o arquivo";
$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
$urli3geo = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".basename($locaplic);
foreach ($rsss as $r){
if($r == "" || $r == " "){
if($tipo == "KML"){
$canali = simplexml_load_string(geraXmlKmlrss($locaplic));
$linkrss = $urli3geo."/rss/xmlkml.php";
}
if($tipo == "GEORSS"){
$canali = simplexml_load_string(geraXmlGeorss($locaplic));
$linkrss = $urli3geo."/rss/xmlgeorss.php";
}
if($tipo == "GEOJSON"){
$canali = simplexml_load_string(geraXmlGeojson($locaplic));
$linkrss = $urli3geo."/rss/xmlgeorss.php";
}
if($tipo == "WMS" || $tipo == "WMS-Tile" || $tipo == "WMS-Time"){
$canali = simplexml_load_string(geraXmlWMS($locaplic));
$linkrss = $urli3geo."/rss/xmlservicoswms.php";
}
if($tipo == "WMSMETAESTAT") {
$canali = simplexml_load_string(geraXmlWMSmetaestat($locaplic));
$linkrss = $urli3geo."/rss/xmlservicoswms.php";
}
if($tipo == "WS"){
$canali = simplexml_load_string(geraXmlWS($locaplic));
$linkrss = $urli3geo."/rss/xmlservicosws.php";
}
if($tipo == "ARCGISREST"){
$canali = simplexml_load_string(geraXmlARCGISREST($locaplic));
$linkrss = "";
}
} else {
$canali = simplexml_load_file($rss);
}
if($r != "")
$linhas["rss"] = "
";
else{
$linhas["rss"] = "
";
}
//var_dump($canali);
$canais = array();
foreach ($canali->channel->item as $item){
$urlservice = ixml($item,"link");
$title = ixml($item,"title");
$canais[] = array("id_ws"=>(ixml($item,"id")),"title"=>$title,"description"=>(ixml($item,"description")),"link"=>$urlservice,"author"=>(ixml($item,"author")),"nacessos"=>(ixml($item,"nacessos")),"nacessosok"=>(ixml($item,"nacessosok")),"tipo_ws"=>(ixml($item,"tipo")));
}
$linhas["canais"] = $canais;
}
//$cp->set_data($linhas);
return $linhas;
}
/*
Function: listaRSSws
Pega os links de um RSS usando a biblioteca magpierss (depreciado).
Globais:
$cp {CPAINT} - Objeto CPAINT.
$rss {string} - Endereços dos RSS.
Retorno:
{JSON}
*/
function listaRSSws()
{
global $cp,$rss;
require(dirname(__FILE__).'/../pacotes/magpierss/rss_fetch.inc');
$rsss = explode("|",$rss);
$erro = "Erro. Nao foi possivel ler o arquivo";
foreach ($rsss as $r)
{
$rss = fetch_rss($r);
if ($rss)
{
$erro = "";
$linhas[] = "
####";
foreach ( $rss->items as $item )
{
$linha[] = $item['title'];
$linha[] = $item['description'];
$linha[] = $item['link'];
$linha[] = $item['author'];
$linha[] = $item['ranking'];
$linha[] = $item['tempo'];
$linhas[] = implode("#",$linha);
$linha = array();
}
}
}
if ($erro == "")
{
$retorna = implode("|",$linhas);
$retorna = str_replace("\n","",$retorna);
if (function_exists("mb_convert_encoding"))
{$retorna = mb_convert_encoding($retorna,"UTF-8","ISO-88591");}
else
{$retorna = $retorna;}
}
else {$retorna = $erro;}
$cp->set_data($retorna);
}
?>