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:
@@ -1,14 +1,23 @@
|
||||
<?php
|
||||
require 'Module.php';
|
||||
function __autoload($class)
|
||||
{
|
||||
$BASE_DIR = '/homez.9/shikiryu/www/test/trunk3/';
|
||||
set_include_path($BASE_DIR);
|
||||
$path = 'modules/'.$class;
|
||||
if(file_exists($path . DIRECTORY_SEPARATOR . ucfirst($class) . '.php') || file_exists($BASE_DIR . $path . DIRECTORY_SEPARATOR . ucfirst($class) . '.php')){
|
||||
require_once($path . DIRECTORY_SEPARATOR . ucfirst($class) . '.php');
|
||||
}else{
|
||||
require_once('class/' . $class . '.php');
|
||||
}
|
||||
}
|
||||
class AccueilModules {
|
||||
|
||||
const CONFIG_FILE = 'db/config.xml';
|
||||
private $modules = array();
|
||||
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* Initialise le XML de conf générale
|
||||
* Active les modules
|
||||
* Construit le menu
|
||||
*/
|
||||
function __construct(){
|
||||
if($config = simplexml_load_file(self::CONFIG_FILE)){
|
||||
@@ -16,8 +25,6 @@ class AccueilModules {
|
||||
foreach($config_xml as $item){
|
||||
$this->modules["$item[id]"] = $item;
|
||||
}
|
||||
$this->getModules();
|
||||
$this->buildConfigMenu();
|
||||
}else{
|
||||
echo 'Impossible de trouver le fichier de configuration.';
|
||||
}
|
||||
@@ -34,11 +41,40 @@ class AccueilModules {
|
||||
foreach($moduleConf as $confParam){
|
||||
$params[$confParam->getName()] = "$confParam";
|
||||
}
|
||||
require 'modules/'.$module.'/'.ucfirst($module).'.php';
|
||||
call_user_func(array($module, "start"), $params);
|
||||
$module = new $module($params);
|
||||
if(is_subclass_of($module,'Module'))
|
||||
$module->build();
|
||||
// require 'modules/'.$module.'/'.ucfirst($module).'.php';
|
||||
// call_user_func(array($module, "start"), $module, $params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return le module donné avec ses paramètres actuellement présent en conf
|
||||
*/
|
||||
public static function getModule($module){
|
||||
if($config = simplexml_load_file('../'.self::CONFIG_FILE)){
|
||||
$config_xml = $config->item;
|
||||
foreach($config_xml as $item){
|
||||
if($item["id"] == $module){
|
||||
$params = array();
|
||||
foreach($item as $confParam){
|
||||
$params[$confParam->getName()] = "$confParam";
|
||||
}
|
||||
//require '../modules/'.$module.'/'.ucfirst($module).'.php';
|
||||
return new $module($params);
|
||||
}
|
||||
}
|
||||
echo "object not found";
|
||||
return;
|
||||
}else{
|
||||
echo "bad persistance";
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -92,10 +128,12 @@ class AccueilModules {
|
||||
* @param $things2change Array du ou des attributs à modifier avec sa ou ses nouvelles valeurs
|
||||
* @return "ok" String si c'est bon, ou le message d'erreur
|
||||
*/
|
||||
public static function updateModule($module, $things2change){
|
||||
require '../modules/'.$module.'/'.ucfirst($module).'.php';
|
||||
/*public static function updateModule($module, $things2change){
|
||||
//require 'Module.php';
|
||||
//require '../modules/'.$module.'/'.ucfirst($module).'.php';
|
||||
$module = new $module();
|
||||
return call_user_func(array($module, "updateConfig"), $things2change);
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
*
|
||||
|
@@ -94,8 +94,9 @@ class GoogleWeatherAPI {
|
||||
}
|
||||
|
||||
} else {
|
||||
trigger_error('Google results parse problem : http error '.$getContentCode,E_USER_WARNING);
|
||||
return null;
|
||||
//trigger_error('Google results parse problem : http error '.$getContentCode,E_USER_WARNING);
|
||||
$this->is_found = false;
|
||||
//return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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 ';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user