diff --git a/install-new/init.php b/install-new/init.php index f186f242f..7224dc237 100644 --- a/install-new/init.php +++ b/install-new/init.php @@ -25,8 +25,6 @@ * International Registered Trademark & Property of PrestaShop SA */ -define('_PS_INSTALL_VERSION_', '1.5.0.4'); - // Generate common constants define('PS_INSTALLATION_IN_PROGRESS', true); define('_PS_INSTALL_PATH_', dirname(__FILE__).'/'); @@ -36,23 +34,31 @@ define('_PS_INSTALL_MODELS_PATH_', _PS_INSTALL_PATH_.'models/'); define('_PS_INSTALL_LANGS_PATH_', _PS_INSTALL_PATH_.'langs/'); define('_PS_INSTALL_FIXTURES_PATH_', _PS_INSTALL_PATH_.'fixtures/'); -define('__PS_BASE_URI__', str_replace('//', '/', '/'.trim(preg_replace('#/(install(-dev|-new)?)$#', '/', str_replace('\\', '/', dirname($_SERVER['REQUEST_URI']))), '/').'/')); -define('_THEME_NAME_', 'prestashop'); -require_once dirname(_PS_INSTALL_PATH_).'/config/defines.inc.php'; -require_once dirname(_PS_INSTALL_PATH_).'/config/defines_uri.inc.php'; +require_once(_PS_INSTALL_PATH_ . 'install_version.php'); + +// we check if theses constants are defined +// in order to use init.php in upgrade.php script +if (!defined('__PS_BASE_URI__')) + define('__PS_BASE_URI__', str_replace('//', '/', '/'.trim(preg_replace('#/(install(-dev|-new)?)$#', '/', str_replace('\\', '/', dirname($_SERVER['REQUEST_URI']))), '/').'/')); + +if (!defined('_THEME_NAME_')) + define('_THEME_NAME_', 'default'); + +require_once(dirname(_PS_INSTALL_PATH_).'/config/defines.inc.php'); +require_once(dirname(_PS_INSTALL_PATH_).'/config/defines_uri.inc.php'); // PrestaShop autoload is used to load some helpfull classes like Tools. // Add classes used by installer bellow. -require_once _PS_ROOT_DIR_.'/config/autoload.php'; -require_once _PS_ROOT_DIR_.'/config/alias.php'; -require_once _PS_INSTALL_PATH_.'classes/exception.php'; -require_once _PS_INSTALL_PATH_.'classes/languages.php'; -require_once _PS_INSTALL_PATH_.'classes/language.php'; -require_once _PS_INSTALL_PATH_.'classes/model.php'; -require_once _PS_INSTALL_PATH_.'classes/session.php'; -require_once _PS_INSTALL_PATH_.'classes/sqlLoader.php'; -require_once _PS_INSTALL_PATH_.'classes/xmlLoader.php'; -require_once _PS_INSTALL_PATH_.'classes/simplexml.php'; +require_once(_PS_ROOT_DIR_.'/config/autoload.php'); +require_once(_PS_ROOT_DIR_.'/config/alias.php'); +require_once(_PS_INSTALL_PATH_.'classes/exception.php'); +require_once(_PS_INSTALL_PATH_.'classes/languages.php'); +require_once(_PS_INSTALL_PATH_.'classes/language.php'); +require_once(_PS_INSTALL_PATH_.'classes/model.php'); +require_once(_PS_INSTALL_PATH_.'classes/session.php'); +require_once(_PS_INSTALL_PATH_.'classes/sqlLoader.php'); +require_once(_PS_INSTALL_PATH_.'classes/xmlLoader.php'); +require_once(_PS_INSTALL_PATH_.'classes/simplexml.php'); @set_time_limit(300); diff --git a/install-new/install_version.php b/install-new/install_version.php new file mode 100644 index 000000000..68aaa729a --- /dev/null +++ b/install-new/install_version.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision$ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('_PS_INSTALL_VERSION_', '1.5.0.4'); + diff --git a/install-new/upgrade/classes/AbstractLogger.php b/install-new/upgrade/classes/AbstractLogger.php new file mode 100644 index 000000000..1ac160eb5 --- /dev/null +++ b/install-new/upgrade/classes/AbstractLogger.php @@ -0,0 +1,111 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 6844 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class AbstractLoggerCore +{ + public $level; + protected $level_value = array( + 0 => 'DEBUG', + 1 => 'INFO', + 2 => 'WARNING', + 3 => 'ERROR', + ); + + const DEBUG = 0; + const INFO = 1; + const WARNING = 2; + const ERROR = 3; + + public function __construct($level = self::INFO) + { + if (array_key_exists((int)$level, $this->level_value)) + $this->level = $level; + else + $this->level = self::INFO; + } + + /** + * Log the message + * + * @param string message + * @param level + */ + abstract protected function logMessage($message, $level); + + /** + * Check the level and log the message if needed + * + * @param string message + * @param level + */ + public function log($message, $level = self::DEBUG) + { + if ($level >= $this->level) + $this->logMessage($message, $level); + } + + /** + * Log a debug message + * + * @param string message + */ + public function logDebug($message) + { + $this->log($message, self::DEBUG); + } + + /** + * Log an info message + * + * @param string message + */ + public function logInfo($message) + { + $this->log($message, self::INFO); + } + + /** + * Log a warning message + * + * @param string message + */ + public function logWarning($message) + { + $this->log($message, self::WARNING); + } + + /** + * Log an error message + * + * @param string message + */ + public function logError($message) + { + $this->log($message, self::ERROR); + } +} + diff --git a/install-new/upgrade/classes/AddConfToFile.php b/install-new/upgrade/classes/AddConfToFile.php new file mode 100644 index 000000000..86b044004 --- /dev/null +++ b/install-new/upgrade/classes/AddConfToFile.php @@ -0,0 +1,91 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision$ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AddConfToFile +{ + public $fd; + public $file; + public $mode; + public $error = false; + + public function __construct($file, $mode = 'r+') + { + $this->file = $file; + $this->mode = $mode; + $this->checkFile($file); + if ($mode == 'w' AND !$this->error) + if (!$res = @fwrite($this->fd, 'error = 6; + } + + public function __destruct() + { + if (!$this->error) + @fclose($this->fd); + } + + private function checkFile($file) + { + if (!$fd = @fopen($this->file, $this->mode)) + $this->error = 5; + elseif (!is_writable($this->file)) + $this->error = 6; + $this->fd = $fd; + } + + public function writeInFile($name, $data) + { + if (!$res = @fwrite($this->fd, + 'define(\''.$name.'\', \''.$this->checkString($data).'\');'."\n")) + { + $this->error = 6; + return false; + } + return true; + } + + public function writeEndTagPhp() + { + if (!$res = @fwrite($this->fd, '?>'."\n")) { + $this->error = 6; + return false; + } + return true; + } + + public function checkString($string) + { + if (get_magic_quotes_gpc()) + $string = stripslashes($string); + if (!is_numeric($string)) + { + $string = addslashes($string); + $string = strip_tags(nl2br($string)); + } + return $string; + } +} diff --git a/install-new/upgrade/classes/FileLogger.php b/install-new/upgrade/classes/FileLogger.php new file mode 100644 index 000000000..f599acf41 --- /dev/null +++ b/install-new/upgrade/classes/FileLogger.php @@ -0,0 +1,70 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 6844 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +class FileLoggerCore extends AbstractLogger +{ + protected $filename = ''; + + /** + * Write the message in the log file + * + * @param string message + * @param level + */ + protected function logMessage($message, $level) + { + $formatted_message = '*'.$this->level_value[$level].'* '."\t".date('Y/m/d - H:i:s').': '.$message."\r\n"; + return file_put_contents($this->getFilename(), $formatted_message, FILE_APPEND); + } + + /** + * Check if the specified filename is writable and set the filename + * + * @param string filename + */ + public function setFilename($filename) + { + if (is_writable(dirname($filename))) + $this->filename = $filename; + else + die('Directory '.dirname($filename).' is not writable'); + } + + /** + * Log the message + * + * @param string message + * @param level + */ + public function getFilename() + { + if (empty($this->filename)) + die('Filename is empty.'); + + return $this->filename; + } +} + diff --git a/install-new/upgrade/upgrade.php b/install-new/upgrade/upgrade.php index 80e90c0da..0f86b3e63 100644 --- a/install-new/upgrade/upgrade.php +++ b/install-new/upgrade/upgrade.php @@ -25,9 +25,63 @@ * International Registered Trademark & Property of PrestaShop SA */ +// note : this value wil l +if (!isset($display_type)) + $display_type = 'xml'; + $filePrefix = 'PREFIX_'; $engineType = 'ENGINE_TYPE'; +// Set execution time and time_limit to infinite if available +@set_time_limit(0); +@ini_set('max_execution_time', '0'); + +// setting the memory limit to 128M only if current is lower +$memory_limit = ini_get('memory_limit'); +if (substr($memory_limit,-1) != 'G' + AND ((substr($memory_limit,-1) == 'M' AND substr($memory_limit,0,-1) < 128) + OR is_numeric($memory_limit) AND (intval($memory_limit) < 131072)) +) + @ini_set('memory_limit','128M'); + +// redefine REQUEST_URI if empty (on some webservers...) +if (!isset($_SERVER['REQUEST_URI']) || $_SERVER['REQUEST_URI'] == '') + $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME']; +if ($tmp = strpos($_SERVER['REQUEST_URI'], '?')) + $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'], 0, $tmp); +$_SERVER['REQUEST_URI'] = str_replace('//', '/', $_SERVER['REQUEST_URI']); + +// retrocompatibility (is present in some upgrade scripts) +define('INSTALL_PATH', dirname(dirname(__FILE__)).'/'); + +require_once(INSTALL_PATH . 'install_version.php'); + +define('SETTINGS_FILE', INSTALL_PATH . '/../config/settings.inc.php'); + +if (file_exists(SETTINGS_FILE)) + include_once(SETTINGS_FILE); +else + die('settings.inc.php is missing (error code 30).'); + +// need for upgrade before 1.5 +if (!defined('__PS_BASE_URI__')) + define('__PS_BASE_URI__', str_replace('//', '/', '/'.trim(preg_replace('#/(install(-dev|-new)?)$#', '/', str_replace('\\', '/', dirname($_SERVER['REQUEST_URI']))), '/').'/')); + +// need for upgrade before 1.5 +if (!defined('_THEME_NAME_')) +define('_THEME_NAME_', 'default'); + +require_once(dirname(__FILE__).'/../init.php'); + +// set logger +require_once(_PS_INSTALL_PATH_.'upgrade/classes/AbstractLogger.php'); +eval('abstract class AbstractLogger extends AbstractLoggerCore{}'); +require_once(_PS_INSTALL_PATH_.'upgrade/classes/FileLogger.php'); +eval('class FileLogger extends FileLoggerCore{}'); + +$logger = new FileLogger(); +$logger->setFilename(_PS_ROOT_DIR_.'/log/'.@date('Ymd').'_upgrade.log'); + if (function_exists('date_default_timezone_set')) date_default_timezone_set('Europe/Paris'); @@ -35,33 +89,25 @@ if (function_exists('date_default_timezone_set')) if (defined('_PS_ROOT_DIR_') AND !defined('_PS_MODULE_DIR_')) define('_PS_MODULE_DIR_', _PS_ROOT_DIR_.'/modules/'); else if (!defined('_PS_MODULE_DIR_')) - define('_PS_MODULE_DIR_', INSTALL_PATH.'/../modules/'); + define('_PS_MODULE_DIR_', _PS_INSTALL_PATH_.'/../modules/'); if(!defined('_PS_INSTALLER_PHP_UPGRADE_DIR_')) - define('_PS_INSTALLER_PHP_UPGRADE_DIR_', INSTALL_PATH.DIRECTORY_SEPARATOR.'php/'); + define('_PS_INSTALLER_PHP_UPGRADE_DIR_', _PS_INSTALL_PATH_.'upgrade/php/'); + +if(!defined('_PS_INSTALLER_SQL_UPGRADE_DIR_')) + define('_PS_INSTALLER_SQL_UPGRADE_DIR_', _PS_INSTALL_PATH_.'upgrade/sql/'); //old version detection global $oldversion, $logger; $oldversion = false; -if (file_exists(SETTINGS_FILE) AND file_exists(DEFINES_FILE)) -{ - include_once(SETTINGS_FILE); - include_once(DEFINES_FILE); - $oldversion = _PS_VERSION_; -} -else -{ - $logger->logError('The config/settings.inc.php file was not found.'); - die(''."\n"); -} -if (!file_exists(DEFINES_FILE)) -{ - $logger->logError('The config/settings.inc.php file was not found.'); - die(''."\n"); -} -include_once(SETTINGS_FILE); +//sql file execution +global $requests, $warningExist; +$requests = ''; +$fail_result = ''; +$warningExist = false; + if (!defined('_THEMES_DIR_')) define('_THEMES_DIR_', __PS_BASE_URI__.'themes/'); @@ -71,53 +117,57 @@ if (!defined('_PS_JS_DIR_')) define('_PS_JS_DIR_', __PS_BASE_URI__.'js/'); if (!defined('_PS_CSS_DIR_')) define('_PS_CSS_DIR_', __PS_BASE_URI__.'css/'); -include_once(DEFINES_FILE); $oldversion = _PS_VERSION_; -$versionCompare = version_compare(INSTALL_VERSION, $oldversion); +$versionCompare = version_compare(_PS_INSTALL_VERSION_, $oldversion); if ($versionCompare == '-1') { $logger->logError('This installer is too old.'); - die(''."\n"); + $requests .= ''."\n"; } elseif ($versionCompare == 0) { - $logger->logError(sprintf('You already have the %s version.',INSTALL_VERSION)); - die(''."\n"); + $logger->logError(sprintf('You already have the %s version.',_PS_INSTALL_VERSION_)); + $fail_result .= ''."\n"; } elseif ($versionCompare === false) { $logger->logError('There is no older version. Did you delete or rename the config/settings.inc.php file?'); - die(''."\n"); + $fail_result .= ''."\n"; } //check DB access -include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); -$resultDB = ToolsInstall::checkDB(_DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_, false); +// include_once(_PS_INSTALL_PATH_.'/classes/ToolsInstall.php'); +// $resultDB = ToolsInstall::checkDB(_DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_, false); +/* if ($resultDB !== true) { $logger->logError('Invalid database configuration.'); die("\n"); } +*/ +// //custom sql file creation $upgradeFiles = array(); -if ($handle = opendir(INSTALL_PATH.'/sql/upgrade')) +if (empty ($fail_result)) { - while (false !== ($file = readdir($handle))) - if ($file != '.' AND $file != '..') - $upgradeFiles[] = str_replace(".sql", "", $file); - closedir($handle); + if ($handle = opendir(_PS_INSTALLER_SQL_UPGRADE_DIR_)) + { + while (false !== ($file = readdir($handle))) + if ($file != '.' AND $file != '..') + $upgradeFiles[] = str_replace(".sql", "", $file); + closedir($handle); + } + if (empty($upgradeFiles)) + { + $logger->logError('Can\'t find the sql upgrade files. Please verify that the /install/sql/upgrade folder is not empty)'); + $fail_result .= ''."\n"; + } + natcasesort($upgradeFiles); } -if (empty($upgradeFiles)) -{ - $logger->logError('Can\'t find the sql upgrade files. Please verify that the /install/sql/upgrade folder is not empty)'); - die(''."\n"); -} -natcasesort($upgradeFiles); -$neededUpgradeFiles = array(); // fix : complete version number if there is not all 4 numbers // for example replace 1.4.3 by 1.4.3.0 @@ -132,22 +182,23 @@ if ($versionNumbers != 4) $oldversion = implode('.', $arrayVersion); // end of fix +$neededUpgradeFiles = array(); foreach ($upgradeFiles AS $version) { - - if (version_compare($version, $oldversion) == 1 AND version_compare(INSTALL_VERSION, $version) != -1) - $neededUpgradeFiles[] = $version; + if (version_compare($version, $oldversion) == 1 AND version_compare(_PS_INSTALL_VERSION_, $version) != -1) + $neededUpgradeFiles[] = $version; } -if (empty($neededUpgradeFiles)) +if (empty ($fail_result) && empty($neededUpgradeFiles)) { $logger->logError('No upgrade is possible.'); - die(''."\n"); + $fail_result .= ''."\n"; } -//refresh conf file -require_once(INSTALL_PATH.'/classes/AddConfToFile.php'); +// refresh conf file +require_once(_PS_INSTALL_PATH_.'upgrade/classes/AddConfToFile.php'); + $oldLevel = error_reporting(E_ALL); $mysqlEngine = (defined('_MYSQL_ENGINE_') ? _MYSQL_ENGINE_ : 'MyISAM'); $datas = array( @@ -166,7 +217,7 @@ $datas = array( array('_COOKIE_KEY_', _COOKIE_KEY_), array('_COOKIE_IV_', _COOKIE_IV_), array('_PS_CREATION_DATE_', defined("_PS_CREATION_DATE_") ? _PS_CREATION_DATE_ : date('Y-m-d')), - array('_PS_VERSION_', INSTALL_VERSION) + array('_PS_VERSION_', _PS_INSTALL_VERSION_) ); if (defined('_RIJNDAEL_KEY_')) $datas[] = array('_RIJNDAEL_KEY_', _RIJNDAEL_KEY_); @@ -184,49 +235,128 @@ if(isset($_GET['customModule']) AND $_GET['customModule'] == 'desactivate') deactivate_custom_modules(); } -foreach($neededUpgradeFiles AS $version) -{ - $file = INSTALL_PATH.'/sql/upgrade/'.$version.'.sql'; - if (!file_exists($file)) +if (empty($fail_result)) + foreach($neededUpgradeFiles AS $version) { - $logger->logError('Error while loading sql upgrade file.'); - die(''."\n"); + $file = _PS_INSTALLER_SQL_UPGRADE_DIR_.$version.'.sql'; + if (!file_exists($file)) + { + $logger->logError('Error while loading sql upgrade file.'); + $fail_result .= ''."\n"; + } + if (!$sqlContent .= file_get_contents($file)) + { + $logger->logError(sprintf('Error while loading sql upgrade file %s.', $version)); + $fail_result .= ''."\n"; + } + $sqlContent .= "\n"; } - if (!$sqlContent .= file_get_contents($file)) - { - $logger->logError(sprintf('Error while loading sql upgrade file %s.', $version)); - die(''."\n"); - } - $sqlContent .= "\n"; -} $sqlContent = str_replace(array($filePrefix, $engineType), array(_DB_PREFIX_, $mysqlEngine), $sqlContent); $sqlContent = preg_split("/;\s*[\r\n]+/",$sqlContent); -error_reporting($oldLevel); -$confFile = new AddConfToFile(SETTINGS_FILE, 'w'); -if ($confFile->error) +if (empty($fail_result)) { - $logger->logError($confFile->error); - die(''."\n"); + error_reporting($oldLevel); + $confFile = new AddConfToFile(SETTINGS_FILE, 'w'); + if ($confFile->error) + { + $logger->logError($confFile->error); + $fail_result .= ''."\n"; + } + else + foreach ($datas AS $data) + $confFile->writeInFile($data[0], $data[1]); + if ($confFile->error != false) + { + $logger->logError($confFile->error); + $fail_result .= ''."\n"; + } } -foreach ($datas AS $data){ - $confFile->writeInFile($data[0], $data[1]); -} -if ($confFile->error != false) -{ - $logger->logError($confFile->error); - die(''."\n"); -} +Configuration::loadConfiguration(); + +if (empty($fail_result)); + foreach ($sqlContent as $query) + { + $query = trim($query); + if(!empty($query)) + { + /* If php code have to be executed */ + if (strpos($query, '/* PHP:') !== false) + { + /* Parsing php code */ + $pos = strpos($query, '/* PHP:') + strlen('/* PHP:'); + $phpString = substr($query, $pos, strlen($query) - $pos - strlen(' */;')); + $php = explode('::', $phpString); + preg_match('/\((.*)\)/', $phpString, $pattern); + $paramsString = trim($pattern[0], '()'); + preg_match_all('/([^,]+),? ?/', $paramsString, $parameters); + if (isset($parameters[1])) + $parameters = $parameters[1]; + else + $parameters = array(); + if (is_array($parameters)) + foreach ($parameters AS &$parameter) + $parameter = str_replace('\'', '', $parameter); + + /* Call a simple function */ + if (strpos($phpString, '::') === false) + { + $func_name = str_replace($pattern[0], '', $php[0]); + require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.$func_name.'.php'); + $phpRes = call_user_func_array($func_name, $parameters); + } + /* Or an object method */ + else + { + $func_name = array($php[0], str_replace($pattern[0], '', $php[1])); + $phpRes = call_user_func_array($func_name, $parameters); + } + if ((is_array($phpRes) AND !empty($phpRes['error'])) OR $phpRes === false ) + { + $logger->logError('PHP error: '.$query."\r\n".(empty($phpRes['msg'])?'':' - '.$phpRes['msg'])); + $logger->logError(empty($phpRes['error'])?'':$phpRes['error']); + $requests .= + ' + + + + '."\n"; + } + else + $requests .= + ' + + '."\n"; + } + elseif(!Db::getInstance()->execute($query)) + { + $logger->logError('SQL query: '."\r\n".$query); + $logger->logError('SQL error: '."\r\n".Db::getInstance()->getMsgError()); + $warningExist = true; + $requests .= + ' + + getMsgError()).']]> + getNumberError()).']]> + '."\n"; + } + else + $requests .= + ' + + '."\n"; + } + } // Settings updated, compile and cache directories must be emptied $arrayToClean = array( - INSTALL_PATH.'/../tools/smarty/cache/', - INSTALL_PATH.'/../tools/smarty/compile/', - INSTALL_PATH.'/../tools/smarty_v2/cache/', - INSTALL_PATH.'/../tools/smarty_v2/compile/'); + _PS_INSTALL_PATH_.'/../tools/smarty/cache/', + _PS_INSTALL_PATH_.'/../tools/smarty/compile/', + _PS_INSTALL_PATH_.'/../tools/smarty_v2/cache/', + _PS_INSTALL_PATH_.'/../tools/smarty_v2/compile/'); foreach ($arrayToClean as $dir) if (!file_exists($dir)) $logger->logError('directory '.$dir." doesn't exist and can't be emptied.\r\n"); @@ -243,91 +373,29 @@ if($depth) CacheFs::createCacheDirectories((int)$depth); } -//sql file execution -global $requests, $warningExist; -$requests = ''; -$warningExist = false; - -Configuration::loadConfiguration(); - -foreach ($sqlContent as $query) +$result = ''; +if (empty($fail_result)) { - $query = trim($query); - if(!empty($query)) - { - /* If php code have to be executed */ - if (strpos($query, '/* PHP:') !== false) - { - /* Parsing php code */ - $pos = strpos($query, '/* PHP:') + strlen('/* PHP:'); - $phpString = substr($query, $pos, strlen($query) - $pos - strlen(' */;')); - $php = explode('::', $phpString); - preg_match('/\((.*)\)/', $phpString, $pattern); - $paramsString = trim($pattern[0], '()'); - preg_match_all('/([^,]+),? ?/', $paramsString, $parameters); - if (isset($parameters[1])) - $parameters = $parameters[1]; - else - $parameters = array(); - if (is_array($parameters)) - foreach ($parameters AS &$parameter) - $parameter = str_replace('\'', '', $parameter); - - /* Call a simple function */ - if (strpos($phpString, '::') === false) - { - $func_name = str_replace($pattern[0], '', $php[0]); - require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.$func_name.'.php'); - $phpRes = call_user_func_array($func_name, $parameters); - } - /* Or an object method */ - else - { - $func_name = array($php[0], str_replace($pattern[0], '', $php[1])); - $phpRes = call_user_func_array($func_name, $parameters); - } - if ((is_array($phpRes) AND !empty($phpRes['error'])) OR $phpRes === false ) - { - $logger->logError('PHP error: '.$query."\r\n".(empty($phpRes['msg'])?'':' - '.$phpRes['msg'])); - $logger->logError(empty($phpRes['error'])?'':$phpRes['error']); - if (!isset($request)) - $request = ''; - $request .= -' - - - - '."\n"; - } - else - $requests .= -' - - '."\n"; - } - elseif(!Db::getInstance()->execute($query)) - { - $logger->logError('SQL query: '."\r\n".$query); - $logger->logError('SQL error: '."\r\n".Db::getInstance()->getMsgError()); - $warningExist = true; - $requests .= -' - - getMsgError()).']]> - getNumberError()).']]> - '."\n"; - } - else - $requests .= -' - - '."\n"; - } + Configuration::updateValue('PS_HIDE_OPTIMIZATION_TIPS', 0); + Configuration::updateValue('PS_NEED_REBUILD_INDEX', 1); + Configuration::updateValue('PS_VERSION_DB', _PS_INSTALL_VERSION_); + $result .= $warningExist ? ''."\n" : ''."\n"; + $result .= $requests; + $result .= ''."\n"; } -Configuration::updateValue('PS_HIDE_OPTIMIZATION_TIPS', 0); -Configuration::updateValue('PS_NEED_REBUILD_INDEX', 1); -Configuration::updateValue('PS_VERSION_DB', INSTALL_VERSION); -$result = $warningExist ? ''."\n" : ''."\n"; -$result .= $requests; -die($result.''."\n"); +else + $result = $fail_result; +switch ($display_type) +{ + case 'json': + $result = json_encode(simplexml_load_string($result)); + break; + default: + case 'xml': + // XML Header + header('Content-Type: text/xml'); + break; +} + +echo $result;