item;
foreach($config_xml as $item){
$this->modules["$item[id]"] = $item;
}
}else{
echo 'Impossible de trouver le fichier de configuration.';
}
}
/**
*
* Initialise les modules activés uniquement
*/
function getModules(){
foreach($this->modules as $module=>$moduleConf){
if(file_exists('modules/'.$module.'/'.ucfirst($module).'.php') && $moduleConf->visibility == "true"){
$params = array();
foreach($moduleConf as $confParam){
$params[$confParam->getName()] = "$confParam";
}
$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;
}
}
/**
*
* Construit et insère le menu de changement de config
*/
function buildConfigMenu(){
echo '
';
echo '';
}
/**
*
* @property Chaque module possède la fonction updateModule en static qui permet de changer un ou plusieurs de ses attributs
* @param $module String Nom du module à modifier
* @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 'Module.php';
//require '../modules/'.$module.'/'.ucfirst($module).'.php';
$module = new $module();
return call_user_func(array($module, "updateConfig"), $things2change);
}*/
/**
*
* Fonction d'ajout de module dans le fichier de config
*/
public static function addModule($file, $name)
{
if($config = simplexml_load_file('../'.self::CONFIG_FILE)){
foreach($config->item as $item){
if($item['id'] == $name)
exit ('module déjà présent !');
}
}
if(class_exists('ZipArchive')){
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
$zip->extractTo('../modules/');
$zip->close();
if(!file_exists('../modules/'.$name.'/'.ucfirst($name).'.php'))
exit ('L\'extraction n\'a pas fonctionné...');
else{
unlink ($file);
require '../modules/'.$name.'/'.ucfirst($name).'.php';
if($config = simplexml_load_file('../'.self::CONFIG_FILE)){
$newItem = $config->addChild('item');
$newItem->addAttribute('id', $name);
$params = call_user_func(array($name, 'getParamList'));
foreach($params as $param){
if($param == 'visibility')
$newItem->AddChild($param, 'true');
else
$newItem->AddChild($param, '0');
}
$config->asXML('../'.self::CONFIG_FILE);
echo 'Module enregistré. Vous pouvez revenir à la page d\'accueil';
}else{
exit ('L\'enregistrement dans le menu a échoué...');
}
}
} else {
exit ('failed, code:' . $res);
}
}else{
exit ('Votre serveur ne peut installer les modules automatiquement. Merci de passer par votre client FTP habituel ou d\'ajouter la classe ZipArchive à votre serveur PHP');
}
}
}