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,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);
}
}*/
/**
*