Amélioration de l'organisation du code : la classe principale "Module" est maintenant prête et les modules l'ont bien étendue.

This commit is contained in:
Chouchen
2010-10-05 15:30:04 +00:00
parent ac017b84e9
commit 759a5556cc
25 changed files with 236 additions and 706 deletions

View File

@@ -1,5 +1,5 @@
<?php
abstract class Module
class Module
{
/**
* Liste des paramètres du module en concordance avec le "config.xml"
@@ -22,20 +22,79 @@ abstract class Module
*
* @var array
*/
public $params = array();
private $params = array();
private function setParams($params){
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;
}
abstract static function start($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);
public static function updateConfig($updated){
$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(in_array($what, self::$paramsList)){
call_user_func(array(get_class(), "set".ucfirst($what)), $withWhat);
if(array_key_exists($what, $this->getParams())){
$this->setParam($this->moduleName, $what, $withWhat);
}else{
echo $what.' isn\'t in ';
}
}
}
}
}