From 0e32dec3dc86c921ce0808d4245f46405cffc3aa Mon Sep 17 00:00:00 2001 From: nuxsmin Date: Sun, 19 Jan 2014 12:54:48 +0100 Subject: [PATCH] Improved upgrade checks --- inc/init.php | 24 ++++++++++++++---------- inc/upgrade.class.php | 28 +++++++++++++++++++++------- js/functions.js | 6 ++++-- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/inc/init.php b/inc/init.php index abdde454..28e5d934 100644 --- a/inc/init.php +++ b/inc/init.php @@ -456,21 +456,25 @@ class SP_Init { } $update = FALSE; - $configVersion = SP_Config::getValue('version'); - $databaseVersion = SP_Config::getConfigValue('version'); - $appVersion = implode('.', SP_Util::getVersion()); - - if ( $configVersion != $appVersion ){ - SP_Config::setValue('version', $appVersion); - $update = TRUE; - } + $configVersion = (int) str_replace('.', '', SP_Config::getValue('version')); + $databaseVersion = (int) str_replace('.', '', SP_Config::getConfigValue('version')); + $appVersion = (int) implode(SP_Util::getVersion()); - if ( $databaseVersion != $appVersion && SP_Common::parseParams('g', 'nodbupgrade', 0) === 0){ - if ( self::checkMaintenanceMode(TRUE) && SP_Upgrade::doUpgrade() ){ + if ( $databaseVersion < $appVersion && SP_Common::parseParams('g', 'nodbupgrade', 0) === 0){ + if ( SP_Upgrade::needUpgrade($appVersion) && ! self::checkMaintenanceMode(TRUE) ){ + self::initError(_('La aplicación necesita actualizarse'), _('Contacte con el administrador')); + } + + if ( SP_Upgrade::doUpgrade($appVersion) ){ SP_Config::setConfigValue('version', $appVersion); $update = TRUE; } } + + if ( $configVersion < $appVersion ){ + SP_Config::setValue('version', $appVersion); + $update = TRUE; + } if ( $update === TRUE ){ $message['action'] = _('Actualización'); diff --git a/inc/upgrade.class.php b/inc/upgrade.class.php index 96673770..7ed6b92a 100644 --- a/inc/upgrade.class.php +++ b/inc/upgrade.class.php @@ -30,14 +30,15 @@ defined('APP_ROOT') || die(_('No es posible acceder directamente a este archivo' */ class SP_Upgrade { private static $result = array(); + private static $upgrade = array(110); - public static function doUpgrade() { - $currentDBVersion = (int) str_replace('.', '', SP_Config::getConfigValue('version')); - $version = (int) implode(SP_Util::getVersion()); - - if ($currentDBVersion < $version) { - $resUpgrade = self::upgradeTo($version); - } + /** + * @brief Inicia el proceso de actualización de la BBDD + * @param int $version con la versión a actualizar + * @returns bool + */ + public static function doUpgrade($version) { + $resUpgrade = self::upgradeTo($version); SP_Common::wrLogInfo(self::$result); @@ -50,6 +51,19 @@ class SP_Upgrade { return TRUE; } + /** + * @brief Comprueba si es necesario actualizar la BBDD + * @returns bool + */ + public static function needUpgrade($version){ + return ( in_array($version, self::$upgrade) ); + } + + /** + * @brief Actualiza la BBDD según la versión + * @param int $version con la versión a actualizar + * @returns bool + */ private static function upgradeTo($version) { self::$result['action'] = _('Actualizar BBDD'); diff --git a/js/functions.js b/js/functions.js index ff5d599f..c95eac12 100644 --- a/js/functions.js +++ b/js/functions.js @@ -276,8 +276,10 @@ function doLogin(){ } function doLogout() { - if ( window.location.search != '' ){ - location.href = 'index.php' + window.location.search + '&logout=1'; + var url = window.location.search; + + if ( url.length > 0 ){ + location.href = 'index.php' + url + '&logout=1'; } else{ location.href = 'index.php?logout=1'; }