<?php 
class Module
{
	/**
	* Liste des paramètres du module en concordance avec le "config.xml"
	* Ses éléments ne peuvent être modifiés
	* @var array
	*/
	protected static $paramsList = array();
	
	// Nom du module (aka le nom de la classe en minuscule)
	protected $moduleName;
	
	// Libellé du module (aka le nom affiché)
	protected $moduleTitle;
	
	// Le chemin vers le module
	protected $pathToModule;
	
	/**
	* Liste des paramètres et leurs valeurs de l'object
	*
	* @var array
	*/
	private $params = array();
	
	public function __construct($class, $params){
		$this->setNames($class, $this->moduleTitle);
		$this->setParams($params);
	}
	
	/**
	 * @param array correspondant aux paramètres du $paramsList
	 * Applique les paramètres du module depuis le conf
	 */
	public function setParams($params){
		$this->params = $params;
	}
	
	/**
	 * @return Array les paramètres du module
	 */
	public function getParams(){
		return $this->params;
	}
	
	/**
	 * @param string le paramètre dont on veut la valeur
	 * @return string valeur du paramètre
	 */
	public function getParam($param){
		if(isset($this->params[$param]))
			return $this->params[$param];
		else
			return;
	}
	
	/**
	 * @return string le nom de la classe (du module)
	 */
	private function getModuleName(){
		return $this->moduleName;
	}
	
	/**
	 * Donne les noms et chemins du module
	 */
	private function setNames($module, $libelle){
		$this->moduleName 	= $module;
		$this->pathToModule = 'modules/'.$this->moduleName.'/';
		$this->moduleTitle	= $libelle;
	}
	
	/**
	 * @param $class string nom du module
	 * @param $key string le nom du paramètre à changer
	 * @param $value string valeur du paramètre
	 * Enregistre le paramètre dans le conf
	 */
	public function setParam($class, $key, $value) {
		echo 'setting :'.$key.' as '.$value.' in the '.$class.'\'s module';
        $xmla = simplexml_load_file('../'.AccueilModules::CONFIG_FILE);

		$path = $xmla->xpath("//item[@id='".$class."']"); 
		$path[0]->$key = $value;
		
		$xmla->asXML('../'.AccueilModules::CONFIG_FILE);
     }
	 
	public function updateConfig($updated){
		foreach ($updated as $what=>$withWhat){
			if(array_key_exists($what, $this->getParams())){
				$this->setParam($this->moduleName, $what, $withWhat);
			}else{
				echo $what.' isn\'t in ';
			}
		}		
	}
	
}