<?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 Plugin.php
*
*Ce fichier contient la classe Plugin
*
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @link www.rooty.me
* @since 2004/04/14
* @version 0.3
* @package system_plugin
* @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 Plugin
*
*<p>Cette classe a pour but d'être étendue et sert à ajouter des fonctionalitées aux system<br><br>
* Les classe plugin doivent être placés dans lib/plugin pour être prise en compte
*</p>
* @package system_plugin
*/
class Plugin
{
/**
* @access private
* @var chaine
* @desc version du plugin
*/
var $version	= null;

/**
* @access private
* @var chaine
* @desc auteur du plugin
*/
var $autor	= null;

/**
* @access private
* @var chaine
* @desc commentaires liès aux plugin
*/
var $comment	= null;

	//
	// Constructor
	//

/**
* Constructeur de la classe Plugin
* @access public
*/
	function __construct($version, $autor, $comment)
	{
		$this->setVersion($version);
		$this->setAutor($autor);
		$this->setComment($comment);
	}

/**
* getVersion : récupere le version du plugin
* @access public
* @return chaine
*/
	function getVersion()
	{
		return $this->version;
	}

/**
* setVersion : affecte la version du plugin
* @access public
* @return booleen
*/
	function setVersion($version)
	{
		$this->version=$version;
		return true;
	}

/**
* getAutor : Récupere l'auteur
* @access public
* @return chaine
*/
	function getAutor()
	{
		return $this->autor;
	}

/**
* setAutor : affecte l'auteur
* @access public
* @return booleen
*/
	function setAutor($autor)
	{
		$this->autor=$autor;
		return true;
	}

/**
* getComment : Récupere les commentaires
* @access public
* @return chaine
*/
	function getComment()
	{
		return $this->comment;
	}

/**
* setComment : affecte les commentaires
* @access public
* @return booleen
*/
	function setComment($comment)
	{
		$this->comment=$comment;
		return true;
	}

 //
 // Méthodes executées sur chaque pages pour tous les plugins et a divers moment dans l'execution d'une page
 //

/**
* __beforeSessionStart : methode executée avant que la session commence
*<p>Cette methode à pour but d'être surchagée par le plugin<br>
*pour être executée avant l'initialisation du system</p>
* @abstract
* @access public
* @return booleen
*/
	function __beforeSessionStart()
	{
		return true;
	}

/**
* __beforeProcess : methode executée avant que le system ne soit executé
*<p>Cette methode à pour but d'être surchagée par le plugin<br>
*pour être executée avant l'execution system</p>
* @abstract
* @access public
* @return booleen
*/
	function __beforeProcess()
	{
		return true;
	}

/**
* __beforeExec : methode executée avant que l'objet de coordination ne soit appele
*<p>Cette methode à pour but d'être surchagée par le plugin<br>
*pour être executée avant l'execution de l'objet de coordination</p>
* @abstract
* @access public
* @return booleen
*/
	function __beforeExec()
	{
		return true;
	}

/**
* __afterExec : methode executée aprés l'execution de l'objet de coordination
*<p>Cette methode à pour but d'être surchagée par le plugin<br>
*pour être executée aprés l'execution de l'objet de coordination</p>
* @abstract
* @access public
* @return booleen
*/
	function __afterExec()
	{
		return true;
	}

/**
* __afterProcess : methode executée après que le system ne soit executé
*<p>Cette methode à pour but d'être surchagée par le plugin<br>
*pour être executée après l'execution system (et avant l'envoi de la page!)</p>
* @abstract
* @access public
* @return booleen
*/
	function __afterProcess()
	{
		return true;
	}

/**
* __beforeSessionClose : methode executée après que le system ne soit executé
*<p>Cette methode à pour but d'être surchagée par le plugin<br>
*pour être executée après l'execution system et avant la fermeture de la session</p>
* @abstract
* @access public
* @return booleen
*/
	function __beforeSessionClose()
	{
		return true;
	}

