From 305736b0d698c98d52f03621088220180d1fee3e Mon Sep 17 00:00:00 2001 From: Mohamed Abdallah Shibe Date: Thu, 30 Jun 2022 21:48:21 +0300 Subject: [PATCH 1/4] fix(changeSets) add new fields to message queue table --- .../2022/addNewFields2SMSqueueTable.php | 36 +++++++++++++++++++ modules/cbupdater/cbupdates/2022.xml | 7 ++++ 2 files changed, 43 insertions(+) create mode 100644 build/changeSets/2022/addNewFields2SMSqueueTable.php diff --git a/build/changeSets/2022/addNewFields2SMSqueueTable.php b/build/changeSets/2022/addNewFields2SMSqueueTable.php new file mode 100644 index 0000000000..b2aa0b3a31 --- /dev/null +++ b/build/changeSets/2022/addNewFields2SMSqueueTable.php @@ -0,0 +1,36 @@ + + *************************************************************************************************/ + +class addNewFields2SMSqueueTable extends cbupdaterWorker { + + public function applyChange() { + if ($this->hasError()) { + $this->sendError(); + } + if ($this->isApplied()) { + $this->sendMsg('Changeset ' . get_class($this) . ' already applied!'); + } else { + global $adb; + $this->ExecuteQuery("ALTER TABLE `cb_messagequeue` ADD `deliverStartTime` VARCHAR(100) NULL DEFAULT NULL;"); + $this->ExecuteQuery("ALTER TABLE `cb_messagequeue` ADD `deliverEndTime` VARCHAR(100) NULL DEFAULT NULL;"); + $this->ExecuteQuery("ALTER TABLE `cb_messagequeue` ADD `canSendOnSaturday` VARCHAR(5) NOT NULL DEFAULT '1';"); + $this->ExecuteQuery("ALTER TABLE `cb_messagequeue` ADD `canSendOnSunday` VARCHAR(5) NOT NULL DEFAULT '1';"); + $this->sendMsg('Changeset ' . get_class($this) . ' applied!'); + $this->markApplied(false); + } + $this->finishExecution(); + } +} \ No newline at end of file diff --git a/modules/cbupdater/cbupdates/2022.xml b/modules/cbupdater/cbupdates/2022.xml index 9426c600fe..43fab2e757 100644 --- a/modules/cbupdater/cbupdates/2022.xml +++ b/modules/cbupdater/cbupdates/2022.xml @@ -161,4 +161,11 @@ changeUITypeFinancialFields true + + mohamed-shibeJR + Add new columns to table messagequeue for holding time range of sms + build/changeSets/2022/addNewFields2SMSqueueTable.php + addNewFields2SMSqueueTable + true + From ab9f2e3ddea545cb9ca23060e965e4db53c8f7d0 Mon Sep 17 00:00:00 2001 From: Mohamed Abdallah Shibe Date: Thu, 30 Jun 2022 21:50:12 +0300 Subject: [PATCH 2/4] fix(include) add delivery time range functinality --- include/cbmqtm/cbmqtm_dbdistributor.php | 38 +++++++++++++++++++------ 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/include/cbmqtm/cbmqtm_dbdistributor.php b/include/cbmqtm/cbmqtm_dbdistributor.php index 54a189d858..62c30ff1de 100644 --- a/include/cbmqtm/cbmqtm_dbdistributor.php +++ b/include/cbmqtm/cbmqtm_dbdistributor.php @@ -32,30 +32,38 @@ private static function setDB() { static::$db = new PearDatabase(); } - public function sendMessage($channel, $producer, $consumer, $type, $share, $sequence, $expires, $deliverafter, $userid, $information) { + public function sendMessage($channel, $producer, $consumer, $type, $share, $sequence, $expires, $deliverafter, $userid, $information, $deliverRange = array()) { if ($share != '1:M' && $share != 'P:S') { $share = '1:M'; } if ($share == '1:M' || !$this->subscriptionExist($channel, $producer, $consumer)) { - $this->insertMsg($channel, $producer, $consumer, $type, $share, $sequence, $expires, $deliverafter, $userid, $information); + $this->insertMsg($channel, $producer, $consumer, $type, $share, $sequence, $expires, $deliverafter, $userid, $information, $deliverRange); } else { self::setDB(); $subrs = static::$db->pquery('select * from cb_mqsubscriptions where channel=?', array($channel)); while ($subscriber = static::$db->fetch_array($subrs)) { - $this->insertMsg($channel, $producer, $subscriber['consumer'], $type, $share, $sequence, $expires, $deliverafter, $userid, $information); + $this->insertMsg($channel, $producer, $subscriber['consumer'], $type, $share, $sequence, $expires, $deliverafter, $userid, $information, $deliverRange); } } } - private function insertMsg($channel, $producer, $consumer, $type, $share, $sequence, $expires, $deliverafter, $userid, $information) { + private function insertMsg($channel, $producer, $consumer, $type, $share, $sequence, $expires, $deliverafter, $userid, $information, $deliverRange) { $rightnow = time(); if (empty($deliverafter)) { $deliverafter = 0; } + if (empty($deliverRange)) { + $deliverRange = array('deliverStartTime'=>'08:00:00', 'deliverEndTime'=>'12:00:00', 'canSendOnSaturday'=>1, 'canSendOnSunday'=>1); + } + $deliverStartTime = (isset($deliverRange['deliverStartTime'])) ? $deliverRange['deliverStartTime'] : null; + $deliverEndTime = (isset($deliverRange['deliverEndTime'])) ? $deliverRange['deliverEndTime'] : null; + $canSendOnSaturday = (isset($deliverRange['canSendOnSaturday'])) ? $deliverRange['canSendOnSaturday'] : 1; + $canSendOnSunday = (isset($deliverRange['canSendOnSunday'])) ? $deliverRange['canSendOnSunday'] : 1; self::setDB(); static::$db->pquery('insert into cb_messagequeue - (channel, producer, consumer, type, share, sequence, senton, deliverafter, expires, version, invalid, invalidreason, userid, information) - values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)', array( + (channel, producer, consumer, type, share, sequence, senton, deliverafter, expires, version, invalid, invalidreason, userid, information, deliverStartTime, deliverEndTime, + canSendOnSaturday, canSendOnSunday) + values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', array( 'channel' => $channel, 'producer' => $producer, 'consumer' => $consumer, @@ -69,14 +77,19 @@ private function insertMsg($channel, $producer, $consumer, $type, $share, $seque 'invalid' => 0, 'invalidreason' => '', 'userid' => $userid, - 'information' => $information + 'information' => $information, + 'deliverStartTime' => $deliverStartTime, + 'deliverEndTime' => $deliverEndTime, + 'canSendOnSaturday' => $canSendOnSaturday, + 'canSendOnSunday' => $canSendOnSunday, )); } public function getMessage($channel, $consumer, $producer = '*', $userid = '*') { self::setDB(); - $sql = 'select * from cb_messagequeue where deliverafter<=? and channel=? and consumer=?'; - $params = array(date('Y-m-d H:i:s', time()), $channel, $consumer); + $sql = 'select * from cb_messagequeue where deliverafter<=? and channel=? and consumer=? + and ((deliverStartTime?) or (deliverStartTime is null and deliverEndTime is null))'; + $params = array(date('Y-m-d H:i:s', time()), $channel, $consumer, date('H:i:s', time()), date('H:i:s', time())); if ($producer != '*') { $sql .= ' and producer=?'; $params[] = $producer; @@ -85,6 +98,13 @@ public function getMessage($channel, $consumer, $producer = '*', $userid = '*') $sql .= ' and userid=?'; $params[] = $userid; } + $check_day = date("l"); + if ($check_day == 'Saturday') { + $sql .= ' and (canSendOnSaturday = 1 or canSendOnSaturday is null)'; + } + if ($check_day == 'Sunday') { + $sql .= ' and (canSendOnSunday = 1 or canSendOnSunday is null)'; + } $sql .= ' order by deliverafter,sequence asc limit 1'; $msgrs = static::$db->pquery($sql, $params); if ($msgrs && static::$db->num_rows($msgrs)==1) { From b6cd6c71424f57114cc9b3c05f3eecdcad822387 Mon Sep 17 00:00:00 2001 From: Mohamed Abdallah Shibe Date: Fri, 8 Jul 2022 10:31:33 +0300 Subject: [PATCH 3/4] fix(include) fix searching query --- include/cbmqtm/cbmqtm_dbdistributor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/cbmqtm/cbmqtm_dbdistributor.php b/include/cbmqtm/cbmqtm_dbdistributor.php index 62c30ff1de..0cfca34a4f 100644 --- a/include/cbmqtm/cbmqtm_dbdistributor.php +++ b/include/cbmqtm/cbmqtm_dbdistributor.php @@ -88,7 +88,7 @@ private function insertMsg($channel, $producer, $consumer, $type, $share, $seque public function getMessage($channel, $consumer, $producer = '*', $userid = '*') { self::setDB(); $sql = 'select * from cb_messagequeue where deliverafter<=? and channel=? and consumer=? - and ((deliverStartTime?) or (deliverStartTime is null and deliverEndTime is null))'; + and ((deliverStartTime? or deliverEndTime is null))'; $params = array(date('Y-m-d H:i:s', time()), $channel, $consumer, date('H:i:s', time()), date('H:i:s', time())); if ($producer != '*') { $sql .= ' and producer=?'; From ec8f3ce5776c6e7aceec1c8fa6d563cd186a9c86 Mon Sep 17 00:00:00 2001 From: Mohamed Abdallah Shibe Date: Fri, 29 Jul 2022 10:25:49 +0300 Subject: [PATCH 4/4] fix(cbmqtm) fix by change default time range --- include/cbmqtm/cbmqtm_dbdistributor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/cbmqtm/cbmqtm_dbdistributor.php b/include/cbmqtm/cbmqtm_dbdistributor.php index 0cfca34a4f..7defcc1288 100644 --- a/include/cbmqtm/cbmqtm_dbdistributor.php +++ b/include/cbmqtm/cbmqtm_dbdistributor.php @@ -53,7 +53,7 @@ private function insertMsg($channel, $producer, $consumer, $type, $share, $seque $deliverafter = 0; } if (empty($deliverRange)) { - $deliverRange = array('deliverStartTime'=>'08:00:00', 'deliverEndTime'=>'12:00:00', 'canSendOnSaturday'=>1, 'canSendOnSunday'=>1); + $deliverRange = array('deliverStartTime'=>'00:00:59', 'deliverEndTime'=>'23:59:59', 'canSendOnSaturday'=>1, 'canSendOnSunday'=>1); } $deliverStartTime = (isset($deliverRange['deliverStartTime'])) ? $deliverRange['deliverStartTime'] : null; $deliverEndTime = (isset($deliverRange['deliverEndTime'])) ? $deliverRange['deliverEndTime'] : null;