From b49239636c35915916de47393c8ea12b1206e7fc Mon Sep 17 00:00:00 2001 From: dartcafe Date: Tue, 31 Mar 2020 07:26:00 +0200 Subject: force options order by timestamp in date polls --- lib/Controller/OptionController.php | 27 +++++++++++++++++++++------ lib/Db/Option.php | 15 ++++++++++++++- 2 files changed, 35 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/Controller/OptionController.php b/lib/Controller/OptionController.php index d6708746..798a3edf 100644 --- a/lib/Controller/OptionController.php +++ b/lib/Controller/OptionController.php @@ -40,6 +40,7 @@ use OCA\Polls\Db\Option; use OCA\Polls\Db\OptionMapper; use OCA\Polls\Service\LogService; use OCA\Polls\Model\Acl; +use OCP\ILogger; class OptionController extends Controller { @@ -50,6 +51,7 @@ class OptionController extends Controller { private $pollMapper; private $logService; private $acl; + private $logger; /** * OptionController constructor. @@ -71,7 +73,8 @@ class OptionController extends Controller { IGroupManager $groupManager, PollMapper $pollMapper, LogService $logService, - Acl $acl + Acl $acl, + ILogger $logger ) { parent::__construct($appName, $request); $this->userId = $UserId; @@ -80,7 +83,8 @@ class OptionController extends Controller { $this->pollMapper = $pollMapper; $this->logService = $logService; $this->acl = $acl; - } + $this->logger = $logger; +} /** @@ -134,17 +138,23 @@ class OptionController extends Controller { public function add($option) { try { - $this->acl->setPollId($option['pollId']); - + // $this->acl->setPollId($option['pollId']); if (!$this->acl->setPollId($option['pollId'])->getAllowEdit()) { return new DataResponse(null, Http::STATUS_UNAUTHORIZED); } + $this->logger->alert(json_encode($this->acl)); + $NewOption = new Option(); $NewOption->setPollId($option['pollId']); $NewOption->setPollOptionText(trim(htmlspecialchars($option['pollOptionText']))); $NewOption->setTimestamp($option['timestamp']); - $NewOption->setOrder($option['order']); + + if ($option['timestamp'] === 0) { + $NewOption->setOrder($option['order']); + } else { + $NewOption->setOrder($option['timestamp']); + } $this->mapper->insert($NewOption); $this->logService->setLog($option['pollId'], 'addOption'); @@ -173,7 +183,12 @@ class OptionController extends Controller { $updateOption->setPollOptionText(trim(htmlspecialchars($option['pollOptionText']))); $updateOption->setTimestamp($option['timestamp']); - $updateOption->setOrder($option['order']); + + if ($option['timestamp'] === 0) { + $NewOption->setOrder($option['order']); + } else { + $NewOption->setOrder($option['timestamp']); + } $this->mapper->update($updateOption); $this->logService->setLog($option['pollId'], 'updateOption'); diff --git a/lib/Db/Option.php b/lib/Db/Option.php index 9f673725..48e47be9 100644 --- a/lib/Db/Option.php +++ b/lib/Db/Option.php @@ -69,8 +69,21 @@ class Option extends Entity implements JsonSerializable { 'pollId' => intval($this->pollId), 'pollOptionText' => htmlspecialchars_decode($this->pollOptionText), 'timestamp' => intval($timestamp), - 'order' => intval($this->order) + 'order' => setOrder($this->timestamp, $this->order) ]; } + + /** + * Temporary fix + * Make sure, order is eqal to timestamp in date polls + */ + // TODO: remove by time + private function setOrder($timestamp, $order) { + if ($timestamp > 0) { + return intval($timestamp); + } else { + return intval($order); + } + } } -- cgit v1.2.3