dir_tmp = $dir_tmp; $this->locaplic = $locaplic; $this->base = $base; $this->esquemaadmin = ""; if(!empty($esquemaadmin)){ $this->esquemaadmin = str_replace(".","",$esquemaadmin)."."; } if(!isset($i3geoEsquemasWL) || !is_array($i3geoEsquemasWL)){ $this->i3geoEsquemasWL = array(); } else { $this->i3geoEsquemasWL = $i3geoEsquemasWL; } if(!isset($i3geoUploadDataWL) || !is_array($i3geoUploadDataWL)){ $this->i3geoEsquemasUpload = array(); } else { $this->i3geoEsquemasUpload = $i3geoUploadDataWL["postgis"]["esquemas"]; } //se a conexao nao vier como parametro, cria uma nova if(is_array($dbh)){ $this->dbh = $this->conecta($dbh); } else { $this->dbh = $dbh; } } function __destruct(){ $this->fechaConexao(); } function conecta($c){ $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]); return $dbh; } /** * Fecha a conexao com o banco de dados de administracao */ function fechaConexao(){ $this->dbh = null; } function listaDeEsquemas(){ return $this->i3geoEsquemasWL; } function listaDeEsquemasUpload(){ return $this->i3geoEsquemasUpload; } function validaEsquemas($listaDeEsquemas,$lista = ""){ if($lista == ""){ $lista = $this->i3geoEsquemasWL; } $novaLista = array(); foreach($listaDeEsquemas as $e){ if(in_array($e,$lista)){ $novaLista[] = $e; } } return $novaLista; } function validaEsquema($esquema,$lista=""){ $lista = $this->validaEsquemas(array($esquema),$lista); if(count($lista) == 0){ return false; } else { return true; } } function listaDeTabelas($esquema){ $tabelas = array(); if($this->validaEsquema($esquema) == true){ $sql = "SELECT table_name as tabela FROM information_schema.tables where table_schema = '$esquema' AND table_schema NOT LIKE 'i3geo%' AND table_schema NOT LIKE 'pg_%' AND table_schema NOT LIKE '%_schema%'"; $res = $this->execSQL($sql); foreach($res as $r){ $tabelas[] = $r["tabela"]; } } return $tabelas; } function listaDeTabelasUpload($esquema){ $tabelas = array(); if($this->validaEsquema($esquema,$this->i3geoEsquemasUpload) == true){ $sql = "SELECT table_name as tabela FROM information_schema.tables where table_schema = '$esquema' AND table_schema NOT LIKE 'i3geo%' AND table_schema NOT LIKE 'pg_%' AND table_schema NOT LIKE '%_schema%'"; $res = $this->execSQL($sql); foreach($res as $r){ $tabelas[] = $r["tabela"]; } } return $tabelas; } function listaDeColunas($esquema,$tabela){ $colunas = array(); if($this->validaEsquema($esquema) == true){ $sql = "SELECT column_name as coluna,udt_name FROM information_schema.columns where table_schema = '$esquema' and table_name = '$tabela'"; $res = $this->execSQL($sql); foreach($res as $r){ $colunas[] = $r["coluna"]; } } return $colunas; } function execSQL($sql){ $sql = str_ireplace(array("update","delete","insert","--","drop",";"),"",$sql); try { $q = $this->dbh->query($sql,PDO::FETCH_ASSOC); $q = $q->fetchAll(); return $q; } catch (PDOException $e) { return "Error!: "; } } } ?>