From b8533626838e3864931b49e2685034041f879c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot=20=28=40U-Exp=29?= Date: Fri, 12 Sep 2014 16:31:08 +0200 Subject: [PATCH] Use mapper properly on controller. Need tests --- appinfo/application.php | 3 ++- controller/smscontroller.php | 43 +++++++++++++++++++++++++----------- db/smsmapper.php | 6 ++--- 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/appinfo/application.php b/appinfo/application.php index af9ad09..ed6c264 100644 --- a/appinfo/application.php +++ b/appinfo/application.php @@ -35,7 +35,8 @@ class Application extends App { return new SmsController( $c->query('AppName'), $c->query('Request'), - $c->query('UserId') + $c->query('UserId'), + $c->query('SmsMapper') ); }); diff --git a/controller/smscontroller.php b/controller/smscontroller.php index 4a36545..f67d07c 100644 --- a/controller/smscontroller.php +++ b/controller/smscontroller.php @@ -15,15 +15,19 @@ namespace OCA\OcSms\Controller; use \OCP\IRequest; use \OCP\AppFramework\Http\TemplateResponse; use \OCP\AppFramework\Controller; -use OCA\OcSms\Db\SmsMapper; +use \OCA\MyApp\Db\SmsMapper; class SmsController extends Controller { private $userId; + private $smsMapper; + // TMP + private $errorMsg; - public function __construct($appName, IRequest $request, $userId){ + public function __construct($appName, IRequest $request, $userId, SmsMapper $mapper){ parent::__construct($appName, $request); $this->userId = $userId; + $this->smsMapper = $mapper; } /** @@ -39,8 +43,18 @@ class SmsController extends Controller { * @NoAdminRequired */ public function push ($smsCount, $smsDatas) { + if ($this->checkPushStructure($smsCount, $smsDatas) === false) { + return $this->errorMsg; + } + + $smsMapper->saveAll($this->userId, $smsDatas); + return "OK"; + } + + private function checkPushStructure($smsCount, $smsDatas) { if ($smsCount != count($smsDatas)) { - return "Error: sms count invalid"; + $this->errorMsg = "Error: sms count invalid"; + return false; } foreach ($smsDatas as $sms) { @@ -48,35 +62,38 @@ class SmsController extends Controller { !array_key_exists("draft", $sms) || !array_key_exists("date", $sms) || !array_key_exists("seen", $sms) || !array_key_exists("body", $sms) || !array_key_exists("address", $sms)) { - return "Error: bad SMS entry"; + $this->errorMsg = "Error: bad SMS entry"; + return false; } if (!is_numeric($sms["id"])) { - return "Error: Invalid SMS ID"; + $this->errorMsg = "Error: Invalid SMS ID"; + return false; } if ($sms["read"] !== "true" && $sms["read"] !== "false") { - return "Error: Invalid SMS Read state"; + $this->errorMsg = "Error: Invalid SMS Read state"; + return false; } if ($sms["seen"] !== "true" && $sms["seen"] !== "false") { - return "Error: Invalid SMS Seen state"; + $this->errorMsg = "Error: Invalid SMS Seen state"; + return false; } if ($sms["draft"] !== "true" && $sms["draft"] !== "false") { - return "Error: Invalid SMS Draft state"; + $this->errorMsg = "Error: Invalid SMS Draft state"; + return false; } if (!is_numeric($sms["date"]) && $sms["date"] != 0 && $sms["date"] != 1) { - return "Error: Invalid SMS date"; + $this->errorMsg = "Error: Invalid SMS date"; + return false; } // @ TODO: test address and body ? } - - $smsMgr = new SmsMapper(); - $smsMgr->saveAll($smsDAtas); - return "OK"; + return true; } diff --git a/db/smsmapper.php b/db/smsmapper.php index d9f0f90..83e5a84 100644 --- a/db/smsmapper.php +++ b/db/smsmapper.php @@ -21,16 +21,16 @@ class SmsMapper extends Mapper { } // @TODO - public function saveAll($smsList) { + public function saveAll($userId, $smsList) { foreach ($smsList as $sms) { $query = \OC_DB::prepare('INSERT INTO *PREFIX*ocsms_smsdatas ' . '(user_id, added, lastmodified, sms_read, sms_seen, sms_date,' . 'sms_draft, sms_id, sms_address, sms_msg) VALUES ' . '(?,?,?,?,?,?,?,?,?,?)'); $result = $query->execute(array( - \OCP\User::getUser(),"NOW()","NOW()", + $userId, "NOW()", "NOW()", $sms["read"] === "true", $sms["seen"] === "true", - $sms["date"], $sms["draft"] === "true", $sms["id"], + (int) $sms["date"], $sms["draft"] === "true", $sms["id"], $sms["address"], $sms["body"] )); }