<?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 XLangueChaine.php
*
* Ce fichier contient la classe XLangueChaine
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @link www.rooty.me
* @since 2004/04/14
* @version 0.3
* @package system_utils
* @copyright Copyright &copy; 2004-2005, ARD Limousin
*/
if ( !defined('SYSTEM_IN') )
{
 die("Hacking attempt");
}

/**
* Classe XLangueChaine
*
* classe de gestion d'un objet chaine traduit....
* @package system_utils
*/
class XLangueChaine
{
/**#@+
* @var chaine
* @access private
*/

/**
* @desc contenu de l'objet
*/
var $contentData = null;

/**
* @desc tableau des valeurs
*/
var $tab = null;

/**#@-*/
	//
	// Constructor
	//
/**
* Constructeur de la classe DataObjetc
*
*<p>Initialise XLangueChaine</p>
* @access private
*/
	function __construct($Sql)
	{
		$this->tab=array();
		$this->setXMLContentData($Sql);		# Initialise la structure de données
	}

/**
* getXMLContentData: retourne la source de données propre à l'objet (XML)
*
* @access public
* @return chaine chaine au format XML
*/
	function getXMLContentData()
	{
		# retourne la chaine XML
		$src = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
		$src.="<XML XLANGUECHAINEVERSION=\"1.0\">\n";
		$src.="\t";
		foreach($this->tab as $key => $value){
			$src.="<".$key.">".htmlspecialchars(strip_tags($value))."</".$key.">\n";
		}
		$src.="</XML>\n";
		$src.="</xml>";
		return $src;
	}

/**
* setXMLContentData: affecte la source de données propre à l'objet (XML)
*
* @param chaine chaine au format XML
* @access public
* @return booleen
*/
	function setXMLContentData($src)
	{
		$src=str_replace(array("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n",
					"<XML XLANGUECHAINEVERSION=\"1.0\">\n",
					"\t",
					"</XML>\n",
					'</xml>',
					"\r"
				), "", $src);
// 		$tabLine=split("\n", $src);
        $tabLine=explode("\n", $src);

		reset($tabLine);

		foreach($tabLine as $Line){
			if($Line!=""){
				$findKey=explode(">", $Line);

				if(isset($findKey[0])){
					$key=substr($findKey[0], 1);

					$value=str_replace("<".$key.">", "", $Line);
					$value=str_replace("</".$key.">", "", $value);
					if($value!="")
						$this->tab["$key"]=unhtmlspecialchars($value);
				}
			}
		}
		return true;
	}

/**
* getData: retourne la source de données propre à l'objet (XML)
*
* @param chaine nom/chemin de la variable au format "XLangueChaine"
* @access public
* @return chaine valeur de la donnée
*/
	function getLanguage($langue)
	{
		if(isset($this->tab[strtoupper($langue)])){
			return $this->tab[strtoupper($langue)];
		}else{
			return "";
		}
	}

/**
* setData : affecte la source de données propre à l'objet (XML)
*
* @param chaine nom de la langue
* @param chaine valeur de l'element
* @access public
* @return booleen
*/
	function setLanguage($langue,$value)
	{
		$this->tab[strtoupper($langue)]=$value;
	}

/**
* LoadSql: Charge un data object à partir de ses éléments
*
* @param source de donnée (chaine formatée XML)
* @access public
* @return booleen
*/
	function setSql($SqlData)
	{
		return $this->setXMLContentData($SqlData);
	}

/**
* Recupere la chaine Final a enregistrer formatée(SQL)
*
* @param source de donnée (chaine formatée XML)
* @access public
* @return chaine chaine a enregistrer sous sql
*/
	function getSql()
	{
		return $this->getXMLContentData();
	}
}
?>
