mirror of
https://github.com/nerzhul/ocsms.git
synced 2025-07-24 02:15:46 +00:00
Convert some queries to QueryBuilder.
This commit is contained in:
parent
fb7a77d23c
commit
5b72503296
@ -24,13 +24,15 @@ class ConversationStateMapper extends Mapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getLast ($userId) {
|
public function getLast ($userId) {
|
||||||
$sql = 'SELECT MAX(int_date) as mx FROM ' .
|
$qb = $this->db->getQueryBuilder();
|
||||||
'*PREFIX*ocsms_conversation_read_states WHERE user_id = ?';
|
$qb->selectAlias($qb->createFunction('MAX(int_date)'), 'mx')
|
||||||
|
->from('ocsms_conversation_read_states')
|
||||||
|
->where($qb->expr()->andX(
|
||||||
|
$qb->expr()->eq('user_id', $qb->createNamedParameter($userId))
|
||||||
|
));
|
||||||
|
$result = $qb->execute();
|
||||||
|
|
||||||
$query = \OCP\DB::prepare($sql);
|
if ($row = $result->fetch()) {
|
||||||
$result = $query->execute(array($userId));
|
|
||||||
|
|
||||||
if ($row = $result->fetchRow()) {
|
|
||||||
return $row["mx"];
|
return $row["mx"];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,13 +40,16 @@ class ConversationStateMapper extends Mapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getLastForPhoneNumber ($userId, $phoneNumber) {
|
public function getLastForPhoneNumber ($userId, $phoneNumber) {
|
||||||
$sql = 'SELECT MAX(int_date) as mx FROM ' .
|
$qb = $this->db->getQueryBuilder();
|
||||||
'*PREFIX*ocsms_conversation_read_states WHERE user_id = ? AND phone_number = ?';
|
$qb->selectAlias($qb->createFunction('MAX(int_date)'), 'mx')
|
||||||
|
->from('ocsms_conversation_read_states')
|
||||||
|
->where($qb->expr()->andX(
|
||||||
|
$qb->expr()->eq('user_id', $qb->createNamedParameter($userId)),
|
||||||
|
$qb->expr()->eq('phone_number', $qb->createNamedParameter($phoneNumber))
|
||||||
|
));
|
||||||
|
$result = $qb->execute();
|
||||||
|
|
||||||
$query = \OCP\DB::prepare($sql);
|
if ($row = $result->fetch()) {
|
||||||
$result = $query->execute(array($userId, $phoneNumber));
|
|
||||||
|
|
||||||
if ($row = $result->fetchRow()) {
|
|
||||||
return $row["mx"];
|
return $row["mx"];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,14 +58,21 @@ class ConversationStateMapper extends Mapper {
|
|||||||
|
|
||||||
public function setLast ($userId, $phoneNumber, $lastDate) {
|
public function setLast ($userId, $phoneNumber, $lastDate) {
|
||||||
$this->db->beginTransaction();
|
$this->db->beginTransaction();
|
||||||
$query = \OCP\DB::prepare('DELETE FROM *PREFIX*ocsms_conversation_read_states ' .
|
$qb = $this->db->getQueryBuilder();
|
||||||
'WHERE user_id = ? AND phone_number = ?');
|
$qb->delete('ocsms_conversation_read_states')
|
||||||
$query->execute(array($userId, $phoneNumber));
|
->where($qb->expr()->andX(
|
||||||
|
$qb->expr()->eq('user_id', $qb->createNamedParameter($userId)),
|
||||||
|
$qb->expr()->eq('phone_number', $qb->createNamedParameter($phoneNumber))
|
||||||
|
));
|
||||||
|
$qb->execute();
|
||||||
|
|
||||||
$query = \OCP\DB::prepare('INSERT INTO *PREFIX*ocsms_conversation_read_states' .
|
$qb = $this->db->getQueryBuilder();
|
||||||
'(user_id, phone_number, int_date) VALUES ' .
|
$qb->insert('ocsms_conversation_read_states')
|
||||||
'(?,?,?)');
|
->values(array(
|
||||||
$query->execute(array($userId, $phoneNumber, $lastDate));
|
'user_id' => $userId,
|
||||||
|
'phone_number' => $phoneNumber,
|
||||||
|
'int_date' => $lastDate
|
||||||
|
));
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,14 +145,23 @@ class SmsMapper extends Mapper {
|
|||||||
|
|
||||||
$phlst = $this->getAllPhoneNumbersForFPN($userId, $phoneNumber, $country);
|
$phlst = $this->getAllPhoneNumbersForFPN($userId, $phoneNumber, $country);
|
||||||
$messageList = array();
|
$messageList = array();
|
||||||
$query = \OCP\DB::prepare('SELECT sms_date, sms_msg, sms_type FROM ' .
|
|
||||||
'*PREFIX*ocsms_smsdatas WHERE user_id = ? AND sms_address = ? ' .
|
|
||||||
'AND sms_mailbox IN (?,?,?) AND sms_date > ?');
|
|
||||||
|
|
||||||
foreach ($phlst as $pn => $val) {
|
foreach ($phlst as $pn => $val) {
|
||||||
$result = $query->execute(array($userId, $pn, 0, 1, 3, $minDate));
|
$qb = $this->db->getQueryBuilder();
|
||||||
|
$qb->select('sms_date', 'sms_msg', 'sms_type')
|
||||||
|
->from('ocsms_smsdatas')
|
||||||
|
->where($qb->expr()->andX(
|
||||||
|
$qb->expr()->eq('user_id', $qb->createNamedParameter($userId)),
|
||||||
|
$qb->expr()->eq('sms_address', $qb->createNamedParameter($pn)),
|
||||||
|
$qb->expr()->in('sms_mailbox', array_map(function($mbid) use ($qb) {
|
||||||
|
return $qb->createNamedParameter($mbid);
|
||||||
|
}, array(0, 1, 3))),
|
||||||
|
$qb->expr()->gt('sms_date', $qb->createNamedParameter($minDate))
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$result = $qb->execute();
|
||||||
|
|
||||||
while ($row = $result->fetchRow()) {
|
while ($row = $result->fetch()) {
|
||||||
$messageList[$row["sms_date"]] = array(
|
$messageList[$row["sms_date"]] = array(
|
||||||
"msg" => $row["sms_msg"],
|
"msg" => $row["sms_msg"],
|
||||||
"type" => $row["sms_type"]
|
"type" => $row["sms_type"]
|
||||||
@ -267,19 +276,26 @@ class SmsMapper extends Mapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getLastMessageTimestampForAllPhonesNumbers ($userId, $order = true) {
|
public function getLastMessageTimestampForAllPhonesNumbers ($userId, $order = true) {
|
||||||
$sql = 'SELECT sms_address, MAX(sms_date) AS mx FROM ' .
|
$qb = $this->db->getQueryBuilder();
|
||||||
'*PREFIX*ocsms_smsdatas WHERE user_id = ? AND sms_mailbox IN (?,?,?) ' .
|
$qb->selectAlias($qb->createFunction('MAX(sms_date)'), 'mx')
|
||||||
'GROUP BY sms_address';
|
->addSelect('sms_address')
|
||||||
|
->from('ocsms_smsdatas')
|
||||||
|
->where($qb->expr()->andX(
|
||||||
|
$qb->expr()->eq('user_id', $qb->createNamedParameter($userId)),
|
||||||
|
$qb->expr()->in('sms_mailbox', array_map(function($mbid) use ($qb) {
|
||||||
|
return $qb->createNamedParameter($mbid);
|
||||||
|
}, array(0, 1, 3)))
|
||||||
|
))
|
||||||
|
->groupBy('sms_address');
|
||||||
|
|
||||||
if ($order === true) {
|
if ($order === true) {
|
||||||
$sql .= ' ORDER BY mx DESC';
|
$qb->orderBy('mx', 'DESC');
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = \OCP\DB::prepare($sql);
|
$result = $qb->execute();
|
||||||
$result = $query->execute(array($userId, 0, 1, 3));
|
|
||||||
|
|
||||||
$phoneList = array();
|
$phoneList = array();
|
||||||
while ($row = $result->fetchRow()) {
|
while ($row = $result->fetch()) {
|
||||||
$phoneNumber = preg_replace("#[ ]#", "", $row["sms_address"]);
|
$phoneNumber = preg_replace("#[ ]#", "", $row["sms_address"]);
|
||||||
if (!array_key_exists($phoneNumber, $phoneList)) {
|
if (!array_key_exists($phoneNumber, $phoneList)) {
|
||||||
$phoneList[$phoneNumber] = $row["mx"];
|
$phoneList[$phoneNumber] = $row["mx"];
|
||||||
@ -295,15 +311,21 @@ class SmsMapper extends Mapper {
|
|||||||
public function getNewMessagesCountForAllPhonesNumbers($userId, $lastDate) {
|
public function getNewMessagesCountForAllPhonesNumbers($userId, $lastDate) {
|
||||||
$ld = ($lastDate == '') ? 0 : $lastDate;
|
$ld = ($lastDate == '') ? 0 : $lastDate;
|
||||||
|
|
||||||
$sql = 'SELECT sms_address, COUNT(sms_date) AS ct FROM ' .
|
$qb = $this->db->getQueryBuilder();
|
||||||
'*PREFIX*ocsms_smsdatas WHERE user_id = ? AND sms_mailbox IN (?,?,?) ' .
|
$qb->selectAlias($qb->createFunction('COUNT(sms_date)'), 'ct')
|
||||||
'AND sms_date > ? GROUP BY sms_address';
|
->addSelect('sms_address')
|
||||||
|
->from('ocsms_smsdatas')
|
||||||
$query = \OCP\DB::prepare($sql);
|
->where($qb->expr()->andX(
|
||||||
$result = $query->execute(array($userId, 0, 1, 3, $ld));
|
$qb->expr()->eq('user_id', $qb->createNamedParameter($userId)),
|
||||||
|
$qb->expr()->in('sms_mailbox', array_map(function($mbid) use ($qb) {
|
||||||
|
return $qb->createNamedParameter($mbid);
|
||||||
|
}, array(0, 1, 3))),
|
||||||
|
$qb->expr()->gt('sms_date', $qb->createNamedParameter($ld))))
|
||||||
|
->groupBy('sms_address');
|
||||||
|
$result = $qb->execute();
|
||||||
|
|
||||||
$phoneList = array();
|
$phoneList = array();
|
||||||
while ($row = $result->fetchRow()) {
|
while ($row = $result->fetch()) {
|
||||||
$phoneNumber = preg_replace("#[ ]#", "", $row["sms_address"]);
|
$phoneNumber = preg_replace("#[ ]#", "", $row["sms_address"]);
|
||||||
if ($this->convStateMapper->getLastForPhoneNumber($userId, $phoneNumber) < $lastDate) {
|
if ($this->convStateMapper->getLastForPhoneNumber($userId, $phoneNumber) < $lastDate) {
|
||||||
if (!array_key_exists($phoneNumber, $phoneList)) {
|
if (!array_key_exists($phoneNumber, $phoneList)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user