mirror of
https://github.com/nerzhul/ocsms.git
synced 2025-07-23 09:55:44 +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) {
|
||||
$sql = 'SELECT MAX(int_date) as mx FROM ' .
|
||||
'*PREFIX*ocsms_conversation_read_states WHERE user_id = ?';
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$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);
|
||||
$result = $query->execute(array($userId));
|
||||
|
||||
if ($row = $result->fetchRow()) {
|
||||
if ($row = $result->fetch()) {
|
||||
return $row["mx"];
|
||||
}
|
||||
|
||||
@ -38,13 +40,16 @@ class ConversationStateMapper extends Mapper {
|
||||
}
|
||||
|
||||
public function getLastForPhoneNumber ($userId, $phoneNumber) {
|
||||
$sql = 'SELECT MAX(int_date) as mx FROM ' .
|
||||
'*PREFIX*ocsms_conversation_read_states WHERE user_id = ? AND phone_number = ?';
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$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);
|
||||
$result = $query->execute(array($userId, $phoneNumber));
|
||||
|
||||
if ($row = $result->fetchRow()) {
|
||||
if ($row = $result->fetch()) {
|
||||
return $row["mx"];
|
||||
}
|
||||
|
||||
@ -53,14 +58,21 @@ class ConversationStateMapper extends Mapper {
|
||||
|
||||
public function setLast ($userId, $phoneNumber, $lastDate) {
|
||||
$this->db->beginTransaction();
|
||||
$query = \OCP\DB::prepare('DELETE FROM *PREFIX*ocsms_conversation_read_states ' .
|
||||
'WHERE user_id = ? AND phone_number = ?');
|
||||
$query->execute(array($userId, $phoneNumber));
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$qb->delete('ocsms_conversation_read_states')
|
||||
->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' .
|
||||
'(user_id, phone_number, int_date) VALUES ' .
|
||||
'(?,?,?)');
|
||||
$query->execute(array($userId, $phoneNumber, $lastDate));
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$qb->insert('ocsms_conversation_read_states')
|
||||
->values(array(
|
||||
'user_id' => $userId,
|
||||
'phone_number' => $phoneNumber,
|
||||
'int_date' => $lastDate
|
||||
));
|
||||
$this->db->commit();
|
||||
}
|
||||
|
||||
|
@ -145,14 +145,23 @@ class SmsMapper extends Mapper {
|
||||
|
||||
$phlst = $this->getAllPhoneNumbersForFPN($userId, $phoneNumber, $country);
|
||||
$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) {
|
||||
$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(
|
||||
"msg" => $row["sms_msg"],
|
||||
"type" => $row["sms_type"]
|
||||
@ -267,19 +276,26 @@ class SmsMapper extends Mapper {
|
||||
}
|
||||
|
||||
public function getLastMessageTimestampForAllPhonesNumbers ($userId, $order = true) {
|
||||
$sql = 'SELECT sms_address, MAX(sms_date) AS mx FROM ' .
|
||||
'*PREFIX*ocsms_smsdatas WHERE user_id = ? AND sms_mailbox IN (?,?,?) ' .
|
||||
'GROUP BY sms_address';
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$qb->selectAlias($qb->createFunction('MAX(sms_date)'), 'mx')
|
||||
->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) {
|
||||
$sql .= ' ORDER BY mx DESC';
|
||||
$qb->orderBy('mx', 'DESC');
|
||||
}
|
||||
|
||||
$query = \OCP\DB::prepare($sql);
|
||||
$result = $query->execute(array($userId, 0, 1, 3));
|
||||
$result = $qb->execute();
|
||||
|
||||
$phoneList = array();
|
||||
while ($row = $result->fetchRow()) {
|
||||
while ($row = $result->fetch()) {
|
||||
$phoneNumber = preg_replace("#[ ]#", "", $row["sms_address"]);
|
||||
if (!array_key_exists($phoneNumber, $phoneList)) {
|
||||
$phoneList[$phoneNumber] = $row["mx"];
|
||||
@ -295,15 +311,21 @@ class SmsMapper extends Mapper {
|
||||
public function getNewMessagesCountForAllPhonesNumbers($userId, $lastDate) {
|
||||
$ld = ($lastDate == '') ? 0 : $lastDate;
|
||||
|
||||
$sql = 'SELECT sms_address, COUNT(sms_date) AS ct FROM ' .
|
||||
'*PREFIX*ocsms_smsdatas WHERE user_id = ? AND sms_mailbox IN (?,?,?) ' .
|
||||
'AND sms_date > ? GROUP BY sms_address';
|
||||
|
||||
$query = \OCP\DB::prepare($sql);
|
||||
$result = $query->execute(array($userId, 0, 1, 3, $ld));
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$qb->selectAlias($qb->createFunction('COUNT(sms_date)'), 'ct')
|
||||
->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))),
|
||||
$qb->expr()->gt('sms_date', $qb->createNamedParameter($ld))))
|
||||
->groupBy('sms_address');
|
||||
$result = $qb->execute();
|
||||
|
||||
$phoneList = array();
|
||||
while ($row = $result->fetchRow()) {
|
||||
while ($row = $result->fetch()) {
|
||||
$phoneNumber = preg_replace("#[ ]#", "", $row["sms_address"]);
|
||||
if ($this->convStateMapper->getLastForPhoneNumber($userId, $phoneNumber) < $lastDate) {
|
||||
if (!array_key_exists($phoneNumber, $phoneList)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user