encode($obj); if (!mb_detect_encoding($texto,"UTF-8",true)) $texto = utf8_encode($texto); echo $texto; } /* Function: verificaDuplicados Verifica se o resultado de um SQL retorna mais de um registro Parametros: sql {string} - sql que serÃ� executado dbh {PDO} - objeto PDO de conexÃ�o com o banco Retorno: {boolean} */ function verificaDuplicados($sql,$dbh) { $res = $dbh->query($sql,PDO::FETCH_ASSOC); if(count($res->fetchAll())>0) return true; else return false; } /* Function: exclui Exlcui um registro de uma tabela do banco de dados de administraÃ�Ã�o Utiliza variaveis globais para fazer a consulta ao banco Globals: tabela - nome da tabela coluna - nome da coluna id - valor */ //depreciar em favor de excluiRegistro function exclui($tabela,$coluna,$id){ try { include("conexao.php"); $sql = "DELETE from $tabela WHERE $coluna = ?"; $prep = $dbhw->prepare($sql); $prep->execute(array($id)); i3GeoAdminInsertLog($dbhw,$sql,array($id)); $dbhw = null; $dbh = null; return "ok"; } catch (PDOException $e) { return "Error!: "; } } //usar esse para nao haver confusao com o nome "exclui" function i3GeoAdminExclui($tabela,$coluna,$id){ try { include("conexao.php"); $sql = "DELETE from $tabela WHERE $coluna = ?"; $prep = $dbhw->prepare($sql); $prep->execute(array($id)); i3GeoAdminInsertLog($dbhw,$sql,array($id)); $dbhw = null; $dbh = null; return "ok"; } catch (PDOException $e) { return "Error!: "; } } /* Function: pegaDados Executa um sql de busca de dados Parametros: sql {string} - sql que serao executado Retorno: Array originada de fetchAll */ function pegaDados($sql,$dbh="",$close=true) { $resultado = array(); //is_string para efeitos de compatibilidade if($dbh == "" || is_string($dbh)){ include(dirname(__FILE__)."/conexao.php"); } error_reporting(0); //$dbh deve ser definido com somente leitura, mas por prevencao: $sql = str_ireplace(array("update","delete","insert","--","drop",";"),"",$sql); $q = $dbh->query($sql,PDO::FETCH_ASSOC); if($q){ $resultado = $q->fetchAll(); if($close == true){ $dbh = null; $dbhw = null; } return $resultado; } else{ if($close == true){ $dbh = null; $dbhw = null; } throw new Exception(" erro admin.php funcao pegaDados"); } } /** * Faz o update dos dados de um registro em uma tabela do sistema de administracao * * @param obj $pdo - objeto pdo * @param string $tabela - nome da tabela que sofrera o update * @param array $data - array com os nomes dos campos da tabela e os valores * @param string $filtro - filtro WHERE que sera utilizado para selecionar os registros que sofrerao o update * @return boolean */ function i3GeoAdminUpdate($pdo,$tabela,$data,$filtro=""){ global $esquemaadmin; $keys = array_keys($data); $sset = array(); foreach($keys as $k){ $sset[] = $k."=?"; } $sql = "UPDATE ".$esquemaadmin."$tabela SET ".implode($sset,",")." ".$filtro; $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); try { $prep = $pdo->prepare($sql); } catch (PDOException $e) { return "Error!: "; } try { $exec = $prep->execute(array_values($data)); i3GeoAdminInsertLog($pdo,$sql,array_values($data)); return true; } catch (PDOException $e) { //echo $e->getMessage( ); return "Error!: "; } } /** * Faz o insert de um novo registro em uma tabela do sistema de administracao * * @param obj $pdo - objeto pdo * @param string $tabela - nome da tabela que sofreara o insert * @param array $data - array com os nomes dos campos da tabela e os valores * @return boolean */ function i3GeoAdminInsert($pdo,$tabela,$data){ global $esquemaadmin; $keys = array_keys($data); $fields = implode(",",$keys); $placeholder = str_repeat("?,",count($keys)); $placeholder = trim($placeholder,","); $sql = "INSERT INTO ".$esquemaadmin."$tabela($fields) VALUES ($placeholder)"; $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); try { $prep = $pdo->prepare($sql); } catch (PDOException $e) { return "prepare "; } try { $exec = $prep->execute(array_values($data)); //atualiza o log i3GeoAdminInsertLog($pdo,$sql,array_values($data)); return true; } catch (PDOException $e) { return "execute "; } } /** * Faz o insert de um registro e retorna o ID unico criado * * @param obj $pdo - objeto pdo * @param string $tabela - nome da tabela que sofreara o insert * @param array $data - array com os nomes dos campos da tabela e os valores * @param string $colTemp - coluna do tipo text que recebera um valor temporario para poder recuperar o registro inserido * @param string $colId - coluna com id unico, cujo calculo e automatico * @return string */ function i3GeoAdminInsertUnico($pdo,$tabela,$data,$colTemp,$colId){ global $esquemaadmin; $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $idtemp = (rand (9000,10000)) * -1; $data[$colTemp] = $idtemp; $q = i3GeoAdminInsert( $pdo, $tabela, $data ); if($q !== true){ echo "Error! insert "; exit; } try { $id = $pdo->query("SELECT $colId FROM ".$esquemaadmin."$tabela WHERE $colTemp = '$idtemp'"); } catch (PDOException $e) { return "SELECT ID "; } try { $id = $id->fetchAll(); $id = $id[0][$colId]; $sql = "UPDATE ".$esquemaadmin."$tabela SET $colTemp = '' WHERE $colId = $id AND $colTemp = '$idtemp'"; $pdo->query($sql); i3GeoAdminInsertLog($pdo,$sql); return $id; } catch (PDOException $e) { return "UPDATE ID "; } } function i3GeoAdminOrdena($pdo,$ordem,$tabela,$colunaid){ global $esquemaadmin; $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $arr = array(); $n = count($ordem) + 1; for($i = 1; $i < $n; $i++){ $arr[$ordem[$i - 1]] = $i; } $str_ids = implode(',', array_keys($arr)); $str_when_then = ""; foreach($arr as $id => $ordem) { $str_when_then .= sprintf(" WHEN " . $colunaid . " = %d THEN %s ", $id, $ordem // note, you'd sanitize this if from user input ); } //whitespace + appends included in example for readability $template = "UPDATE '".$esquemaadmin . $tabela."' " . " SET 'ordem' = CASE " . " %s " . " END " . " WHERE " . $colunaid . " IN (%s);"; $sql = sprintf($template, $str_when_then, $str_ids); try { $resultado = $pdo->query($sql); } catch (PDOException $e) { return false; } i3GeoAdminInsertLog($pdo,$sql,array()); return true; } //$logTransacoes vem do ms_configura.php //ver tambem classe_metaestat.php function i3GeoAdminInsertLog($pdo,$sql,$data=array()){ global $esquemaadmin, $logTransacoes; if($logTransacoes == "" || $logTransacoes !== true){ return; } $s = "INSERT INTO ".$esquemaadmin."i3geoadmin_log(sql,serializedata,usuario,ip,timestamp,outros) VALUES (?,?,?,?,?,?)"; $ip = "UNKNOWN"; if (getenv("HTTP_CLIENT_IP")){ $ip = getenv("HTTP_CLIENT_IP"); } else if(getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); } else if(getenv("REMOTE_ADDR")) { $ip = getenv("REMOTE_ADDR"); } try { $prep = $pdo->prepare($s); $exec = $prep->execute( array( $sql, serialize($data), $_SESSION["usuario"], $ip, time()."(".date('r').")", "" ) ); return true; } catch (PDOException $e) { echo "insert log";exit; } } /* Function: verificaFilhos Verifica se o pai tem filhos nos componentes hierÃ�rquicos do banco de administraÃ�Ã�o Por exemplo, pode-se verificar se um grupo possuÃ� subgrupos, indicando-se como tabela i3geoadmin_grupos e o id do grupo Variaveis globais: tabela {string} - tabela do banco de dados id {string} - valor a ser procurado Retorno: {booleano} */ function verificaFilhos() { global $tabela,$id,$esquemaadmin; try { $res = false; if($tabela == "i3geoestat_mapa_grupo") { $grupo = pegaDados("select * from ".$esquemaadmin."i3geoestat_mapa_tema where id_mapa_grupo=$id"); if(count($grupo) > 0) $res = true; } if($tabela == "i3geoestat_mapa") { $grupo = pegaDados("select * from ".$esquemaadmin."i3geoestat_mapa_grupo where id_mapa=$id"); if(count($grupo) > 0) $res = true; } if($tabela == "i3geoestat_classificacao") { $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_classes where id_classificacao=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geoestat_conexao") { $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_medida_variavel where codigo_estat_conexao=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geoestat_tipo_periodo") { $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_medida_variavel where codigo_tipo_periodo=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geoestat_unidade_medida") { $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_medida_variavel where codigo_unidade_medida=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geoestat_fonteinfo") { $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_fonteinfo_medida where id_fonteinfo=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geoestat_variavel") { $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_medida_variavel where codigo_variavel=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geoestat_medida_variavel") { $link = pegaDados("select * from ".$esquemaadmin."i3geoestat_medida_variavel_link where id_medida_variavel=$id"); $parametro = pegaDados("select * from ".$esquemaadmin."i3geoestat_parametro_medida where id_medida_variavel=$id"); $fonte = pegaDados("select * from ".$esquemaadmin."i3geoestat_fonteinfo_medida where id_medida_variavel=$id"); if(count($link) > 0 || count($parametro) > 0 || count($fonte) > 0) $res = true; } if($tabela == "i3geoadmin_n2") { $r = pegaDados("select * from ".$esquemaadmin."i3geoadmin_n3 where id_n2=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geousr_grupos") { $r = pegaDados("select * from ".$esquemaadmin."i3geousr_gruposusuario where id_grupo=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geousr_usuarios") { $r = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario where id_usuario=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_n1") { $r = pegaDados("select * from ".$esquemaadmin."i3geoadmin_n2 where id_n1=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_menus") { $r = pegaDados("select * from ".$esquemaadmin."i3geoadmin_n1 where id_menu=$id"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_grupos") { $r = pegaDados("select n1.id_grupo from ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_n2 as n2 where n1.id_n1 = n2.id_n1 and n1.id_grupo = '$id'"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_subgrupos") { $r = pegaDados("select n2.id_subgrupo from ".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2 where n2.id_n2 = n3.id_n3 and n2.id_subgrupo = '$id'"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_temas") { $r = pegaDados("select id_tema from ".$esquemaadmin."i3geoadmin_n3 where id_tema = '$id'"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_sistemas") { $r = pegaDados("SELECT id_sistema from ".$esquemaadmin."i3geoadmin_sistemasf where id_sistema ='$id'"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_atlas") { $r = pegaDados("SELECT id_atlas from ".$esquemaadmin."i3geoadmin_atlasp where id_atlas ='$id'"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_atlasp") { $r = pegaDados("SELECT id_prancha from ".$esquemaadmin."i3geoadmin_atlast where id_prancha ='$id'"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_n2") { $r = pegaDados("SELECT id_n3 from ".$esquemaadmin."i3geoadmin_n3 where id_n2 ='$id'"); if(count($r) > 0) $res = true; } if($tabela == "i3geoadmin_n1") { $r = pegaDados("SELECT id_n2 from ".$esquemaadmin."i3geoadmin_n2 where id_n1 ='$id'"); if(count($r) > 0) $res = true; $r = pegaDados("SELECT id_raiz from ".$esquemaadmin."i3geoadmin_raiz where nivel='1' and id_nivel ='$id'"); if(count($r) > 0) $res = true; } if($tabela == "mapfiles") { $r = pegaDados("SELECT id_tema from ".$esquemaadmin."i3geoadmin_n3 where id_tema ='$id'"); if(count($r) > 0) $res = true; } return $res; } catch (PDOException $e) { return "Error!: "; } } /* Function: resolveAcentos Converte uma string para uma codificaÃ�Ã�o de caracteres determinada Parametros: palavra {string} - palavra a ser convertida tipo {string} - ISO|UTF Retorno: {string} */ function resolveAcentos($palavra,$tipo) { if($tipo == "ISO") { $palavra = mb_convert_encoding($palavra,"AUTO","ISO-8859-1"); } if($tipo == "UTF") { $palavra = mb_convert_encoding($palavra,"AUTO","UTF-8"); } if($tipo == "html") $palavra = htmlentities($palavra); if($tipo == "palno") $palavra = urldecode($palavra); return $palavra; } /* Function: formularioLoginMaster Mostra formulário para login quando é necessário o uso da variável $i3geomaster cadastrada em ms_configura.php Parametros: action {string} - php que será executado no submit do formulário */ function formularioLoginMaster($action){ echo "