From 169302516b54e125b52ea60bc3f94c2d9f9f637f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot=20=28=40U-Exp=29?= Date: Tue, 16 Sep 2014 20:25:34 +0200 Subject: [PATCH] Add new function to fetch all SMS friends --- appinfo/info.xml | 2 +- controller/smscontroller.php | 12 +++++++----- db/smsmapper.php | 35 +++++++++++++++++++++++++---------- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 1944459..8dc1fe9 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -5,6 +5,6 @@ Owncloud SMS app AGPL Loic Blot - 0.1.7 + 0.1.8 7 diff --git a/controller/smscontroller.php b/controller/smscontroller.php index 7d15c21..66ac20a 100644 --- a/controller/smscontroller.php +++ b/controller/smscontroller.php @@ -23,7 +23,7 @@ class SmsController extends Controller { private $userId; private $smsMapper; private $errorMsg; - + public function __construct ($appName, IRequest $request, $userId, SmsMapper $mapper){ parent::__construct($appName, $request); $this->userId = $userId; @@ -35,7 +35,9 @@ class SmsController extends Controller { * @NoCSRFRequired */ public function index () { - $params = array('user' => $this->userId); + $params = array('user' => $this->userId, + "PNLConversations" => $this->smsMapper->getAllPeersPhoneNumbers($this->userId) + ); return new TemplateResponse($this->appName, 'main', $params); } @@ -47,7 +49,7 @@ class SmsController extends Controller { $smsList = $this->smsMapper->getAllIds($this->userId); return new JSONResponse(array("smslist" => $smsList)); } - + /** * @NoAdminRequired */ @@ -59,7 +61,7 @@ class SmsController extends Controller { $this->smsMapper->writeToDB($this->userId, $smsDatas); return new JSONResponse(array("status" => true, "msg" => "OK")); } - + /** * @NoAdminRequired */ @@ -71,7 +73,7 @@ class SmsController extends Controller { $this->smsMapper->writeToDB($this->userId, $smsDatas, true); return new JSONResponse(array("status" => true, "msg" => "OK")); } - + private function checkPushStructure ($smsCount, $smsDatas) { if ($smsCount != count($smsDatas)) { $this->errorMsg = "Error: sms count invalid"; diff --git a/db/smsmapper.php b/db/smsmapper.php index 870885d..77391ad 100644 --- a/db/smsmapper.php +++ b/db/smsmapper.php @@ -25,19 +25,19 @@ class SmsMapper extends Mapper { public function __construct (IDb $db) { parent::__construct($db, 'ocsms_smsdatas'); } - + public function getAllIds ($userId) { $query = \OC_DB::prepare('SELECT sms_id, sms_mailbox FROM ' . '*PREFIX*ocsms_smsdatas WHERE user_id = ?'); $result = $query->execute(array($userId)); - + $smsList = array(); while($row = $result->fetchRow()) { $mbox = SmsMapper::$mailboxNames[$row["sms_mailbox"]]; if (!isset($smsList[$mbox])) { $smsList[$mbox] = array(); } - + if (!in_array($row["sms_id"], $smsList[$mbox])) { array_push($smsList[$mbox], $row["sms_id"]); } @@ -45,21 +45,36 @@ class SmsMapper extends Mapper { return $smsList; } + public function getAllPeersPhoneNumbers ($userId) { + $query = \OC_DB::prepare('SELECT sms_address FROM ' . + '*PREFIX*ocsms_smsdatas WHERE user_id = ? AND sms_mailbox IN (?,?)'); + $result = $query->execute(array($userId, 0, 1)); + + $phoneList = array(); + while($row = $result->fetchRow()) { + if (!in_array($row["sms_id"], $phoneList)) { + array_push($phoneList); + } + } + sort($phoneList); + return $phoneList; + } + public function writeToDB ($userId, $smsList, $purgeAllSmsBeforeInsert = false) { \OCP\DB::beginTransaction(); - + if ($purgeAllSmsBeforeInsert === true) { $query = \OC_DB::prepare('DELETE FROM *PREFIX*ocsms_smsdatas ' . 'WHERE user_id = ?'); $result = $query->execute(array($userId)); } - + foreach ($smsList as $sms) { $smsFlags = sprintf("%s%s", $sms["read"] === "true" ? "1" : "0", $sms["seen"] === "true" ? "1" : "0" ); - + // Only delete if we haven't purged the DB if ($purgeAllSmsBeforeInsert === false) { // Remove previous record @@ -70,7 +85,7 @@ class SmsMapper extends Mapper { $userId, (int) $sms["_id"] )); } - + $query = \OC_DB::prepare('INSERT INTO *PREFIX*ocsms_smsdatas ' . '(user_id, added, lastmodified, sms_flags, sms_date, sms_id,' . 'sms_address, sms_msg, sms_mailbox, sms_type) VALUES ' . @@ -81,10 +96,10 @@ class SmsMapper extends Mapper { $sms["address"], $sms["body"], (int) $sms["mbox"], (int) $sms["type"] )); - - + + } - + \OCP\DB::commit(); } }