. * */ defined('APP_ROOT') || die(_('No es posible acceder directamente a este archivo')); /** * Esta clase es la encargada de realizar las operaciones actualización de la aplicación. */ class SP_Upgrade { private static $result = array(); private static $upgrade = array(110,1121); /** * @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); if ($resUpgrade === FALSE){ SP_Init::initError( _('Error al aplicar la actualización de la Base de Datos'), _('Compruebe el registro de eventos para más detalles').'. '._('Acceder').''); } 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'); switch ($version) { case 110: $queries[] = "ALTER TABLE `accFiles` CHANGE COLUMN `accfile_name` `accfile_name` VARCHAR(100) NOT NULL"; $queries[] = "ALTER TABLE `accounts` ADD COLUMN `account_otherGroupEdit` BIT(1) NULL DEFAULT 0 AFTER `account_dateEdit`, ADD COLUMN `account_otherUserEdit` BIT(1) NULL DEFAULT 0 AFTER `account_otherGroupEdit`;"; $queries[] = "CREATE TABLE `accUsers` (`accuser_id` INT NOT NULL AUTO_INCREMENT,`accuser_accountId` INT(10) UNSIGNED NOT NULL,`accuser_userId` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`accuser_id`), INDEX `idx_account` (`accuser_accountId` ASC));"; $queries[] = "ALTER TABLE `accHistory` ADD COLUMN `accHistory_otherUserEdit` BIT NULL AFTER `acchistory_mPassHash`, ADD COLUMN `accHistory_otherGroupEdit` VARCHAR(45) NULL AFTER `accHistory_otherUserEdit`;"; $queries[] = "ALTER TABLE `accFiles` CHANGE COLUMN `accfile_type` `accfile_type` VARCHAR(100) NOT NULL ;"; break; case 1121: $queries[] = "ALTER TABLE `categories` ADD COLUMN `category_description` VARCHAR(255) NULL AFTER `category_name`;"; $queries[] = "ALTER TABLE `usrProfiles` ADD COLUMN `userProfile_pAppMgmtMenu` BIT(1) NULL DEFAULT b'0' AFTER `userProfile_pUsersMenu`,CHANGE COLUMN `userProfile_pConfigCategories` `userProfile_pAppMgmtCategories` BIT(1) NULL DEFAULT b'0' AFTER `userProfile_pAppMgmtMenu`,ADD COLUMN `userProfile_pAppMgmtCustomers` BIT(1) NULL DEFAULT b'0' AFTER `userProfile_pAppMgmtCategories`;"; break; default : self::$result['text'][] = _('No es necesario actualizar la Base de Datos.'); return TRUE; } foreach ($queries as $query) { if (DB::doQuery($query, __FUNCTION__) === FALSE && DB::$numError != 1060 && DB::$numError != 1050) { self::$result['text'][] = _('Error al aplicar la actualización de la Base de Datos.'); return FALSE; } } self::$result['text'][] = _('Actualización de la Base de Datos realizada correctamente.'); return TRUE; } }