<?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.
*
* Ce fichier contient la gestion de BackupDb (Factory+Modéle)
*
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @since 2005/03/11
* @link www.rooty.me
* @version 0.3
* @package package
* @subpackage BackupDb
* @copyright Copyright &copy; 2009-2018, Rooty
*/

if ( !defined('SYSTEM_IN') )
{
// die("Hacking attempt");
}

/**
* Classe BackupDbFactory
*Usine a BackupDb
*Cette classe permet de générer un fichier .sql
* @package package
* @subpackage BackupDb
*/
class BackupDb
{
/**
* Création d'un objet BackupDb de type $type (actuellement mysql)
* @param chaine type d'objet BackupDb
* @param chaine host
* @param chaine login
* @param chaine password
* @param chaine chemin de sauvgarde
* @param chaine nom du fichier de sauvegarde
* @param chaine nom de la base de données
* @return booleen
*/
	function create($type, $host, $login, $password, $chemin, $nom_fichier, $db, $chmod=0775)
	{
		if (file_exists($GLOBALS["CONF_LIB_PATH"]."lib/package/backup/".strtolower($type)."backupdb.php"))
		{
			includePackage("backup/".strtolower($type)."backupdb.php");

			if (!class_exists($type.'BackupDb'))
			{
				addError(2,"BackupDbFactory","le fichier de ressource n'est pas valide!", __line__, __file__);
				return false;
			}

			eval('$return=new '.$type.'BackupDb("'.$host.'", "'.$login.'", "'.$password.'", "'.$chemin.'", "'.$nom_fichier.'", "'.$db.'", "'.$chmod.'");');

			if (!isset($return) || !is_object($return))
			{
				addError(2,"BackupDbFactory","le fichier de ressource n'est pas valide!", __line__, __file__);
				return false;
			}
			return $return->backup();
		}else{
			addError(2,"BackupDbFactory","le fichier de ressource n'existe pas!", __line__, __file__);
			return false;
		}
	}

/**
* Création d'un objet BackupDb de type $type (actuellement mysql)
* @param chaine type d'objet BackupDb
* @param chaine host
* @param chaine login
* @param chaine password
* @param chaine chemin de sauvgarde
* @param chaine nom du fichier de sauvegarde
* @param chaine nom de la base de données
* @return booleen
*/
	function restore($type, $host,$login,$password,$chemin,$nom_fichier,$db)
	{
		if (file_exists($GLOBALS["CONF_LIB_PATH"]."lib/package/backup/".strtolower($type)."backupdb.php"))
		{
			includePackage("backup/".strtolower($type)."backupdb.php");

			if (!class_exists($type.'BackupDb'))
			{
				addError(2,"BackupDbFactory","le fichier de ressource n'est pas valide!", __line__, __file__);
				return false;
			}
			eval('$return=new '.$type.'BackupDb("'.$host.'", "'.$login.'", "'.$password.'", "'.$chemin.'", "'.$nom_fichier.'", "'.$db.'");');

			if (!isset($return) || !is_object($return))
			{
				addError(2,"BackupDbFactory","le fichier de ressource n'est pas valide!", __line__, __file__);
				return false;
			}
			return $return->restore();
		}else{
			addError(2,"BackupDbFactory","le fichier de ressource n'existe pas!", __line__, __file__);
			return false;
		}
	}

/**
* Création d'une sauvegarde fichier de la base courante!!
* Le type de la base est défini dans conf/conf.data_source.php<br/>
* Utilisation:<br/>
* $var=BackupDbFactory::createBackup("data/", "test.sql");
* @param chaine host
* @param chaine login
* @param chaine password
* @param chaine chemin de sauvgarde
* @param chaine nom du fichier de sauvegarde
* @param chaine nom de la base de données
* @return booleen
*/
	function createBackupDb($chemin, $nom_fichier)
	{
		if (defined("DATA_SOURCE_DB_TYPE")){
			return BackupDb::create(DATA_SOURCE_DB_TYPE, DATA_SOURCE_DB_SERVER, DATA_SOURCE_DB_USER, DATA_SOURCE_DB_PASSWORD, $chemin, $nom_fichier, DATA_SOURCE_DB_DATABASE);
		}else{
			return false;
		}
	}

/**
* Restoration d'une sauvegarde DB dans la base courante!!
* Le type de la base est défini dans conf/conf.data_source.php<br/>
* Utilisation:<br/>
* $var=BackupDbFactory::createBackup("data/", "test.sql");
* @param chaine host
* @param chaine login
* @param chaine password
* @param chaine chemin de sauvgarde
* @param chaine nom du fichier de sauvegarde
* @param chaine nom de la base de données
* @return booleen
*/
	function restoreBackUpDb($chemin,$nom_fichier){
		if (defined("DATA_SOURCE_DB_TYPE")){
			return BackupDb::restore(DATA_SOURCE_DB_TYPE, DATA_SOURCE_DB_SERVER, DATA_SOURCE_DB_USER, DATA_SOURCE_DB_PASSWORD,$chemin,$nom_fichier, DATA_SOURCE_DB_DATABASE);
		}else{
			return false;
		}
	}
}

/**
* Classe BackupDb
*classe de gestion des BackupDb (BD)
* Interface pour les ressources DB type mysql etc. voir dans /backupdb
* @package package
* @subpackage BackupDb
*/
class CommonBackupDb
{

	//
	// Attributs
	//
/**
* @var entier
* @access private
*/
var $host	= "";

/**
* @var entier
* @access private
*/
var $login	= "";

/**
* @var entier
* @access private
*/
var $passwd	= "";

/**
* @var entier
* @access private
*/
var $path	= "";

/**
* @var entier
* @access private
*/
var $file	= "";

/**
* @var entier
* @access private
*/
var $db		= "";

/**
* @var entier
* @access private
*/
var $perm	= "";

	//
	// Constructeur
	//
/**
* Constructeur
* @param chaine host
* @param chaine login
* @param chaine password
* @param chaine chemin de sauvgarde
* @param chaine nom du fichier de sauvegarde
* @param chaine nom de la base de données
* @return booleen
*/
	function CommonBackupDb($host,$login,$password,$chemin,$nom_fichier,$db, $chmod=0775)
	{
		$this->__construct($host,$login,$password,$chemin,$nom_fichier,$db, $chmod);
	}

/**
* Constructeur
* @param chaine host
* @param chaine login
* @param chaine password
* @param chaine chemin de sauvgarde
* @param chaine nom du fichier de sauvegarde
* @param chaine nom de la base de données
* @return booleen
*/
	function __construct($host,$login,$password,$chemin,$nom_fichier,$db, $chmod=0775)
	{
		$this->host=$host;
		$this->login=$login;
		$this->passwd=$password;
		$this->path=$chemin;
		$this->file=$nom_fichier;
		$this->db=$db;
		$this->perm=$chmod;
	}

/**
* Création d'une sauvegarde
* @return booleen
*/
	function backup()
	{
	}

/**
* Restauration d'une sauvegarde
* @return booleen
*/
	function restore()
	{
	}
}
?>