From ed380fd09ec2f5c5a8cfc3921a8214da3f188447 Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Thu, 17 May 2018 10:27:06 +0200 Subject: [PATCH] Prepare to write conversation objects to database --- db/Conversation.php | 25 +++++++++++++++++++++++++ db/smsmapper.php | 32 +++++++++++++++++++++++++++++--- lib/UUIDGenerator.php | 26 ++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 db/Conversation.php create mode 100644 lib/UUIDGenerator.php diff --git a/db/Conversation.php b/db/Conversation.php new file mode 100644 index 0000000..0fb83de --- /dev/null +++ b/db/Conversation.php @@ -0,0 +1,25 @@ + + * @copyright Loic Blot 2014-2018 + */ + +namespace OCA\OcSms\Db; + + +class Conversation { + public $id; + public $userId; + public $phoneNumber; + + public function __construct($userId, $phoneNumber) { + $this->userId = $userId; + $this->phoneNumber = $phoneNumber; + $id = null; + } +} \ No newline at end of file diff --git a/db/smsmapper.php b/db/smsmapper.php index ec7e073..b624d90 100644 --- a/db/smsmapper.php +++ b/db/smsmapper.php @@ -11,6 +11,7 @@ namespace OCA\OcSms\Db; +use lib\UUIDGenerator; use \OCP\IDBConnection; use \OCP\AppFramework\Db\Mapper; @@ -309,13 +310,33 @@ class SmsMapper extends Mapper { } private function getConversationForUserAndPhone($userId, $phoneNumber) { + $qb = $this->db->getQueryBuilder(); + $qb->select('id') ->from('ocsms_conversations') ->where($qb->expr()->andX( $qb->expr()->eq('user_id', $qb->createNamedParameter($userId)), $qb->expr()->in('phone_number', $qb->createNamedParameter($phoneNumber)) - ); + )); $result = $qb->execute(); + + if ($row = $result->fetch()) { + $conversation = new Conversation($userId, $phoneNumber); + $conversation->id = $row["id"]; + return $conversation; + } + return null; + } + + private function registerConversation($userId, $phoneNumber) { + $qb = $this->db->getQueryBuilder(); + $qb->insert('ocsms_conversations') + ->values([ + 'id' => $qb->createNamedParameter(UUIDGenerator::generate()), + 'user_id' => $qb->createNamedParameter($userId), + 'phone_number' => $qb->createNamedParameter($phoneNumber), + ]) + ->execute(); } public function writeToDB ($userId, $smsList, $purgeAllSmsBeforeInsert = false) { @@ -351,14 +372,19 @@ class SmsMapper extends Mapper { '(user_id, added, lastmodified, sms_flags, sms_date, sms_id,' . 'sms_address, sms_msg, sms_mailbox, sms_type) VALUES ' . '(?,?,?,?,?,?,?,?,?,?)'); - $result = $query->execute(array( + $query->execute(array( $userId, $now, $now, $smsFlags, $sms["date"], (int) $sms["_id"], $sms["address"], $sms["body"], (int) $sms["mbox"], (int) $sms["type"] )); - $this->getConversationForUserAndPhone($userId, $sms["address"]); + /* + $conversation = $this->getConversationForUserAndPhone($userId, $sms["address"]); + if ($conversation === null) { + $this->registerConversation($userId, $sms["address"]); + } + */ } $this->db->commit(); diff --git a/lib/UUIDGenerator.php b/lib/UUIDGenerator.php new file mode 100644 index 0000000..03e779d --- /dev/null +++ b/lib/UUIDGenerator.php @@ -0,0 +1,26 @@ + + * @copyright Loic Blot 2014-2018 + */ + +namespace lib; + + +class UUIDGenerator { + public static function generate() { + if (function_exists('com_create_guid') === true) { + return trim(com_create_guid(), '{}'); + } + + return strtolower(sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', + mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), + mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535)) + ); + } +} \ No newline at end of file