"metaestat", "bancodedados" => $con["dbname"], "host" => $con["host"], "porta" => $con["port"], "usuario" => $con["user"], "senha" => $con["password"], "fonte" => "ms_configura" ); return $c; } else { return false; } } // // verifica se um determinado papel esta registrado na variavel SESSION // function verificaPapelSessao($id_papel) { $resultado = false; if (\admin\php\funcoesAdmin\validaSessao ()) { foreach ( $_SESSION ["papeis"] as $p ) { if ($p ["id_papel"] == 1 || $p ["id_papel"] == $id_papel) { return true; } } } return $resultado; } // // verifica se o usuario esta logado // function validaSessao() { if ($_SESSION ["usuario"] != $_COOKIE ["i3geousuariologin"]) { return false; } return true; } function testaSafeNumerico($valores) { foreach ( $valores as $valor ) { if (! empty ( $valor ) && ! is_numeric ( $valor )) { ob_clean (); header ( "HTTP/1.1 403 valor nao numerico" ); exit (); } } } function verificaOperacaoSessao($operacao) { $resultado = false; // a validacao consulta $_SESSION, que e definida no login if (\admin\php\funcoesAdmin\validaSessao ()) { // verifica se e administrador, caso positivo, permite qq operacao foreach ( $_SESSION ["papeis"] as $p ) { if ($p == 1) { return true; } } if (! empty ( $_SESSION ["operacoes"] [$operacao] )) { $resultado = true; } } return $resultado; } /* * Testa se os elementos de um array sao numericos * Utilizado para evitar injecao de SQL */ function testaNumerico($valores){ foreach ($valores as $valor) { if(!empty($valor) && !is_numeric($valor)) { ob_clean(); header ( "HTTP/1.1 403 valor nao numerico" ); exit; } } } /* Function: \admin\php\funcoesAdmin\retornaJSON Converte um array em um objeto do tipo JSON utilizando a biblioteca CPAINT Parametro: obj {array} Retorno: Imprime na saida a string JSON */ function retornaJSON($obj) { $locaplic = $_SESSION["locaplic"]; include_once($locaplic."/pacotes/cpaint/JSON/json2.php"); //error_reporting (E_ALL); ob_end_clean(); $j = new Services_JSON(); $texto = $j->encode($obj); if (!mb_detect_encoding($texto,"UTF-8",true)){ $texto = utf8_encode($texto); } echo $texto; } /* Function: \admin\php\funcoesAdmin\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)); \admin\php\funcoesAdmin\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,$dbhw="",$close=true){ try { if($dbh == "" || is_string($dbh)){ include(dirname(__FILE__)."/conexao.php"); } $sql = "DELETE from $tabela WHERE $coluna = ?"; $prep = $dbhw->prepare($sql); $prep->execute(array($id)); \admin\php\funcoesAdmin\i3GeoAdminInsertLog($dbhw,$sql,array($id)); if($close == true){ $dbh = null; $dbhw = null; } return "ok"; } catch (PDOException $e) { return "Error!: "; } } /* Function: \admin\php\funcoesAdmin\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) { //error_reporting (E_ALL); $resultado = array(); //is_string para efeitos de compatibilidade if($dbh == "" || is_string($dbh)){ include(dirname(__FILE__)."/conexao.php"); } //$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 \admin\php\funcoesAdmin\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=""){ $esquemaadmin = $_SESSION["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)); \admin\php\funcoesAdmin\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){ $esquemaadmin = $_SESSION["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 \admin\php\funcoesAdmin\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){ $esquemaadmin = $_SESSION["esquemaadmin"]; $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $idtemp = (rand (9000,10000)) * -1; $data[$colTemp] = $idtemp; $q = \admin\php\funcoesAdmin\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); \admin\php\funcoesAdmin\i3GeoAdminInsertLog($pdo,$sql); return $id; } catch (PDOException $e) { return "UPDATE ID "; } } // //o array $ordem contem a lista de ids na ordem desejada // function i3GeoAdminOrdena($pdo,$ordem,$tabela,$colunaid){ $esquemaadmin = $_SESSION["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; } \admin\php\funcoesAdmin\i3GeoAdminInsertLog($pdo,$sql,array()); return true; } //$logTransacoes vem do ms_configura.php function i3GeoAdminInsertLog($pdo,$sql,$data=array()){ $logTransacoes = $_SESSION["logTransacoes"]; $esquemaadmin = $_SESSION["esquemaadmin"]; 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: \admin\php\funcoesAdmin\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: \admin\php\funcoesAdmin\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 "