From 691a2e1a688f5c901a20e5c3f2b36576f2a146ac Mon Sep 17 00:00:00 2001 From: Cameron Ball Date: Mon, 21 Sep 2015 13:01:02 +0800 Subject: [PATCH] MDL-50790 inbound: Stop incorrect amount of lines getting removed. Too many lines were being removed for GMail senders. The function was also removed because it is no longer used, and guessing the client and cutting accordingly is a poor approach and will probably lead to issues similar to this one. --- lib/classes/message/inbound/handler.php | 32 ++----------------------- lib/tests/messageinbound_test.php | 4 ---- 2 files changed, 2 insertions(+), 34 deletions(-) diff --git a/lib/classes/message/inbound/handler.php b/lib/classes/message/inbound/handler.php index fcf9c37ff79..9da1f0b19a3 100644 --- a/lib/classes/message/inbound/handler.php +++ b/lib/classes/message/inbound/handler.php @@ -245,7 +245,6 @@ abstract class handler { * @return array message and message format to use. */ protected static function remove_quoted_text($messagedata) { - $linecount = self::get_linecount_to_remove($messagedata); if (!empty($messagedata->plain)) { $text = $messagedata->plain; } else { @@ -258,8 +257,6 @@ abstract class handler { return array($text, $messageformat); } - // Remove extra line. "Xyz wrote on...". - $count = 0; $i = 0; $flag = false; foreach ($splitted as $i => $element) { @@ -271,9 +268,6 @@ abstract class handler { $element = $splitted[$j]; if (!empty($element)) { unset($splitted[$j]); - $count++; - } - if ($count == $linecount) { break; } } @@ -282,10 +276,8 @@ abstract class handler { } if ($flag) { // Quoted text was found. - $k = $i - $linecount; // Where to start the chopping process. - - // Remove quoted text. - $splitted = array_slice($splitted, 0, $k); + // Retrieve everything from the start until the line before the quoted text. + $splitted = array_slice($splitted, 0, $i-1); // Strip out empty lines towards the end, since a lot of clients add a huge chunk of empty lines. $reverse = array_reverse($splitted); @@ -311,24 +303,4 @@ abstract class handler { } return array($message, $messageformat); } - - /** - * Try to guess how many lines to remove from the email to delete "xyz wrote on" text. Hard coded numbers for various email - * clients. - * Gmail uses two - * Evolution uses one - * Thunderbird uses one - * - * @param \stdClass $messagedata The Inbound Message record - * - * @return int number of lines to chop off before the start of quoted text. - */ - protected static function get_linecount_to_remove($messagedata) { - $linecount = 1; - if (!empty($messagedata->html) && stripos($messagedata->html, 'gmail_quote') !== false) { - // Gmail uses two lines. - $linecount = 2; - } - return $linecount; - } } diff --git a/lib/tests/messageinbound_test.php b/lib/tests/messageinbound_test.php index 8baf461623c..0d4b50f6d5f 100644 --- a/lib/tests/messageinbound_test.php +++ b/lib/tests/messageinbound_test.php @@ -163,10 +163,6 @@ class test_handler extends \core\message\inbound\handler { return parent::remove_quoted_text($messagedata); } - public static function get_linecount_to_remove($messagedata) { - return parent::get_linecount_to_remove($messagedata); - } - public function get_name() {} public function get_description() {} -- 2.43.0