<?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 fck.php
*
*Ce fichier contient la classe fck
*
* @author Initiance <www.initiance.com|olivier@initiance.com|martial@initiance.com>
* @since 2005/03/09
* @link www.rooty.me
* @version 0.3
* @package package
* @subpackage FCK
* @copyright Copyright &copy; 2004-2005, Initiance
*/
if ( !defined('SYSTEM_IN') )
{
 die("Hacking attempt");
}

/**
* Classe FCK
*
* Permet la gestion du wyziwig FCKeditor.
* @package package
* @subpackage fck 
*/
class fck
{
/**#@+
* @access private
*/

/**
* @var chaine
* @desc nom de l'élément du formulaire
*/
var $name  = null;

/**
* @var chaine
* @desc nom du formulaire
*/
var $form  = null;

/**
* @var chaine
* @desc valeur de la chaine html
*/
var $string  = null;

/**
* @var booleen

* @desc affichage des smiles oui/non

*/
var $smile  = null;

/**#@-*/

	//
	// Constructor
	//
/**
* Constructeur de la classe fck
*
* @param chaine nom du champ
* @param chaine nom du formulaire
* @param chaine valeur de la chaine à afficher
* @param chaine vrai ou faux pour l'utilisation des icones
*/
	function fck($name, $form, $string, $smile=true, $width, $height, $toolbar)
	{
		global $CONF_LIB_PATH;
		require_once($CONF_LIB_PATH."lib/package/wysi/fck/fckeditor.php");

		if (strtolower($toolbar)=="default")
			$toolbar="Default";

		if (strtolower($toolbar)=="basic")
			$toolbar="Basic";

// 		if ( $toolbar!="Default" && $toolbar!="Basic")
// 			$toolbar="Default";

		$this->name	=$name;
		$this->form	=$form;
		$this->string	=$string;
		$this->smile	=$smile;
		$this->width    =$width;
		$this->height   =$height;
		$this->toolbar  =$toolbar;
	}

/**
* Display retourne la chaine d'affichage du wizi wig
*/
	function Display()
	{
		global $SYSTEM_LIB_PATH;
		$fckeditor=new FCKeditor($this->name);
		$fckeditor->Value=$this->string;
		$fckeditor->ToolbarSet=$this->toolbar;
		$fckeditor->BasePath=$SYSTEM_LIB_PATH."lib/package/wysi/fck/";
		$fckeditor->InstanceName = $this->name;
		$fckeditor->Width = $this->width;
		$fckeditor->Height = $this->height;

		/**
		* @author Initiance <www.initiance.com|martial@initiance.com>
		* Modification d'août 2005 du script d'origine
		* teste l'adresse du serveur afin de reconstituer l'arbo pour les liens des styles et css
		*/
// 		if (function_exists("checkdnsrr") && checkdnsrr($_SERVER['HTTP_HOST']))
// 		{
// 			$name_server = "http://".$_SERVER['SERVER_NAME'];
// 		}
// 		else
// 		{
// 			$name_server = "http://".$_SERVER['HTTP_HOST'];
// 		}

		/**
		* @author NH Systeme <www.nh-systeme.fr|t.champomier@nh-systeme.fr>
		* Les lignes commentées ci dessus ne peut pas fonctionner lorsque l'hôte local
		* ne peut pas interroger un serveur DNS (checkdnsrr()). De plus ces lignes ne
		* prennent pas en compte la cas où l'hôte héberge des espaces de publications
		* basés sur des hôtes virtuels nommés (à contrario des hôtes virtuels par IP)
		* @ TODO Implémenter la construction de l'url absolue en tenat compte du pro-
		* tocole utilisé (http/https).
		*/


		//var_dump($_SERVER["SCRIPT_URI"]);
// 		if( is_null($_SERVER["SCRIPT_URI"]) ){
// 			$protocolHTTP = "http";
// 		} else {
// 			if (strpos($_SERVER["SCRIPT_URI"],'https://')===False) {
// 				$protocolHTTP = "http";
// 			} else {
// 				$protocolHTTP = "https";
// 			}
// 		}

// 		$name_server = $protocolHTTP."://".$_SERVER['SERVER_NAME'];
		$name_server = "http://".$_SERVER['SERVER_NAME'];

		$tabParseUrl = parse_url($name_server.$_SERVER["SCRIPT_NAME"]);
		$urlServer = $name_server . substr( $tabParseUrl["path"], 0, (strrpos($tabParseUrl["path"],"/")));

		/*
		* @author Initiance <www.initiance.com|martial@initiance.com>
		* Modification d'août 2005 du script d'origine
		*
		* Redéfinition et dynamisation de la configuration de FCKeditor ("fckconfig.js")
		* -> définition des styles pour la template courante
		* -> définition de la feuille de style associée
		* -> définition du manager d'image avec passage en paramètre du noeud d'entrée de l'utilisateur
		* -> définition du fichier de configuration FCK personnalisé (hors dossier du package = facilite l'évolution et la mise à jour FCKeditor)
		*/

		/*Tests sur la présence des fichiers*/
		$boolCss = false;
		#Fichier css des styles de la template Granilim
		if (file_exists( $GLOBALS['SYSTEM_TEMPLATE_PATH'] . $GLOBALS['SYSTEM_USER_SESSION']->getCurrentTemplate()."/css/fck.css"))
		{
		  $cssFCK =  $GLOBALS['SYSTEM_TEMPLATE_PATH'] . $GLOBALS['SYSTEM_USER_SESSION']->getCurrentTemplate()."/css/fck.css";
		  $cssFCK = $urlServer . substr($cssFCK, 1, strlen($cssFCK));
		  $boolCss = true;
		}
		else
		{
		  $cssFCK = $GLOBALS['SYSTEM_TEMPLATE_PATH'] . $GLOBALS['SYSTEM_TEMPLATE_DEFAULT_DIR']."/style.css";
		  $cssFCK = $urlServer . substr($cssFCK, 1, strlen($cssFCK));
		}

		#Fichier xml FCK des styles
		if (file_exists( $GLOBALS['SYSTEM_TEMPLATE_PATH'] . $GLOBALS['SYSTEM_USER_SESSION']->getCurrentTemplate()."/css/fckstyles.xml") && $boolCss == true)
		{
		  $stylesFCK =  $GLOBALS['SYSTEM_TEMPLATE_PATH'] . $GLOBALS['SYSTEM_USER_SESSION']->getCurrentTemplate()."/css/fckstyles.xml";
		  $stylesFCK = $urlServer . substr($stylesFCK, 1, strlen($stylesFCK));
		}
		else
		{
		  $stylesFCK =  $GLOBALS['SYSTEM_TEMPLATE_PATH'] .$GLOBALS['SYSTEM_TEMPLATE_DEFAULT_DIR']."/css/fckstyles.xml";
		  $stylesFCK = $urlServer . substr($stylesFCK, 1, strlen($stylesFCK));
		}

		/*Configurations définies*/
		$fckeditor->Config["EditorAreaCSS"] = $cssFCK;
		$fckeditor->Config["StylesXmlPath"] = $stylesFCK;
		$fckeditor->Config["LinkBrowser"] = "true" ; //Désactive l'option des liens
		$fckeditor->Config["ImageUpload"] = "true"; //Désactive l'option d'upload FCK
		$fckeditor->Config["ImageBrowser"] = "true";
		//$fckeditor->Config["ImageBrowserURL"] = $SYSTEM_LIB_PATH . '../../browser/manager.php?imgDirectory='.$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId;
		//$fckeditor->Config["ImageBrowserURL"] = '../filemanager/browser/manager.php?imgDirectory='.$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId;	
		$fckeditor->Config['CustomConfigurationsPath'] =  $SYSTEM_LIB_PATH."../../" .'configgranilimfck.js' ;

		/*
		* FIN DES MODIFICATIONS
		*/

		$html=$fckeditor->CreateHtml();
		return $html;
	}

/**
* ReturnData : retourne les données à partir de la chaine postée
* @return chaine au format html
*/
	function ReturnData()
	{
		global $_POST;

		$message=$_POST[$this->name];

		return $message;
	}

/**
* ReturnDependancy : retourne la chaine d'appel aux javascript indispenssable
*
*<p>Retourne la chaine Javascript Avec le bon chemin (en fonction de SYSTEM_PATH)</p>
*
* @return chaine chaine d'appel javascript
*/
	function ReturnDependency()
	{
		return '';
	}

/**
* IsVideJs :permet de savoir en javascript si le champ est vide
*
*<p>donne le nom de la fonction ou l'appel permettant de determiner si vide en js</p>
*
* @return chaine chaine d'appel javascript
*/
	function IsVideJs()
	{
		return '(document.'.$this->form.'.'.$this->name.'.value=="")?true:false;';
	}
}
?>
