mirror of
https://github.com/nerzhul/ocsms.git
synced 2025-06-08 16:36:25 +00:00
Add replace function to purge all database before adding every record. Also add a delete before insert function when writing to DB, preventing SMS duplicates
This commit is contained in:
parent
128167196a
commit
ad1353c63c
@ -11,18 +11,11 @@
|
|||||||
|
|
||||||
namespace OCA\OcSms\AppInfo;
|
namespace OCA\OcSms\AppInfo;
|
||||||
|
|
||||||
/**
|
|
||||||
* Create your routes in here. The name is the lowercase name of the controller
|
|
||||||
* without the controller part, the stuff after the hash is the method.
|
|
||||||
* e.g. page#index -> PageController->index()
|
|
||||||
*
|
|
||||||
* The controller class has to be registered in the application.php file since
|
|
||||||
* it's instantiated in there
|
|
||||||
*/
|
|
||||||
$application = new Application();
|
$application = new Application();
|
||||||
|
|
||||||
$application->registerRoutes($this, array('routes' => array(
|
$application->registerRoutes($this, array('routes' => array(
|
||||||
array('name' => 'sms#index', 'url' => '/', 'verb' => 'GET'),
|
array('name' => 'sms#index', 'url' => '/', 'verb' => 'GET'),
|
||||||
array('name' => 'sms#push', 'url' => '/push', 'verb' => 'POST'),
|
array('name' => 'sms#push', 'url' => '/push', 'verb' => 'POST'),
|
||||||
|
array('name' => 'sms#replace', 'url' => '/replace', 'verb' => 'POST'),
|
||||||
array('name' => 'sms#retrieve_all_ids', 'url' => '/get/ids/all', 'verb' => 'GET'),
|
array('name' => 'sms#retrieve_all_ids', 'url' => '/get/ids/all', 'verb' => 'GET'),
|
||||||
)));
|
)));
|
||||||
|
@ -59,6 +59,18 @@ class SmsController extends Controller {
|
|||||||
return new JSONResponse(array("status" => true, "msg" => "OK"));
|
return new JSONResponse(array("status" => true, "msg" => "OK"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @NoAdminRequired
|
||||||
|
*/
|
||||||
|
public function replace($smsCount, $smsDatas) {
|
||||||
|
if ($this->checkPushStructure($smsCount, $smsDatas, true) === false) {
|
||||||
|
return new JSONResponse(array("status" => false, "msg" => $this->errorMsg));
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->smsMapper->writeToDB($this->userId, $smsDatas, true);
|
||||||
|
return new JSONResponse(array("status" => true, "msg" => "OK"));
|
||||||
|
}
|
||||||
|
|
||||||
private function checkPushStructure ($smsCount, $smsDatas) {
|
private function checkPushStructure ($smsCount, $smsDatas) {
|
||||||
if ($smsCount != count($smsDatas)) {
|
if ($smsCount != count($smsDatas)) {
|
||||||
$this->errorMsg = "Error: sms count invalid";
|
$this->errorMsg = "Error: sms count invalid";
|
||||||
|
@ -35,10 +35,10 @@ class SmsMapper extends Mapper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function writeToDB ($userId, $smsList, $purgeBeforeInsert = false) {
|
public function writeToDB ($userId, $smsList, $purgeAllSmsBeforeInsert = false) {
|
||||||
\OCP\DB::beginTransaction();
|
\OCP\DB::beginTransaction();
|
||||||
|
|
||||||
if ($purgeBeforeInsert === true) {
|
if ($purgeAllSmsBeforeInsert === true) {
|
||||||
$query = \OC_DB::prepare('DELETE FROM *PREFIX*ocsms_smsdatas ' .
|
$query = \OC_DB::prepare('DELETE FROM *PREFIX*ocsms_smsdatas ' .
|
||||||
'WHERE user_id = ?');
|
'WHERE user_id = ?');
|
||||||
$result = $query->execute(array($userId));
|
$result = $query->execute(array($userId));
|
||||||
@ -50,6 +50,14 @@ class SmsMapper extends Mapper {
|
|||||||
$sms["seen"] === "true" ? "1" : "0"
|
$sms["seen"] === "true" ? "1" : "0"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Remove previous record
|
||||||
|
// @ TODO: only update the required fields, getAllIds can be useful
|
||||||
|
$query = \OC_DB::prepare('DELETE FROM *PREFIX*ocsms_smsdatas ' .
|
||||||
|
'WHERE user_id = ? AND sms_id = ?');
|
||||||
|
$result = $query->execute(array(
|
||||||
|
$userId, (int) $sms["_id"]
|
||||||
|
));
|
||||||
|
|
||||||
$query = \OC_DB::prepare('INSERT INTO *PREFIX*ocsms_smsdatas ' .
|
$query = \OC_DB::prepare('INSERT INTO *PREFIX*ocsms_smsdatas ' .
|
||||||
'(user_id, added, lastmodified, sms_flags, sms_date, sms_id,' .
|
'(user_id, added, lastmodified, sms_flags, sms_date, sms_id,' .
|
||||||
'sms_address, sms_msg, sms_mailbox, sms_type) VALUES ' .
|
'sms_address, sms_msg, sms_mailbox, sms_type) VALUES ' .
|
||||||
|
Loading…
x
Reference in New Issue
Block a user