 //
 //  Evenementiel sur la partie systéme
 //
 // Permet d'interagir avec les modifications systeme

 //
 // CoordinationObject
 //

/**
* __insertCoordinationObj : methode apres ajout d'un objet de coordination
* @abstract
* @access public
* @param object CoordinationObj
* @return booleen
*/
	function __insertCoordinationObj($CoordinationObj)
	{
		return true;
	}

/**
* __updateCoordinationObj : methode apres modification d'un objet de coordination
* @abstract
* @access public
* @param object CoordinationObj
* @return booleen
*/
	function __updateCoordinationObj($CoordinationObj)
	{
		return true;
	}

/**
* __deleteCoordinationObj : methode avant suppression d'un objet de coordination
* @abstract
* @access public
* @param object CoordinationObj
* @return booleen
*/
	function __deleteCoordinationObj($CoordinationObj)
	{
		return true;
	}

 //
 // Utilisateur
 //

/**
* __insertUser : methode apres ajout d'un utilisateur
* @abstract
* @access public
* @param object User
* @return booleen
*/
	function __insertUser($User)
	{
		return true;
	}

/**
* __updateUser : methode apres modification d'un utilisateur
* @abstract
* @access public
* @param object User
* @return booleen
*/
	function __updateUser($User)
	{
		return true;
	}

/**
* __deleteUser : methode avant suppression d'un utilisateur
* @abstract
* @access public
* @param object User
* @return booleen
*/
	function __deleteUser($User)
	{
		return true;
	}

 //
 // Groupe
 //

/**
* __insertGroup : methode apres ajout d'un groupe
* @abstract
* @access public
* @param object Group
* @return booleen
*/
	function __insertGroup($Group)
	{
		return true;
	}

/**
* __updateGroup : methode apres modification d'un groupe
* @abstract
* @access public
* @param object Group
* @return booleen
*/
	function __updateGroup($Group)
	{
		return true;
	}

/**
* __deleteGroup : methode avant suppression d'un groupe
* @abstract
* @access public
* @param object Group
* @return booleen
*/
	function __deleteGroup($Group)
	{
		return true;
	}

 //
 // Noeud de navigation
 //

/**
* __insertNode : methode apres ajout d'un noeud de navigation
* @abstract
* @access public
* @param object Node
* @return booleen
*/
	function __insertNode($Node)
	{
		return true;
	}

/**
* __updateNode : methode apres modification d'un noeud de navigation
* @abstract
* @access public
* @param object Node
* @return booleen
*/
	function __updateNode($Node)
	{
		return true;
	}

/**
* __deleteNode : methode avant suppression d'un noeud de navigation
* @abstract
* @access public
* @param object Node
* @return booleen
*/
	function __deleteNode($Node)
	{
		return true;
	}


 //
 // Language
 //

/**
* __insertLanguage : methode apres ajout d'une langue
* @abstract
* @access public
* @param object Language
* @return booleen
*/
	function __insertLanguage($Language)
	{
		return true;
	}

/**
* __updateLanguage : methode apres modification d'une langue
* @abstract
* @access public
* @param object Language
* @return booleen
*/
	function __updateLanguage($Language)
	{
		return true;
	}

/**
* __deleteLanguage : methode avant suppression d'une langue
* @abstract
* @access public
* @param object Language
* @return booleen
*/
	function __deleteLanguage($Language)
	{
		return true;
	}

 //
 // Preferences utilisateur
 //

/**
* __insertUserPreference : methode apres ajout d'une preferences utilisateur
* @abstract
* @access public
* @param object UserPreference
* @return booleen
*/
	function __insertUserPreference($UserPreference)
	{
		return true;
	}

/**
* __updateUserPreference : methode apres modification d'une preferences utilisateur
* @abstract
* @access public
* @param object UserPreference
* @return booleen
*/
	function __updateUserPreference($UserPreference)
	{
		return true;
	}

/**
* __deleteUserPreference : methode avant suppression d'une preferences utilisateur
* @abstract
* @access public
* @param object UserPreference
* @return booleen
*/
	function __deleteUserPreference($UserPreference)
	{
		return true;
	}

