allVersions = $versions;
$this->plxAdmin = plxAdmin::getInstance();
$this->getVersions();
}
/**
* Méthode chargée de démarrer les mises à jour
*
* @param version précédente version de pluxml à mettre à jour, sélectionner par l'utilisateur
* @return null
* @author Stéphane F
**/
public function startUpdate($version='') {
# suppression des versions qui ont déjà été mises à jour
$offset = array_search($version, array_keys($this->allVersions));
if($offset!='') {
$this->allVersions = array_slice($this->allVersions, $offset+1, null, true);
}
# démarrage des mises à jour
if($this->doUpdate())
$this->updateVersion();
}
/**
* Méthode qui récupère l'ancien et le nouveau n° de version de pluxml
*
* @return null
* @author Stéphane F
**/
public function getVersions() {
# Récupère l'ancien n° de version de Pluxml
if(isset($this->plxAdmin->aConf['version']))
$this->oldVersion = $this->plxAdmin->aConf['version'];
if(!isset($this->allVersions[$this->oldVersion]))
$this->oldVersion='';
# Récupère le nouveau n° de version de PluXml
if(is_readable(PLX_ROOT.'version')) {
$f = file(PLX_ROOT.'version');
$this->newVersion = $f['0'];
}
}
/**
* Méthode qui met à jour le n° de version dans le fichier parametres.xml
*
* @return null
* @author Stéphane F
**/
public function updateVersion() {
# on relit le fichier de paramètre pour récupérer les éventuels nouveaux ajoutés par la mise à jour
$this->plxAdmin->getConfiguration(path('XMLFILE_PARAMETERS'));
$new_params['version'] = $this->newVersion;
$this->plxAdmin->editConfiguration($this->plxAdmin->aConf, $new_params);
printf(L_UPDATE_ENDED.'
', $this->newVersion);
}
/**
* Méthode qui execute les mises à jour étape par étape
*
* @return stdout
* @author Stéphane F
**/
public function doUpdate() {
$errors = false;
foreach($this->allVersions as $num_version => $upd_filename) {
if($upd_filename!='') {
echo '
'.L_UPDATE_INPROGRESS.' '.$num_version.'
'; # inclusion du fichier de mise à jour include(PLX_UPDATE.$upd_filename); # création d'un instance de l'objet de mise à jour $class_name = 'update_'.str_replace('.', '_', $num_version); $class_update = new $class_name(); # appel des différentes étapes de mise à jour $next = true; $step = 1; while($next AND !$errors) { $method_name = 'step'.$step; if(method_exists($class_name, $method_name)) { if(!$class_update->$method_name()) { $errors = true; # erreur détectée } else { $step++; # étape suivante } } else $next = false; } echo ''.L_UPDATE_ERROR.'
'; else echo ''.L_UPDATE_SUCCESSFUL.'
'; return !$errors; } } /** * Classe plxUpdate responsable d'exécuter des actions de mises à jour * * @package PLX * @author Stephane F **/ class plxUpdate { protected $plxAdmin; # objet de type plxAdmin /** * Constructeur qui initialise l'objet plxAdmin par référence * * @return null * @author Stephane F **/ public function __construct() { $this->plxAdmin = plxAdmin::getInstance(); if(!isset($this->plxAdmin->aConf['plugins'])) $this->plxAdmin->aConf['plugins']='data/configuration/plugins.xml'; } /** * Méthode qui met à jour le fichier parametre.xml en important les nouveaux paramètres * * @param new_params tableau contenant la liste des nouveaux paramètres avec leur valeur par défaut. * @return stdio * @author Stéphane F **/ public function updateParameters($new_params) { # enregistrement des nouveaux paramètres $ret = $this->plxAdmin->editConfiguration($this->plxAdmin->aConf, $new_params); # valeur de retour return $ret.'