Ajout de la fonctionnalité d'upload de module.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php
|
||||
require 'Module.php';
|
||||
class AccueilModules {
|
||||
const CONFIG_FILE = 'db/config.xml';
|
||||
@@ -6,7 +6,7 @@ class AccueilModules {
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* Initialise le XML de conf g<EFBFBD>n<EFBFBD>rale
|
||||
* Initialise le XML de conf générale
|
||||
* Active les modules
|
||||
* Construit le menu
|
||||
*/
|
||||
@@ -25,7 +25,7 @@ class AccueilModules {
|
||||
|
||||
/**
|
||||
*
|
||||
* Initialise les modules activ<EFBFBD>s uniquement
|
||||
* Initialise les modules activés uniquement
|
||||
*/
|
||||
function getModules(){
|
||||
foreach($this->modules as $module=>$moduleConf){
|
||||
@@ -42,7 +42,7 @@ class AccueilModules {
|
||||
|
||||
/**
|
||||
*
|
||||
* Construit et ins<EFBFBD>re le menu de changement de config
|
||||
* Construit et insère le menu de changement de config
|
||||
*/
|
||||
function buildConfigMenu(){
|
||||
echo '<a href="#config" id="config-menu"><img src="images/interface/config.png" /></a>
|
||||
@@ -53,11 +53,16 @@ class AccueilModules {
|
||||
foreach($this->modules as $module=>$moduleConf){
|
||||
echo $module.' module : <input type="radio" name="'.$module.'_group" value="true"';
|
||||
if ($moduleConf->visibility == "true") echo " checked";
|
||||
echo '/>true <input type="radio" name="'.$module.'_group" value="false"';
|
||||
echo '/>activé <input type="radio" name="'.$module.'_group" value="false"';
|
||||
if ($moduleConf->visibility == "false") echo " checked";
|
||||
echo '/>false<br/><br/>';
|
||||
echo '/>desactivé<br/><br/>';
|
||||
}
|
||||
echo '<span id="config-submit" class="green-button">Enregistrer</span>
|
||||
</form><br/><br/>
|
||||
<h3>Ajout d\'un module</h3>
|
||||
<form action="includes/addModule.php" method="POST" enctype="multipart/form-data">
|
||||
<input type="file" name="newModuleFile" id="newModuleFile"/>
|
||||
<input type="submit" value="Envoyer"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>';
|
||||
@@ -82,13 +87,60 @@ class AccueilModules {
|
||||
|
||||
/**
|
||||
*
|
||||
* @property Chaque module poss<EFBFBD>de la fonction updateModule en static qui permet de changer un ou plusieurs de ses attributs
|
||||
* @param $module String Nom du module <EFBFBD> modifier
|
||||
* @param $things2change Array du ou des attributs <EFBFBD> modifier avec sa ou ses nouvelles valeurs
|
||||
* @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 '../modules/'.$module.'/'.ucfirst($module).'.php';
|
||||
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');
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user