 //
 // Session utilisateur
 //

/**
* __insertUserSession : methode apres ajout d'une session utilisateur
* @abstract
* @access public
* @param object UserSession
* @return booleen
*/
	function __insertUserSession($UserSession)
	{
		return true;
	}

/**
* __updateUserSession : methode apres modification d'une session utilisateur
* @abstract
* @access public
* @param object UserSession
* @return booleen
*/
	function __updateUserSession($UserSession)
	{
		return true;
	}

/**
* __deleteUserSession : methode avant suppression d'une session utilisateur
* @abstract
* @access public
* @param object UserSession
* @return booleen
*/
	function __deleteUserSession($UserSession)
	{
		return true;
	}


 //
 // Dependance entre les objets principaux
 //

 //
 // Droit (association entre noeud / utilisateur ou groupe / object de coordination
 //

/**
* __insertRight : methode apres ajout d'un droit
* @abstract
* @access public
* @param object Right
* @return booleen
*/
	function __insertRight($Right)
	{
		return true;
	}

/**
* __updateRight : methode apres modification d'un droit
* @abstract
* @access public
* @param object Right
* @return booleen
*/
	function __updateRight($Right)
	{
		return true;
	}

/**
* __deleteRight : methode avant suppression d'un droit
* @abstract
* @access public
* @param object Right
* @return booleen
*/
	function __deleteRight($Right)
	{
		return true;
	}

 //
 // GroupUser
 //

/**
* __insertGroupUser : methode apres ajout d'une association goupe et utilisateur
* @abstract
* @access public
* @param object GroupUser
* @return booleen
*/
	function __insertGroupUser($GroupUser)
	{
		return true;
	}

/**
* __updateGroupUser : methode apres modification d'une association goupe et utilisateur
* @abstract
* @access public
* @param object GroupUser
* @return booleen
*/
	function __updateGroupUser($GroupUser)
	{
		return true;
	}

/**
* __deleteGroupUser : methode avant suppression d'une association goupe et utilisateur
* @abstract
* @access public
* @param object GroupUser
* @return booleen
*/
	function __deleteGroupUser($GroupUser)
	{
		return true;
	}

 //
 // NodeGroupUser
 //

/**
* __insertNodeGroupUser : methode apres ajout d'une association noeud et goupe ou utilisateur
* @abstract
* @access public
* @param object NodeGroupUser
* @return booleen
*/
	function __insertNodeGroupUser($NodeGroupUser)
	{
		return true;
	}

/**
* __updateNodeGroupUser : methode apres modification d'une association noeud et goupe ou utilisateur
* @abstract
* @access public
* @param object NodeGroupUser
* @return booleen
*/
	function __updateNodeGroupUser($NodeGroupUser)
	{
		return true;
	}

/**
* __deleteNodeGroupUser : methode avant suppression d'une association noeud et goupe ou utilisateur
* @abstract
* @access public
* @param object NodeGroupUser
* @return booleen
*/
	function __deleteNodeGroupUser($NodeGroupUser)
	{
		return true;
	}

 //
 // Element de cache systeme 
 //

 //
 // TreeGroup (arbre de groupes)
 //

/**
* __addTreeGroup : methode apres ajout d'un arbre de groupe
* @abstract
* @access public
* @param object TreeGroup
* @return booleen
*/
	function __insertTreeGroup($TreeGroup)
	{
		return true;
	}

/**
* __updateTreeGroup : methode apres modification d'un arbre de groupe
* n'est pas utilisé actuellement.
* @abstract
* @access public
* @param object TreeGroup
* @return booleen
*/
	function __updateTreeGroup($TreeGroup)
	{
		return true;
	}

/**
* __deleteTreeGroup : methode avant suppression d'un arbre de groupe
* @abstract
* @access public
* @param object TreeGroup
* @return booleen
*/
	function __deleteTreeGroup($TreeGroup)
	{
		return true;
	}

