From b55a84e961213fcc4a804d0dfa1f8ad2bcb2533f Mon Sep 17 00:00:00 2001 From: gRoussac Date: Tue, 3 Sep 2013 18:36:30 +0200 Subject: [PATCH] [-] INSTALLER : Fix infinite loop when order message has additional ampersand --- install-dev/upgrade/php/update_order_messages.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/install-dev/upgrade/php/update_order_messages.php b/install-dev/upgrade/php/update_order_messages.php index 369b753d5..29d4cc07e 100644 --- a/install-dev/upgrade/php/update_order_messages.php +++ b/install-dev/upgrade/php/update_order_messages.php @@ -29,17 +29,18 @@ function update_order_messages() $step = 3000; $count_messages = Db::getInstance()->getValue('SELECT count(id_message) FROM '._DB_PREFIX_.'message'); $nb_loop = $start = 0; + $pattern = ' 0) $nb_loop = ceil($count_messages / $step); for($i = 0; $i < $nb_loop; $i++) { - $sql = 'SELECT id_message, message FROM `'._DB_PREFIX_.'message` WHERE message REGEXP \'query($sql)) while ($message = Db::getInstance()->nextRow($messages)) { if(is_array($message)) { - $sql = 'UPDATE `'._DB_PREFIX_.'message` SET message = \''.pSQL(Tools::htmlentitiesDecodeUTF8(br2nl($message['message']))).'\' + $sql = 'UPDATE `'._DB_PREFIX_.'message` SET message = \''.pSQL(preg_replace('/'.$pattern.'/', '', Tools::htmlentitiesDecodeUTF8(br2nl($message['message'])))).'\' WHERE id_message = '.(int)$message['id_message']; $result = Db::getInstance()->execute($sql); } @@ -50,13 +51,13 @@ function update_order_messages() $nb_loop = ceil($count_messages / $step); for($i = 0; $i < $nb_loop; $i++) { - $sql = 'SELECT id_customer_message, message FROM `'._DB_PREFIX_.'customer_message` WHERE message REGEXP \'query($sql)) while ($message = Db::getInstance()->nextRow($messages)) { if(is_array($message)) { - $sql = 'UPDATE `'._DB_PREFIX_.'customer_message` SET message = \''.pSQL(Tools::htmlentitiesDecodeUTF8(str_replace('&', '&', $message['message']))).'\' + $sql = 'UPDATE `'._DB_PREFIX_.'customer_message` SET message = \''.pSQL(preg_replace('/'.$pattern.'/', '', Tools::htmlentitiesDecodeUTF8(str_replace('&', '&', $message['message'])))).'\' WHERE id_customer_message = '.(int)$message['id_customer_message']; Db::getInstance()->execute($sql); }