diff --git a/build/changeSets/2022/addNewFields2SMSqueueTable.php b/build/changeSets/2022/addNewFields2SMSqueueTable.php
new file mode 100644
index 0000000000..76a742e78b
--- /dev/null
+++ b/build/changeSets/2022/addNewFields2SMSqueueTable.php
@@ -0,0 +1,35 @@
+
+ *************************************************************************************************/
+
+class addNewFields2SMSqueueTable extends cbupdaterWorker {
+
+ public function applyChange() {
+ if ($this->hasError()) {
+ $this->sendError();
+ }
+ if ($this->isApplied()) {
+ $this->sendMsg('Changeset ' . get_class($this) . ' already applied!');
+ } else {
+ $this->ExecuteQuery('ALTER TABLE `cb_messagequeue` ADD `deliverstarttime` VARCHAR(10) NULL DEFAULT NULL;');
+ $this->ExecuteQuery('ALTER TABLE `cb_messagequeue` ADD `deliverendtime` VARCHAR(10) NULL DEFAULT NULL;');
+ $this->ExecuteQuery('ALTER TABLE `cb_messagequeue` ADD `cansendonsaturday` tinyint NOT NULL DEFAULT 1;');
+ $this->ExecuteQuery('ALTER TABLE `cb_messagequeue` ADD `cansendonsunday` tinyint 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/include/cbmqtm/cbmqtm_dbdistributor.php b/include/cbmqtm/cbmqtm_dbdistributor.php
index 54a189d858..5a99195d19 100644
--- a/include/cbmqtm/cbmqtm_dbdistributor.php
+++ b/include/cbmqtm/cbmqtm_dbdistributor.php
@@ -20,7 +20,7 @@
class cbmqtm_dbdistributor extends cbmqtm_manager {
protected static $db = null;
- protected $version = '1.0';
+ protected $version = '2.0';
public static function getInstance() {
self::setDB();
@@ -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'=>'00:00:00', 'deliverEndTime'=>'23:59:59', 'canSendOnSaturday'=>1, 'canSendOnSunday'=>1);
+ }
+ $deliverStartTime = (isset($deliverRange['deliverStartTime'])) ? $deliverRange['deliverStartTime'] : '00:00:00';
+ $deliverEndTime = (isset($deliverRange['deliverEndTime'])) ? $deliverRange['deliverEndTime'] : '23:59:59';
+ $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(
+ static::$db->pquery(
+ 'insert into cb_messagequeue (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,20 @@ 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);
+ private function getQuery($fields, $channel, $consumer, $producer = '*', $userid = '*') {
+ $nowtime = date('H:i:s', time());
+ $params = array(date('Y-m-d H:i:s', time()), $channel, $consumer, $nowtime, $nowtime);
+ $sql = 'select '.$fields.' from cb_messagequeue where deliverafter<=? and channel=? and consumer=?
+ and ((deliverstarttime or deliverstarttime is null) and (deliverendtime>? or deliverendtime is null))';
if ($producer != '*') {
$sql .= ' and producer=?';
$params[] = $producer;
@@ -85,6 +99,18 @@ 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)';
+ } elseif ($check_day == 'Sunday') {
+ $sql .= ' and (cansendonsunday=1 or cansendonsunday is null)';
+ }
+ return [$sql, $params];
+ }
+
+ public function getMessage($channel, $consumer, $producer = '*', $userid = '*') {
+ self::setDB();
+ list($sql, $params) = $this->getQuery('*', $channel, $consumer, $producer, $userid);
$sql .= ' order by deliverafter,sequence asc limit 1';
$msgrs = static::$db->pquery($sql, $params);
if ($msgrs && static::$db->num_rows($msgrs)==1) {
@@ -114,16 +140,7 @@ public function getMessage($channel, $consumer, $producer = '*', $userid = '*')
public function isMessageWaiting($channel, $consumer, $producer = '*', $userid = '*') {
self::setDB();
- $sql = 'select count(*) from cb_messagequeue where deliverafter<=? and channel=? and consumer=?';
- $params = array(date('Y-m-d H:i:s', time()), $channel, $consumer);
- if ($producer != '*') {
- $sql .= ' and producer=?';
- $params[] = $producer;
- }
- if ($userid != '*') {
- $sql .= ' and userid=?';
- $params[] = $userid;
- }
+ list($sql, $params) = $this->getQuery('count(*)', $channel, $consumer, $producer, $userid);
$msgrs = static::$db->pquery($sql, $params);
return ($msgrs && static::$db->query_result($msgrs, 0, 0) > 0);
}
diff --git a/modules/cbupdater/cbupdates/2022.xml b/modules/cbupdater/cbupdates/2022.xml
index d492a4678f..262078d36a 100644
--- a/modules/cbupdater/cbupdates/2022.xml
+++ b/modules/cbupdater/cbupdates/2022.xml
@@ -307,4 +307,11 @@
addFIeldWFscheduleMultipleTimeOption
true
+
+ mohamed-shibeJR
+ Add new columns to table messagequeue for holding time range of sms
+ build/changeSets/2022/addNewFields2SMSqueueTable.php
+ addNewFields2SMSqueueTable
+ true
+