 //
 // TreeNode (arbre de Noeuds)
 //

/**
* __insertTreeNode : methode apres ajout d'un arbre de groupe
* @abstract
* @access public
* @param object TreeNode
* @return booleen
*/
	function __insertTreeNode($TreeNode)
	{
		return true;
	}

/**
* __updateTreeNode : methode apres modification d'un arbre de groupe
* n'est pas utilisé actuellement.
* @abstract
* @access public
* @param object TreeNode
* @return booleen
*/
	function __updateTreeNode($TreeNode)
	{
		return true;
	}

/**
* __deleteTreeNode : methode avant suppression d'un arbre de groupe
* @abstract
* @access public
* @param object TreeNode
* @return booleen
*/
	function __deleteTreeNode($TreeNode)
	{
		return true;
	}


 //
 // ListUserGroup (arbres de groupes pour un utilisateur)
 //

/**
* __insertListUserGroup : methode apres ajout du cache des groupes d'un utilisateur
* @abstract
* @access public
* @param object ListUserGroup
* @return booleen
*/
	function __insertListUserGroup($ListUserGroup)
	{
		return true;
	}

/**
* __updateListUserGroup : methode apres modification du cache des groupes d'un utilisateur
* n'est pas utilisé actuellement.
* @abstract
* @access public
* @param object ListUserGroup
* @return booleen
*/
	function __updateListUserGroup($ListUserGroup)
	{
		return true;
	}

/**
* __deleteListUserGroup : methode avant suppression du cache des groupes d'un utilisateur
* @abstract
* @access public
* @param object ListUserGroup
* @return booleen
*/
	function __deleteListUserGroup($ListUserGroup)
	{
		return true;
	}

 //
 // ListUserNode (arbres de navigation pour un utilisateur)
 //

/**
* __insertListUserNode : methode apres ajout du cache de navigation d'un utilisateur
* @abstract
* @access public
* @param object ListUserNode
* @return booleen
*/
	function __insertListUserNode($ListUserNode)
	{
		return true;
	}

/**
* __updateListUserNode : methode apres modification du cache de navigation d'un utilisateur
* n'est pas utilisé actuellement.
* @abstract
* @access public
* @param object ListUserNode
* @return booleen
*/
	function __updateListUserNode($ListUserNode)
	{
		return true;
	}

/**
* __deleteListUserNode : methode avant suppression du cache de navigation d'un utilisateur
* @abstract
* @access public
* @param object ListUserNode
* @return booleen
*/
	function __deleteListUserNode($ListUserNode)
	{
		return true;
	}

 //
 // Permission (ensemble des droits d'un utilisateur)
 //

/**
* __insertPermission : methode apres ajout d'un objet permission
* @abstract
* @access public
* @param object TreeNode
* @return booleen
*/
	function __insertPermission($Permission)
	{
		return true;
	}

/**
* __updatePermission : methode apres modification d'un objet permission
* n'est pas utilisé actuellement.
* @abstract
* @access public
* @param object Permission
* @return booleen
*/
	function __updatePermission($Permission)
	{
		return true;
	}

/**
* __deletePermission : methode avant suppression d'un objet permission
* @abstract
* @access public
* @param object Permission
* @return booleen
*/
	function __deletePermission($Permission)
	{
		return true;
	}



/**
* __getInfo : methode executée après que le system ne soit executé
*<p>Cette methode à pour but d'être surchagée par le plugin<br>
*pour être executée lors de la demande d'information sur le plugin</p>
* @abstract
* @access public
* @return booleen
*/
	function __getInfo()
	{
		$tab=array();
		$tab["className"]=get_class($this);
		$tab["version"]	 =$this->getVersion();
		$tab["autor"]	 =$this->getAutor();
		$tab["comment"]	 =$this->getComment();
		return $tab;
	}
}
?>
