<?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.
*
* @author Initiance <www.initiance.com|loic@initiance.com|martial@initiance.com>
* @copyright Copyright &copy; 2009-2018, Rooty
* @since 2004/06/07
* @version 0.3
* @link www.rooty.me
* @package object_printing
* @subpackage HelpPrint 
*/
if ( !defined('SYSTEM_IN') )
{
 die("Hacking attempt");
}

/**
* Classe HelpPrint
*<p>cette classe permet la recuperation et l'affichage de l'aide contextuelle</p>
* @package object_printing
* @subpackage HelpPrint
*/
class HelpPrint extends Printing
{
/**
* @access private
* @var booleen
* @desc Booleen indiquant si le plugin doit ou non afficher l'aide.
*/
var $activationState = true;

/**
* @access private
* @var chaine
* @desc Url correspondant a l'aide pour l'objet et la methode courante
*/
var $helpUrl = null;

	//
	// Constructor
	//
/**
* Constructeur de la classe ObjectPrint
* @access public
*/
	function HelpPrint()
	{
		$this->__construct();
	}

	function __construct()
	{
		parent::__construct("1.0", "Loic Vignard", "Affichage de l'aide!!!");	
	}

/**
* Permet de modifier la valeur de Activate
* @var boolean
*desc Valeur de activate
* @access public
*/
	function setActivate($state){
		if(is_bool($state)) $this->activationState = $state;
	}

/**
* Active l'affichage de l'aide
* @access public
*/
	function activate(){
		$this->activationState = true;
	}

/**
* Désactive l'affichage de l'aide
* @access public
*/
	function desactivate(){
		$this->activationState = false;
	}

/**
* Permet de récupérer la valeur de Activate
* @access public
*/
	function getActivate(){
		return $this->activationState;
	}

/**
* Remplace dans la template principale
* @access public
*/
	function __print()
	{
		if($this->getActivate()){
			# recuperation de la template
			$MaTemplate = new ModeliXeQware($GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."object_printing/helpprint/helpprint.mxt");
			$MaTemplate->SetModeliXe(true);
			$classe=strtolower(className());
			$methode=strtolower(methodName());

			if (!$this->helpUrl=$this->getLocalHelp($classe,$methode))
			{
				$this->helpUrl=$this->getRemoteHelp($classe,$methode);
			}
	
			if ($this->helpUrl)
			{
				$MaTemplate->MxAttribut("helpurllink", htmlentitiesconv(strtolower($this->helpUrl)));
				$MaTemplate->MxAttribut("helpurl", htmlentitiesconv(strtolower($this->helpUrl)));
				$MaTemplate->MxText("helplink", getMessage("TxtHelp"));
				$MaTemplate->MxAttribut("helplink", getMessage("TxtHelp"));
			}
			$MaTemplate->MxText("TxtClose", getMessage("TxtClose"));
			$MaTemplate->MxAttribut("TxtClose", getMessage("TxtClose"));
			$data=$MaTemplate->MxWrite();
			if (!isset($_GLOBALS["SYSTEM_TEMPLATE"]["searchPrint"]))
			{
				$GLOBALS["SYSTEM_TEMPLATE"]->MxText("helpprint", $data);
			}
		}
		return true;
	}

/**
* Recupére le fichier d'aide correspondant à l'objet courant et la methode courante en local
* si le fichier d'aide n'existe pas renvoie False, sinon renvoie l'url correspondant au fichier
* L'aide locale est recupérée dans doc/nomclasse-nommethode.htm
* @access public
* @param chaine chaine correspondant a la classe de l'objet
* @param chaine chaine correspondant a la methode en cours
* @param chaine retourne le path vers le fichier d'aide ou False
*/
	function getLocalHelp($classe,$method)
	{
		//Vérification d'existence du fichier d'aide
		$path=$GLOBALS["CONF_DATA_PATH"]."data/doc/".$classe."-".$method.".html";
		if (file_exists($path))
		{
			return $path;
		}
		else
		{
			return false;
		}
	}

/**
* Recupére le fichier d'aide correspondant à l'objet courant et la methode courante sur granilim.org
* si le fichier d'aide n'existe pas renvoie False, sinon renvoie l'url correspondant au fichier
* @access public
* @param chaine chaine correspondant a la classe de l'objet
* @param chaine chaine correspondant a la methode en cours
* @return chaine retourne le path vers le fichier d'aide ou False
*/
	function getRemoteHelp($classe,$method)
	{
		$path=REMOTE_HELP_PATH.HELP_FILENAME."?class=".$classe."&method=".$method;
		return $path;
	}

/**
* remoteFileExists-function
* Fonction permettant de vérfier l'existence d'un fichier distant renvoie True ou False
* @param chaine chaine url du fichier distant
* @return booleen renvoie vrai ou faux
*/
	function remoteFileExists ($url)
	{
		if (@fclose(fopen($url, "r")))
		{
			return true;
		}else{
			return false;
		}
	}
}
?>