linea21-core
[ class tree: linea21-core ] [ index: linea21-core ] [ all elements ]

Source for file class.pgsql.php

Documentation is available at class.pgsql.php

  1. <?php
  2. /**
  3.  * @package linea21.core
  4.  * @subpackage system
  5.  * @author linea21 <info@linea21.com>
  6.  * @version $id SVN
  7.  * @access public
  8.  * @license http://opensource.org/licenses/gpl-3.0.html
  9.  *  pgSQL data manipulation
  10.  */
  11.  
  12. class pgsql {
  13.   /*
  14.    * @parameters
  15.    */
  16.   var $DB_HOST = DB_HOST;
  17.   var $DB_USER = DB_USER;
  18.   var $DB_PASS = DB_PASS;
  19.   var $DB_NAME = DB_NAME;
  20.   var $DB_LINK = "";
  21.   var $DB_ADMINMAIL = DB_ADMINMAIL;
  22.   var $RESULT;
  23.  
  24.   /**
  25.    * pgsql::DBInitialise()
  26.    * Initialisation de la connexion
  27.    *
  28.    * @access public
  29.    * @param string $user : utilisateur base de données
  30.    * @param string $pass : password utilisateur base de données
  31.    * @param string $serveur : serveur de base de données
  32.    * @param string $bdd : nom de la base de données
  33.    * @return boolean 
  34.    */
  35.  
  36.   function DBInitialise($user ''$pass ''$serveur ''$bdd '')
  37.   {
  38.     if ($user != ''{
  39.       $this->DB_USER = $user;
  40.     }
  41.     if ($pass != ''{
  42.       $this->DB_PASS = $pass;
  43.     }
  44.     if ($serveur != ''{
  45.       $this->DB_HOST = $serveur;
  46.     }
  47.     if ($bdd != ''{
  48.       $this->DB_NAME = $bdd;
  49.     }
  50.     return true;
  51.   }
  52.  
  53.   /**
  54.    * pgsql::DBConnexion()
  55.    * connexion Base de données
  56.    *
  57.    * @access public
  58.    * @param none 
  59.    * @return boolean 
  60.    */
  61.  
  62.   function DBConnexion()
  63.   {
  64.     $this->DB_LINK = @pg_connect('host=' .$this->DB_HOST' port=5432 dbname=' $this->DB_NAME . ' user=' $this->DB_USER' password='  $this->DB_PASS)
  65.     or die($this->DBError(_t('divers','db_connect_failed')));
  66.  
  67.     return true;
  68.   }
  69.  
  70.   /**
  71.    * pgsql::DBError()
  72.    * Gestion des erreurs MySQL
  73.    *
  74.    * @access private
  75.    * @param string $message_err : message retourné par la requête
  76.    * @param string $requete : requête provoquant l'erreur
  77.    * @return boolean 
  78.    */
  79.   function DBError($message_err$requete = -1)
  80.   {
  81.     //pg_set_error_verbosity($this->DB_LINK, PGSQL_ERRORS_VERBOSE);
  82.     $res1 pg_get_result($this->DB_LINK);
  83.  
  84.     $erreur $message_err "<br />[<em> PostgreSQL error (pg_result_error): " @pg_result_error($res1)"<br />";
  85.     $erreur.= "(pg_last_error): " @pg_last_error("</em> ]<br />\n";
  86.     if ($requete != -1{
  87.       $this->_logDbError($requete);
  88.       $erreur .= "$requete<br />\n";
  89.     }
  90.     $date date("[D d/M/y H:i:s]<br />\n");
  91.     $erreur .= $date;
  92.     $erreur .= "running script :" $_SERVER["SCRIPT_NAME"getHttpParameters("<br />";
  93.     if(defined('MOD_DEBUG'&& MOD_DEBUG == true{
  94.       echo $erreur;
  95.     }
  96.     if ($this->DB_ADMINMAIL != -1@error_log ($erreur1$this->DB_ADMINMAIL);
  97.   }
  98.  
  99.   /**
  100.    * pgsql::DBInsert()
  101.    * Insertion de données dans la BDD
  102.    *
  103.    * @access public
  104.    * @param string $requete : requête SQL
  105.    * @param string $returnid : Si $returnid==1 ==> renvoie last_id()
  106.    * @return integer || boolean : $result last_id()
  107.    */
  108.  
  109.   function DBInsert ($requete$returnid = -1)
  110.   {
  111.     if (!($this->RESULT = $this->DBQuery($requete))) return false;
  112.  
  113.     // Si returnid=1 on renvoie l'id de l'enregistrement
  114.     // A utiliser uniquement si attribut auto_increment
  115.  
  116.     if ($returnid == 1return $this->_DBgetInsertId($requete);
  117.  
  118.     return true;
  119.      
  120.   }
  121.  
  122.   /**
  123.    * pgsql::DBescape()
  124.    * Echappement  des variables
  125.    *
  126.    * @access public
  127.    * @param string $array : données
  128.    * @return array : $array
  129.    */
  130.  
  131.   function DBescape ($array)
  132.   {
  133.  
  134.     $final_array array();
  135.  
  136.     foreach ($array as $key => $value{
  137.       if(is_string($value)) {
  138.         if (get_magic_quotes_gpc()) $value=stripslashes($value);
  139.         $final_array[$keymysql_real_escape_string($value);
  140.       else {
  141.         $final_array[$key=  $value;
  142.       }
  143.     }
  144.     return $final_array;
  145.      
  146.   }
  147.  
  148.   /**
  149.    * pgsql::_DBgetInsertId()
  150.    * Insertion de données dans la BDD
  151.    *
  152.    * @access private
  153.    * @param string $requete : requête SQL
  154.    * @return integer 
  155.    */
  156.  
  157.   function _DBgetInsertId ($requete)
  158.   {
  159.     $array explode(" "$requete);
  160.     $tablename $array[2];
  161.  
  162.     if (!($res $this->DBQuery("SELECT * FROM " $tablename " LIMIT 1;"))) return false;
  163.  
  164.     $id_name pg_field_name $res0);
  165.     $seq $tablename'_' $id_name '_seq';
  166.  
  167.     $res $this->DBSelect("SELECT currval('" $seq "');");
  168.  
  169.     return $res[0]['currval'];
  170.      
  171.   }
  172.  
  173.  
  174.   /**
  175.    * pgsql::DBQuery()
  176.    * effectue une requête en tous genres -UPDATE - DELETE - SELECT
  177.    *
  178.    * @access public
  179.    * @param string $requete : requête SQL
  180.    * @return boolean : $result
  181.    */
  182.   function DBQuery ($requete)
  183.   {
  184.     if(defined('MOD_DEBUG'&& MOD_DEBUG == true{
  185.       $this->_logDbQuery($requete);
  186.     }
  187.     $this->RESULT = pg_query($this->DB_LINK$requeteor die($this->DbError(_t('divers','sql_query_failed')$requete));
  188.  
  189.     return $this->RESULT;
  190.   }
  191.  
  192.   /**
  193.    * pgsql::DBSelect()
  194.    * Requêtes - SELECT
  195.    *
  196.    * @access public
  197.    * @param string $requete : requête SQL
  198.    * @param string $fetch : renvoie des données, valeur ASSOC (default), ARRAY, OBJECT
  199.    * @return array : $result
  200.    */
  201.  
  202.   function DBSelect ($requete$fetch 'ASSOC')
  203.   {
  204.     if(defined('MOD_DEBUG'&& MOD_DEBUG == true{
  205.       $this->_logDbQuery($requete);
  206.     }
  207.     if (!($this->RESULT = $this->DBQuery($requete))) {
  208.       @pg_free_result($this->RESULT);
  209.       return false;
  210.     }
  211.     if ($fetch == 'ARRAY'{
  212.       $i 0;
  213.       while ($data @pg_fetch_array($this->RESULT)) {
  214.         $table[$i$data;
  215.         $i++;
  216.       }
  217.     }
  218.     if ($fetch == 'OBJECT'{
  219.       $i 0;
  220.       while ($data @pg_fetch_object($this->RESULT)) {
  221.         $table[$i$data;
  222.         $i++;
  223.       }
  224.     }
  225.     if ($fetch == 'ASSOC'{
  226.       $i 0;
  227.       while ($data @pg_fetch_assoc($this->RESULT)) {
  228.         $table[$i$data;
  229.         $i++;
  230.       }
  231.     }
  232.  
  233.     if (!isset($table)) $table 0;
  234.     return $table;
  235.   }
  236.  
  237.   /**
  238.    * pgsql::DBaffectedRow()
  239.    * Retourne le nombre d'enregistrements affecté par la dernière requête
  240.    *
  241.    * @access public
  242.    * @return integer : $res
  243.    */
  244.   function DBaffectedRow()
  245.   {
  246.     $res pg_affected_rows($this->RESULT);
  247.     return $res;
  248.   }
  249.  
  250.   /**
  251.    * _logDbQuery()
  252.    * @access private
  253.    * @param string $q 
  254.    * @return void 
  255.    */
  256.   function _logDbQuery($q)
  257.   {
  258.     $sep '##';
  259.     $fp @fopen(LOG_SQL_QUERIES'a');
  260.     @fwrite($fp$q $sep);
  261.     @fwrite($fpdate('[d-m-y H:i:s]' $sep))// date
  262.     @fwrite($fpget_class($sep);
  263.     @fwrite($fpEND_LINE);
  264.     @fclose($fp);
  265.   }
  266.  
  267.   /**
  268.    * _logDbError()
  269.    * @access private
  270.    * @param string $q 
  271.    * @return void 
  272.    */
  273.   function _logDbError($q)
  274.   {
  275.     $sep '##';
  276.     $fp @fopen(LOG_SQL_ERRORS'a');
  277.     @fwrite($fp$q $sep);
  278.     @fwrite($fpdate('[d-m-y H:i:s]' $sep))// date
  279.     @fwrite($fp$_SERVER["SCRIPT_NAME"]getHttpParameters($sep);
  280.     @fwrite($fpEND_LINE);
  281.     @fclose($fp);
  282.   }
  283.  
  284.   /**
  285.    * pgsql::DBclose()
  286.    * Retourne le nombre d'enregistrements affecté par la dernière requête
  287.    *
  288.    * @access public
  289.    * @return integer : $res
  290.    */
  291.   function DBClose()
  292.   {
  293.     @pg_close();
  294.   }
  295. }
  296.  
  297. ?>

Documentation generated on Fri, 16 Oct 2009 09:29:34 +0200 by phpDocumentor 1.4.1