<?php
#
# Projeto :  Lucato 
# Data : 30/01/2004
# 
# Arquivo com funções comuns
#

	//*******************************************************************
	// Setar formato da data! Caso precise da hora antes do new QUERY forçar outra formatação 
	//*******************************************************************
	if ( function_exists("ibase_timefmt") ){
			ibase_timefmt("%d/%m/%Y", IBASE_TIMESTAMP);
	} else {
		ini_set("ibase.dateformat" ,"%d/%m/%Y");
		ini_set("ibase.timestampformat" ,"%d/%m/%Y");
	}

//variavel global para debug
$debug_report  = true;

// Classe para tratamento de conexão.
class DATABASE {
      // propriedades
      var $ID;
      // constructor
      function DATABASE() {
               global $ib_server;
               global $ib_databasename;
               global $ib_user;
               global $ib_pass;
               $this->ID = @ibase_connect($ib_server . ":" . $ib_databasename, $ib_user, $ib_pass);
               if (!$this->ID) {
                   //não conectou
                   //kalefe begin
                   echo "<html><body>Não foi possível conectar ao servidor de banco de dados.<br>";
				   echo $query ."<br>";
				   echo @ibase_errcode() . ": " . @ibase_errmsg () ;
				   echo "</body></html>";

                   exit;
               }
               return ($this->ID) ;
      }

      function CLOSE() {
              $close = @ibase_close($this->ID);
               if (!$close) {
                   //não fechou
                   //kalefe begin
                   echo "<html><body>Não foi possível desconetar ao banco de dados.<br>";
				   echo $query ."<br>";
				   echo @ibase_errcode() . ": " . @ibase_errmsg () ;
				   echo "</body></html>";

                   exit;
               }
               return $close;
      }
}

class QUERY {
      // propriedades
      var $DATABASE;
      var $DATASET = null;
      var $FIELDS;
	  var $FIELDCOUNT;
	  var $SQL;
      // constructor
      function QUERY( &$pdatabase, $sql = null, $params = array()) {
				
               // caso não tenha instanciado o Database aqui ele faz automaticamente
               if( isset($pdatabase)){
                   $this->DATABASE = $pdatabase;
               } else {
                   $pdatabase = new DATABASE();
                   $this->DATABASE = $pdatabase;
               }

               if( isset($sql) ){
				   $this->EXECUTE( $sql, $params );
               }
      }

      function FREE(){
               @ibase_free_result($this->DATASET);
               $this->DATASET = null;
      }
	  
      function EXECUTE( $sql, $params = array() ) {
				
    		   global $debug_report;
			   global $ib_server;
			   global $ib_databasename;
				   
	 		   $params_str = "";	
			   foreach( $params as $k => $val ) $params_str .= ', $params['. $k .']';
			   
               eval ( "\$this->DATASET = @ibase_query( \$this->DATABASE->ID, \$sql $params_str);" );
			   
               if (!$this->DATASET) {
				  if ( $debug_report ) { $query = "sql: $sql"; } else { $query = ""; }
                   echo "<html><body>Não foi possível executar a query.<br>";
				   echo $query ."<br>";
				   echo "Erro:" . ibase_errmsg () ;
				   echo "</body></html>";
                   exit;
               } else {
			   		$this->SQL = $sql;
					
			   		$this->FIELDCOUNT = @ibase_num_fields($this->DATASET);
			   }
               return $this->DATASET;
      }
	  
      function NEXT() {
               $this->FIELDS = @ibase_fetch_object($this->DATASET, IBASE_TEXT);
               return $this->FIELDS;
      }
	  
	  function BYINDEX ( $index) {
	  	     return $this->BYNAME( $this->FIELDNAME( $index ) );
	  }

	  function BYNAME ( $name ) {
	  		   return $this->FIELDS->{$name};
	  }
	  
	  function FIELDNAME( $index ){
	  			$col_info = @ibase_field_info($this->DATASET, $index); 
				return $col_info["name"];  
	  }
	  
	  function FIELDINFO( $index ){
	  			$col_info = @ibase_field_info($this->DATASET, $index); 
				return $col_info;  
	  }

	  function NUM_ROWS(){
					$result = 0;
					$pos_sel = strpos( "T" . strtoupper($this->SQL) , "SELECT");
					$pos_from = strpos( "T" . strtoupper($this->SQL) , "FROM" );
					if( ( $pos_sel > 0 ) && ($pos_from > 0) ) {
							$sqlnew = "select count(*) as NUM_ROWS " . substr( $this->SQL, $pos_from -1);
							$pos_order = strpos( strtoupper($sqlnew) , "ORDER BY" );
							if( $pos_order > 0 )
								$sqlnew = substr( $sqlnew, 0, $pos_order);

							
							$ds_temp = @ibase_query( $this->DATABASE->ID, $sqlnew);
							if( $ds_temp ){
									$rs_temp = @ibase_fetch_object($ds_temp);
									if ( $rs_temp ) {
											$result = $rs_temp->NUM_ROWS;
									}
									@ibase_free_result( $ds_temp );
							}
					}
					return $result; 
	  }
}
?>
