From eb8f89f265c15e90d05da9e9b84cad2ed3fa5fa7 Mon Sep 17 00:00:00 2001 From: Gregory Roussac Date: Thu, 3 Jan 2013 10:44:11 +0100 Subject: [PATCH] [*] Installer : Lower memory for update_order_messages.php --- .../upgrade/php/update_order_messages.php | 74 +++++++++++++++++++ install-dev/upgrade/sql/1.5.3.0.sql | 2 +- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 install-dev/upgrade/php/update_order_messages.php diff --git a/install-dev/upgrade/php/update_order_messages.php b/install-dev/upgrade/php/update_order_messages.php new file mode 100644 index 000000000..ffe9983cb --- /dev/null +++ b/install-dev/upgrade/php/update_order_messages.php @@ -0,0 +1,74 @@ + +* @copyright 2007-2012 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function update_order_messages() +{ + $step = 3000; + $count_messages = Db::getInstance()->getValue('SELECT count(id_message) FROM '._DB_PREFIX_.'message'); + $nb_loop = $start = 0; + if($count_messages > 0) + $nb_loop = ceil($count_messages / $step); + for($i = 0; $i < $nb_loop; $i++) + { + $sql = 'SELECT id_message, message FROM '._DB_PREFIX_.'message LIMIT '.(int)$start.', '.(int)$step; + if ($messages = Db::getInstance()->executeS($sql)) + { + if(is_array($messages)) + foreach($messages as $message) + { + $sql = 'UPDATE '._DB_PREFIX_.'message SET message = \''.pSQL(Tools::htmlentitiesDecodeUTF8(br2nl($message['message']))).'\' + WHERE id_message = '.(int)$message['id_message']; + $result = Db::getInstance()->execute($sql); + } + $start += ($step + 1); + } + } + + $count_messages = Db::getInstance()->getValue('SELECT count(id_customer_message) FROM '._DB_PREFIX_.'customer_message'); + $nb_loop = $start = 0; + if($count_messages > 0) + $nb_loop = ceil($count_messages / $step); + for($i = 0; $i < $nb_loop; $i++) + { + $sql = 'SELECT id_customer_message, message FROM '._DB_PREFIX_.'customer_message LIMIT '.(int)$start.', '.(int)$step; + if ($messages = Db::getInstance()->executeS($sql)) + { + if(is_array($messages)) + foreach($messages as $message) + { + $sql = 'UPDATE '._DB_PREFIX_.'customer_message SET message = \''.pSQL(Tools::htmlentitiesDecodeUTF8(str_replace('&', '&', $message['message']))).'\' + WHERE id_customer_message = '.(int)$message['id_customer_message']; + Db::getInstance()->execute($sql); + } + $start += ($step + 1); + } + } +} + +function br2nl($str) +{ + return preg_replace("//i", "\n", $str); +} \ No newline at end of file diff --git a/install-dev/upgrade/sql/1.5.3.0.sql b/install-dev/upgrade/sql/1.5.3.0.sql index 4507c8c6b..a5f0a4023 100644 --- a/install-dev/upgrade/sql/1.5.3.0.sql +++ b/install-dev/upgrade/sql/1.5.3.0.sql @@ -6,7 +6,7 @@ SET NAMES 'utf8'; /* PHP:block_category_1521(); */; -/* PHP:updateordermessages(); */; +/* PHP:update_order_messages(); */; UPDATE `PREFIX_order_state` SET `delivery` = 0 WHERE `id_order_state` = 3;