<?php
/**
 *
 * Auteurs : Richard DEMONGEOT, Alan GARCIA (Durant le projet de PHP de notre année scolaire
 *                                           2004-2005)
 *
 * Date : 10/02/2005
 *
 * Derniere modification : 15/12/2006
 *
 * Synopsys : Classe visant a rendre des fonctions de bases de données
 *                 generiques, avec comme contrainte de specifier quelques 
 *                parametres dans initialize.php
 *
**/

/*
Ce fichier est sous licence GPL V2.
Je vous demanderai toutefois de bien vouloir me faire parvenir (par mail ou par
un autre moyen à votre convenance) les modifications que vous êtes suceptibles
d'y ajouter, ainsi que leurs justification.

--------------------------------------------------------------------------------------

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License.

Thanks to send me any change you can wrote to this project and their reasons.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

//Nous aurions voulu coder un switch, mais par 
//manque de temps nous n'avons pas pu.

require_once("./initialize.php"); /* Fichier d'initialisation */

/* le constructeur fait office de connexion */

/* Cette fonction permet de créer la base de donnée voulue */
function Execute_cr_db ($_DB)
/**
 * Ne fonctionne actuellement qu'avec MySQL
 * Gardé dans ce fichier car n'agit que sur la création de base.
**/
{
    if (
TYPE == ORACLE)
     {
        
$connexion=oci_connect(LOGINPASSWORD);
        
$query="CREATE DATABASE $_DB";
        
$resultat=oci_parse_error($query);
        
oci_execute($resultat);
    }
    else if (
TYPE == POSTGRE)
    {
        
$connexion=$pg_connect("host=".HOTE." port=".PORT." user=".LOGIN." password=".PASSWORD);
        
$query="CREATE DATABASE $_DB";
        
pg_query($connexion$query);
    }
    else if (
TYPE == MYSQL)
    {
        
$connexion=mysql_connect(HOTELOGINPASSWORD);
        
$query="CREATE DATABASE $_DB";
        
mysql_query($query);
    }
}
    
class 
cbd
{
    
/**
     * Variables
    **/

    
var $ORACLE;        /* booleen pour bd oracle */
    
var $POSGRESQL;     /* booleen pour bd posgree sql */
    
var $MYSQL;         /* booleen pour bd mysql */

    
var $connexion;     /* variable de connexion */
    
var $CaseSensitive/* si le sgbd necessite une casse speciale.
                           1 => Casse spéciale et 0 casse de création des tables*/
    
var $majuscule;     /* si le sgbd fonctionne en majuscule ou minuscule.
                           1 => MAJUSCULE et 0 => minuscule 
                   Cette vatiable est INUTILE donc choisie arbitrairement
                   dans le cas ou CaseSensitive est a 0 */

    /**
     * Fonctions spécifique a chaques type de base
    **/

    /* 
    function cbd () // fait office de connexion
    Utilisation :
    require_once("./cbd.php"); // Insertion de ce code
    $connexion=new cbd();          // Creation de la variable de connexion et de l'objet d'interfacage
    */

    /* Fonction qui execute la requete SQL passée */
    /*
    function Execute ($_req)
    Utilisation : 
    $connexion->Execute ($MaRequete);
    OU
    $connexion->Execute ("requete SQL");
    */

    /* Fonction qui parse les résultats fetch_row */
    /* function Fetch_row ($_resultat) */

    /* Fonction qui parse les résultats fetch_assoc */
    /* function Fetch_assoc ($_resultat) */

    /**
     * Inclusion des finctions spécifiques
    **/

    /*
    if (TYPE == ORACLE)
        require_once("./oracle.php");
    else if (TYPE == MYSQL)
        require_once("./mysql.php");
    else if (TYPE == POSTGRE )
        require_once("./postgres.php");
    */

    /**
     * Fonctions génériques
    **/
    
    /*
    2 fonctions peu utiles mais gardées par soucis de rétro
    compatibilité

    Aujourd'hui remplacées avantgeusement par NomChamp

    Get_CSens => indique si la base de donnée impose une casse ou non
    1 => Il faut une casse spéciale
    0 => Casse de création des tables
    
    Get_maj => Indique si la base de donnée utilisée est en majuscule
    ou en minuscule (1 => majuscule, 0 => minuscule)

    Historiquement utilisé dans les Fetch_row ou Fetch_assoc
    pour avoir la bonne casse sur le nom du champ.
    */
    
    /* Utilisation : $connexion->fonction (); */
    
function Get_CSens () {return $this->CaseSensitive;}
    function 
Get_maj () {return $this->majuscule;}

    
/* Fonction qui remplace Get_CSens et Get_maj */
        
function NomChamp ($_Nom)
        {
        if (
$this->CaseSensitive)
            return 
$this->majuscule?strtoupper($_Nom):strtolower($_Nom);
        else return 
$_Nom;
    }

};
//class cbd
require_once (INCLURE);
?>