<?php
/**------------------------------------------------
*
* Rooty, 2018 <rooty@rooty.me>
*
*
* This software is protected by copyright, please
* read the file COPYRIGHT.
* 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. Please
* read the file LICENCE.
*
* Fichier mysql3.php
*
* Ce fichier contient la classe d'accès aux données BD
*
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @since 2018/03/19
* @version 1.16
* @link http://www.phpbb.com
* @package system_data_source
* @subpackage database
* @copyright Copyright &copy; 2004-2006, Granilim
*/


#####################################################################################################
################################# Parametrage
#####################################################################################################

/**
* declaration du system... si cette variable n'est pas définie, les fichier inclus ne marche pas...
* cette variable est déclarée sur la page d'execution du script.
*<p> if ( !defined('SYSTEM_IN') )
* {
* die("Hacking attempt");
* }</p>
*/
if ( !defined('SYSTEM_IN') )
{
 die("Hacking attempt");
}


/**
* classe Database
*
* classe de gestion de Bases de données
*
* @package system_data_source
* @subpackage database
* @abstract
*/
class Database
{

	//
	// Constructor
	//



/**
*Constructeur de la classe MySQL3
*
*<p>Initialise la connection a la base de données MySQL 3</p>
*
* @param chaine Nom de l'hote MySQL
* @param chaine Nom d'utilisateur
* @param chaine Mot de passe de connection
* @param chaine Nom de la base a utiliser
* @param booléen Connection persistante
* @abstract
*/
	function MySQL3($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
	{
		$this->__construct($sqlserver, $sqluser, $sqlpassword, $database, $persistency);
	}


	function __construct($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
	{
	}

	//
	// Other base methods
	//

/**
*fermeture de connection
*
* fonction qui ferme la connection a la base mysql
*
* @return booléen
*/
	function sql_close()
	{
		return true;
	}

	//
	// Base query method
	//
/**
* fonction de requete SQL
*
* permet de faire une requete sur la connection
*
* @param chaine Requete SQL
* @param booléen inutilisé dans ce cas
* @return result renvoie un pointeur de resultat ou faux si erreur de requete
*/
	function sql_query($query = "", $transaction = FALSE)
	{
		return false;
	}

	//
	// Other query methods
	//
/**
* Nombre de resultats retournés
*
* permet de récuperer le nombre de lignes retournées lors de la dernière requête effectuée.
*
* @param entier (facultatif) identifiant de requete , utilise la dernière requete par defaut
* @return entier nombre de résultats
*/
	function sql_numrows($query_id = 0)
	{
		return false;
	}

/**
* Nombre d'enregistrements modifiés
*
* retourne le nombre d'enregistrements affectés par la derniere requete.
*
* @return entier nombre d'enregistrements modifiés
*/
	function sql_affectedrows()
	{
		return false;
	}

/**
* Nombre de champs
*
* retourne le nombre de champs de la derniere requete effectuée
*
* @param entier (facultatif) identifiant de requete , utilise la dernière requete par defaut
* @return entier nombre de champs
*/
	function sql_numfields($query_id = 0)
	{
		return false;
	}

/**
* Nom d'un champ
*
* retourne le nom du champ placé a offset
*
* @param entier emplacement du champ
* @param entier (facultatif) identifiant de requete , utilise la dernière requete par defaut
* @return chaine nom du champ
*/	
	function sql_fieldname($offset, $query_id = 0)
	{
		return false;
	}

/**
* Type d'un champ
*
* retourne le type du champ placé a offset
*
* @param entier emplacement du champ
* @param entier (facultatif) identifiant de requete , utilise la dernière requete par defaut
* @return chaine type de champ
*/
	function sql_fieldtype($offset, $query_id = 0)
	{
		return false;
	}

/**
* Obtenir un résultat
*
* retourne l'enregistrement courant sous forme de tableau
*
* @param entier facultatif) identifiant de requete , utilise la dernière requete par defaut
* @return tableau tableau contenant les différents champs
*/
	function sql_fetchrow($query_id = 0)
	{
		return false;
	}

/**
* Obtenir tous les résultats
*
* retourne tous les enregistrements courants (derniere requete effectuée) sous forme de tableau
*
* @param entier  (facultatif) identifiant de requete , utilise la dernière requete par defaut
* @return tableau_2D tableau à deux dimensions contant tous les enregistrement
*/
	function sql_fetchrowset($query_id = 0)
	{
		return false;
	}

/**
* Obtenir un champ particulier d'un resultat
*
* retourne un champ déterminé d'un enregistrement déterminé .
*
* @param entier (ou chaine) champ a renvoyer
* @param entier (facultatif) identifiant de l'enregistrement (dernier par defaut)
* @param entier (facultatif) identifiant de requete , utilise la dernière requete par defaut
* @return chaine valeur du champ
*/
	function sql_fetchfield($field, $rownum = -1, $query_id = 0)
	{
		return false;
	}

/**
* Déplacement de pointeur de résultat
*
* permet de déplacer le pointeur de résultat.
*
* @param entier ligne
* @param entier (facultatif) identifiant de requete , utilise la dernière requete par defaut
* @return result nouveau pointeur de resultat
*/
	function sql_rowseek($rownum, $query_id = 0)
	{
		return false;
	}


/**
* Identifiant d'insertion
*
* permet d'obtenir l'identifiant d'insertion (Requete INSERT)
*
* @return entier identifiant
*
*/
	function sql_nextid(){
		return false;
	}

/**
* Liberer l'espace mémoire
*
* permet de liberer la memoire occupée par le pointeur de résultat
*
* @param entier (facultatif) identifiant de requete , utilise la dernière requete par defaut
* @return booléen effectué avec succès
*/
	function sql_freeresult($query_id = 0){
		return false;
	}

/**
* Fonction d'erreur
*
* retourne un tableau contenant le numero et le message d'erreur
*
* @return tableau contenant les index ['message'] et ['code']
*/
	function sql_error($query_id = 0)
	{
		return array("message"=>"", "code"=>"");
	}


  //
  // Pour les regles de constuction des noms de table
  //

/**
* Fonction rewriteQuery
* retourne la requete avec les remplacement prefixe pour les noms de table
* Mots clés : {PACKAGE}, {CONFIG}, {OBJECT}
* @param chaine requete sql
* @return booleen
*/
	function rewriteQuery($query)
	{
		$query=str_replace("{PACKAGE}", Database::getPackagePrefixe(), $query);
		$query=str_replace("{CONFIG}", Database::getConfigPrefixe(), $query);
		$query=str_replace("{OBJECT}", Database::getObjectPrefixe(), $query);
		$query=str_replace("{SYSTEM}", DATA_ACCES_TABLE_PREFIX, $query);
		return $query;
	}

/**
* Fonction getDbConfigPrefixe
* retourne le prefixe pour le nom d'une table (BD) utilisé par un object
* @return chaine
*/
	function getConfigPrefixe()
	{
		return (DATA_ACCES_TABLE_PREFIX.DATA_ACCES_CONFIG_PREFIX);
	}

/**
* Fonction getDbPackagePrefixe
* retourne le prefixe pour le nom d'une table (BD) utilisé par un package
* @return chaine
*/
	function getPackagePrefixe()
	{
		return (DATA_ACCES_TABLE_PREFIX.DATA_ACCES_PACKAGE_PREFIX);
	}

/**
* Fonction getDbObjectPrefixe
* retourne le prefixe pour le nom d'une table (BD) utilisé par un object
* @return chaine
*/
	function getObjectPrefixe()
	{
		return (DATA_ACCES_TABLE_PREFIX.DATA_ACCES_OBJECT_PREFIX);
	}

}

  //
  // Alias Fonction
  //

/**
* Fonction getDbConfigPrefixe
* retourne le prefixe pour le nom d'une table (BD) utilisé par un object
* @return chaine
*/
function getDbConfigPrefixe()
{
	return Database::getConfigPrefixe();
}

/**
* Fonction getDbPackagePrefixe
* retourne le prefixe pour le nom d'une table (BD) utilisé par un package
* @return chaine
*/
function getDbPackagePrefixe()
{
	return Database::getPackagePrefixe();
}

/**
* Fonction getDbObjectPrefixe
* retourne le prefixe pour le nom d'une table (BD) utilisé par un object
* @return chaine
*/
function getDbObjectPrefixe()
{
	return Database::getObjectPrefixe();
}
?>
