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.  
  65.     $this->DB_LINK = @pg_connect('host=' .$this->DB_HOST' port=5432 dbname=' $this->DB_NAME . ' user=' $this->DB_USER' password='  $this->DB_PASS)
  66.     or die($this->DBError(_t('divers','db_connect_failed')));
  67.  
  68.     if(defined('MOD_DEBUG'&& MOD_DEBUG == true && isset($GLOBALS['Dbg'])) {
  69.       global $Dbg;
  70.  
  71.       // $Dbg->queryRel('Connecting to <i>'.SQL.'</i> DATABASE [<b>'.$this->DB_NAME.'</b>] dns: '.$this->DB_USER.':'.$this->DB_PASS.'@'.DB_HOST);
  72.       $Dbg->stopTimer();
  73.     }
  74.     return true;
  75.   }
  76.  
  77.   /**
  78.    * pgsql::DBError()
  79.    * Gestion des erreurs SQL
  80.    *
  81.    * @access private
  82.    * @param string $message_err : message retourné par la requête
  83.    * @param string $requete : requête provoquant l'erreur
  84.    * @return boolean 
  85.    */
  86.   function DBError($message_err$requete = -1)
  87.   {
  88.     //pg_set_error_verbosity($this->DB_LINK, PGSQL_ERRORS_VERBOSE);
  89.     $res1 pg_get_result($this->DB_LINK);
  90.  
  91.     $erreur $message_err "<br />[<em> PostgreSQL error (pg_result_error): " @pg_result_error($res1)"<br />";
  92.     $erreur.= "(pg_last_error): " @pg_last_error("</em> ]<br />\n";
  93.     if ($requete != -1{
  94.       $this->_logDbError($requete);
  95.       $erreur .= "$requete<br />\n";
  96.     }
  97.     $date date("[D d/M/y H:i:s]<br />\n");
  98.     $erreur .= $date;
  99.     $erreur .= "running script :" $_SERVER["SCRIPT_NAME"getHttpParameters("<br />";
  100.     if(defined('MOD_DEBUG'&& MOD_DEBUG == true{
  101.       echo $erreur;
  102.     }
  103.     if ($this->DB_ADMINMAIL != -1@error_log ($erreur1$this->DB_ADMINMAIL);
  104.   }
  105.  
  106.   /**
  107.    * pgsql::DBInsert()
  108.    * Insertion de données dans la BDD
  109.    *
  110.    * @access public
  111.    * @param string $requete : requête SQL
  112.    * @param string $returnid : Si $returnid==1 ==> renvoie last_id()
  113.    * @return integer || boolean : $result last_id()
  114.    */
  115.  
  116.   function DBInsert ($requete$returnid = -1)
  117.   {
  118.     if (!($this->RESULT = $this->DBQuery($requete))) return false;
  119.  
  120.     // Si returnid=1 on renvoie l'id de l'enregistrement
  121.     // A utiliser uniquement si attribut auto_increment
  122.  
  123.     if ($returnid == 1return $this->_DBgetInsertId($requete);
  124.  
  125.     return true;
  126.      
  127.   }
  128.  
  129.   /**
  130.    * pgsql::DBescape()
  131.    * Echappement  des variables
  132.    *
  133.    * @access public
  134.    * @param string $input : données
  135.    * @return array : $array
  136.    */
  137.  
  138.   function DBescape ($input)
  139.   {
  140.  
  141.     if(is_array($input)) {
  142.  
  143.       $output array();
  144.  
  145.       foreach ($input as $key => $value{
  146.         if(is_string($value)) {
  147.           if (get_magic_quotes_gpc()) $value=stripslashes($value);
  148.           $output[$keypg_escape_string($value);
  149.         else {
  150.           $output[$key=  $value;
  151.         }
  152.       }
  153.     else {
  154.  
  155.       // it is a simple string
  156.       if(is_string($input)) {
  157.         if (get_magic_quotes_gpc()) $input=stripslashes($input);
  158.         $output pg_escape_string($input);
  159.       else {
  160.         $output =  $input;
  161.       }
  162.     }
  163.     return $output;
  164.      
  165.   }
  166.  
  167.   /**
  168.    * pgsql::_DBgetInsertId()
  169.    * Insertion de données dans la BDD
  170.    *
  171.    * @access private
  172.    * @param string $requete : requête SQL
  173.    * @return integer 
  174.    */
  175.  
  176.   function _DBgetInsertId ($requete)
  177.   {
  178.     $array explode(" "$requete);
  179.     $tablename $array[2];
  180.  
  181.     if (!($res $this->DBQuery("SELECT * FROM " $tablename " LIMIT 1;"))) return false;
  182.  
  183.     $id_name pg_field_name $res0);
  184.     $seq $tablename'_' $id_name '_seq';
  185.  
  186.     $res $this->DBSelect("SELECT currval('" $seq "');");
  187.  
  188.     return $res[0]['currval'];
  189.      
  190.   }
  191.  
  192.  
  193.   /**
  194.    * pgsql::DBQuery()
  195.    * effectue une requête en tous genres -UPDATE - DELETE - SELECT
  196.    *
  197.    * @access public
  198.    * @param string $requete : requête SQL
  199.    * @return boolean : $result
  200.    */
  201.   function DBQuery ($requete)
  202.   {
  203.  
  204.     if(defined('MOD_DEBUG'&& MOD_DEBUG == true && isset($GLOBALS['Dbg'])) {
  205.       global $Dbg;
  206.  
  207.       $this->_logDbQuery($requete);
  208.       $Dbg->stopTimer();
  209.       $Dbg->query($requete);
  210.       $Dbg->stopTimer();
  211.     }
  212.     $this->RESULT = pg_query($this->DB_LINK$requeteor die($this->DbError(_t('divers','sql_query_failed')$requete));
  213.  
  214.     return $this->RESULT;
  215.   }
  216.  
  217.   /**
  218.    * pgsql::DBSelect()
  219.    * Requêtes - SELECT
  220.    *
  221.    * @access public
  222.    * @param string $requete : requête SQL
  223.    * @param string $fetch : renvoie des données, valeur ASSOC (default), ARRAY, OBJECT
  224.    * @return array : $result
  225.    */
  226.  
  227.   function DBSelect ($requete$fetch 'ASSOC')
  228.   {
  229.  
  230.     if (!($this->RESULT = $this->DBQuery($requete))) {
  231.       @pg_free_result($this->RESULT);
  232.       return false;
  233.     }
  234.     if ($fetch == 'ARRAY'{
  235.       $i 0;
  236.       while ($data @pg_fetch_array($this->RESULT)) {
  237.         $table[$i$data;
  238.         $i++;
  239.       }
  240.     }
  241.     if ($fetch == 'OBJECT'{
  242.       $i 0;
  243.       while ($data @pg_fetch_object($this->RESULT)) {
  244.         $table[$i$data;
  245.         $i++;
  246.       }
  247.     }
  248.     if ($fetch == 'ASSOC'{
  249.       $i 0;
  250.       while ($data @pg_fetch_assoc($this->RESULT)) {
  251.         $table[$i$data;
  252.         $i++;
  253.       }
  254.     }
  255.  
  256.     if (!isset($table)) $table 0;
  257.     return $table;
  258.   }
  259.  
  260.   /**
  261.    * pgsql::DBaffectedRow()
  262.    * Retourne le nombre d'enregistrements affecté par la dernière requête
  263.    *
  264.    * @access public
  265.    * @return integer : $res
  266.    */
  267.   function DBaffectedRow()
  268.   {
  269.     $res pg_affected_rows($this->RESULT);
  270.     return $res;
  271.   }
  272.  
  273.   /**
  274.    * _logDbQuery()
  275.    * @access private
  276.    * @param string $q 
  277.    * @return void 
  278.    */
  279.   function _logDbQuery($q)
  280.   {
  281.     if(defined('SQL_LOG_DEBUG'&& SQL_LOG_DEBUG == 1{
  282.  
  283.       $q str_replace(array("\r""\n""\t"),"",$q);
  284.       logfile(LOG_SQL_QUERIESarray($qget_class()));
  285.  
  286.     }
  287.   }
  288.  
  289.   /**
  290.    * _logDbError()
  291.    * @access private
  292.    * @param string $q 
  293.    * @return void 
  294.    */
  295.   function _logDbError($q)
  296.   {
  297.     $q str_replace(array("\r""\n""\t"),"",$q);
  298.     logfile(LOG_SQL_ERRORSarray($q$_SERVER["SCRIPT_NAME"]get_class()));
  299.   }
  300.  
  301.   /**
  302.    * pgsql::DBclose()
  303.    * Retourne le nombre d'enregistrements affecté par la dernière requête
  304.    *
  305.    * @access public
  306.    * @return integer : $res
  307.    */
  308.   function DBClose()
  309.   {
  310.     @pg_close();
  311.   }
  312. }
  313.  
  314. ?>

Documentation generated on Thu, 03 May 2012 15:02:35 +0200 by phpDocumentor 1.4.1