<?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 SystemMessage.php
*
* Ce fichier contient la classe SystemMessage
*
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @link www.rooty.me
* @since 2004/07/05
* @version 0.3
* @package system_message
* @copyright Copyright &copy; 2009-2018, Rooty
*/

#####################################################################################################
################################# 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 SystemMessage
*
* classe de gestion d'un objet chaine traduit....
* @package system_message
*/
class SystemMessage
{

/**#@+
* @var tableau
* @access private
* @desc tableau tableau des messages
*/
var $messages		= array();

/**#@-*/

	//
	// Constructor
	//
/**
* Constructeur de la classe SystemMessage ... parse par défaut le fichier main.ini dans /data/lang/ (PHP5)
*
* <p>Initialise SystemMessage</p>
* @access private
*/
	function __construct()
	{
	}

/**
* addFile permet d'ajouter un fichier source de SystemMessages
*
* <p>inclusion des fichier sous-forme(fichier-nid-oid.mxt)<br />
* ou inclusion des fichier sous-forme(fichier-oid.mxt) <br />
* ou fichier.mxt dans la langue courante, <br />
* sinon, on inclus du fichier par défaut <br />
* </p>
* @access public
* @return chaine chaine au format XML
*/
	function addFile($fileName, $path="")
	{
		global $CONF_DATA_PATH;		/* Chemin pour les données */
		$currentPathDirectory=(isset($path) && $path!="")?$path:$CONF_DATA_PATH."data/message/".$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode()."/";

// 		var_dump($currentPathDirectory);

		//Vérification de l'existence de la page sous-forme(page-nid-oid.mxt)
		//$fileName=strtolower(str_replace(".ini", "", $fileName));
// 		if (file_exists($currentPathDirectory.$fileName."-".nid()."-".oid().".ini"))
// 		var_dump($currentPathDirectory.$fileName);
		if (file_exists($currentPathDirectory.$fileName))
		{
// 			var_dump($currentPathDirectory.$fileName);
			//Affectation du template nid-oid
// 			$this->messages=array_merge($this->messages, parse_ini_file($currentPathDirectory.$fileName."-".nid()."-".oid().".ini",false));
			$this->messages=array_merge($this->messages, parse_ini_file($currentPathDirectory.$fileName,false));
			return true;
		}
		else
		{
			if (file_exists($currentPathDirectory.$fileName."-".oid().".ini"))
			{
				//Affectation du template oid
				$this->messages=array_merge($this->messages, parse_ini_file($currentPathDirectory.$fileName."-".oid().".ini",false));
				return true;
			}
		}

		/* Gestion des chemins par défaut */
		$defaultPathDirectory=(isset($path) && $path!="")?$path:$CONF_DATA_PATH."data/message/".$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"]."/";

		/* Vérification de l'existance du fichier */
		if (file_exists($defaultPathDirectory.$fileName.".ini"))
		{
			/* inclusion du fichier */
			$this->messages=array_merge($this->messages, parse_ini_file($defaultPathDirectory.strtolower($fileName.".ini"),false));
			return true;
		}else{
			//addError(1, "SystemMessage", "Impossible de trouver le fichier".$defaultPathDirectory.$fileName."", __line__, __file__);
			return false;
		}
	}

/**
* getMessage : recupére un SystemMessage en fonction de son identifiant
*
* @param chaine nom/chemin de la variable au format "SystemMessage"
* @access public
* @return chaine valeur de la donn?e
*/
	function getMessage($name)
	{
		if(array_key_exists($name, $this->messages))
		{
// 			var_dump($this->messages);
			return $this->messages[$name];
		}else{
			return "";
		}
	}
	
/**
* getMessage : recupére un SystemMessage en fonction de son identifiant
*
* @param chaine nom/chemin de la variable au format "SystemMessage"
* @access public
* @return chaine valeur de la donn?e
*/
	function getMessageCode($name)
	{
		if(array_search($name, $this->messages))
		{
			return array_search($name, $this->messages);
		}else{
			return "";
		}
	}

/**
* execPrinting : appel tous les printing leur methode __print()
*
* @param object objet template (/defaut $GLOBALS["SYSTEM_TEMPLATE"])
* @access public
* @return booleen
*/
	function execPrinting($Tpl="")
	{
		if ($Tpl=="")
			$Tpl=&$GLOBALS["SYSTEM_TEMPLATE"];

		$Tpl->WithMxPath("");
		reset($this->messages);
		/* on récupére les index. (préformatage du tableau) */
		$tabBloc=array_keys($Tpl->templateContent);
		for ($i=0; $i<count($tabBloc); $i++)
		{
			$tabBloc[$i]=str_replace(str_replace("mxt", "",$GLOBALS['SYSTEM_TEMPLATE_MAIN']), "", $tabBloc[$i]).".";
		}

		while (list($key, $val) = each($this->messages))
		{
			/* Gére en fonction de la template si le flag existe */
			for ($i=0; $i<count($tabBloc); $i++)
			{
				/* enlévé car plus rapide avec la lib Modelixe (Granilim... -> sinon erreur) */
				if ($Tpl->IsMxFlag($tabBloc[$i].$key, "text")!=false)
				{
					$Tpl->MxText($tabBloc[$i].$key, htmlentitiesconv($val));
				}
				if ($Tpl->IsMxAttribut($tabBloc[$i].$key)!=false)
				{
					$Tpl->MxAttribut($tabBloc[$i].$key, htmlentitiesconv($val));
				}
			}
		}
		return true;
	}
}
?>
