From ebddfb07e343d6ef20aae7d358e4ddea8faa845f Mon Sep 17 00:00:00 2001 From: Pavel Dohnal Date: Wed, 5 Aug 2020 10:09:36 +0200 Subject: [PATCH] Fix search in sending status [MAILPOET-3050] --- lib/Models/ScheduledTaskSubscriber.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/Models/ScheduledTaskSubscriber.php b/lib/Models/ScheduledTaskSubscriber.php index 9816cdd970..29bff1c837 100644 --- a/lib/Models/ScheduledTaskSubscriber.php +++ b/lib/Models/ScheduledTaskSubscriber.php @@ -76,7 +76,7 @@ class ScheduledTaskSubscriber extends Model { public static function listingQuery($data) { $group = isset($data['group']) ? $data['group'] : 'all'; - return self::join(Subscriber::$_table, ["subscriber_id", "=", "subscribers.id"], "subscribers") + $query = self::join(Subscriber::$_table, ["subscriber_id", "=", "subscribers.id"], "subscribers") ->filter($group, $data['params']) ->select('error', 'error') ->select('failed', 'failed') @@ -86,6 +86,19 @@ class ScheduledTaskSubscriber extends Model { ->select('subscribers.id', 'subscriberId') ->select('subscribers.last_name', 'lastName') ->select('subscribers.first_name', 'firstName'); + if (isset($data['search'])) { + $search = trim($data['search']); + $search = str_replace(['\\', '%', '_'], ['\\\\', '\\%', '\\_'], $search); // escape for 'LIKE' + if (strlen($search) === 0) { + return $query; + } + $search = '%' . $search . '%'; + return $query->whereRaw( + '(`subscribers`.`email` LIKE ? OR `subscribers`.`first_name` LIKE ? OR `subscribers`.`last_name` LIKE ?)', + [$search, $search, $search] + ); + } + return $query; } public static function groups($data) {