From 631640c5bb41d92486fe23582a374f5cdcb2fe5c Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Thu, 22 Sep 2016 21:45:20 +0200 Subject: [PATCH] Bugfix: check the read date per phone number if there are messages to check for this date --- db/smsmapper.php | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/db/smsmapper.php b/db/smsmapper.php index 5fb69ef..efb0552 100644 --- a/db/smsmapper.php +++ b/db/smsmapper.php @@ -232,7 +232,9 @@ class SmsMapper extends Mapper { while ($row = $result->fetchRow()) { $phoneNumber = preg_replace("#[ ]#", "/", $row["sms_address"]); if (!in_array($phoneNumber, $phoneList)) { - $phoneList[$phoneNumber] = $row["ct"]; + if ($this->getLastReadDateForPhoneNumber($userId, $phoneNumber) < $lastDate) { + $phoneList[$phoneNumber] = $row["ct"]; + } } } return $phoneList; @@ -248,6 +250,22 @@ class SmsMapper extends Mapper { if ($row = $result->fetchRow()) { return $row["mx"]; } + + return 0; + } + + public function getLastReadDateForPhoneNumber ($userId, $phoneNumber) { + $sql = 'SELECT MAX(datavalue) as mx FROM ' . + '*PREFIX*ocsms_user_datas WHERE user_id = ? AND datakey = ?'; + + $query = \OCP\DB::prepare($sql); + $result = $query->execute(array($userId, 'lastReadDate-' . $phoneNumber)); + + if ($row = $result->fetchRow()) { + return $row["mx"]; + } + + return 0; } public function setLastReadDate ($userId, $phoneNumber, $lastDate) {