diff options
author | René Gieling <github@dartcafe.de> | 2020-04-04 09:54:39 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-04 09:54:39 +0300 |
commit | 682f307a82c7f26c6938151f6b9ea8a484548920 (patch) | |
tree | a5c8268d201f0b228e1351afb621c1a190d973b7 /lib | |
parent | 8d89f84282e63351817a1c76b426087cb668dee0 (diff) | |
parent | ab752982054947ea1dcb201eb92442db703ce5eb (diff) |
Merge pull request #877 from nextcloud/fix-order
force options order by timestamp in date polls
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Controller/OptionController.php | 35 | ||||
-rw-r--r-- | lib/Db/Option.php | 15 |
2 files changed, 36 insertions, 14 deletions
diff --git a/lib/Controller/OptionController.php b/lib/Controller/OptionController.php index d6708746..35dce8b0 100644 --- a/lib/Controller/OptionController.php +++ b/lib/Controller/OptionController.php @@ -44,7 +44,7 @@ use OCA\Polls\Model\Acl; class OptionController extends Controller { private $userId; - private $mapper; + private $optionMapper; private $groupManager; private $pollMapper; @@ -56,7 +56,7 @@ class OptionController extends Controller { * @param string $appName * @param $UserId * @param IRequest $request - * @param OptionMapper $mapper + * @param OptionMapper $optionMapper * @param IGroupManager $groupManager * @param PollMapper $pollMapper * @param LogService $logService @@ -67,7 +67,7 @@ class OptionController extends Controller { string $appName, $UserId, IRequest $request, - OptionMapper $mapper, + OptionMapper $optionMapper, IGroupManager $groupManager, PollMapper $pollMapper, LogService $logService, @@ -75,7 +75,7 @@ class OptionController extends Controller { ) { parent::__construct($appName, $request); $this->userId = $UserId; - $this->mapper = $mapper; + $this->optionMapper = $optionMapper; $this->groupManager = $groupManager; $this->pollMapper = $pollMapper; $this->logService = $logService; @@ -97,7 +97,7 @@ class OptionController extends Controller { $this->acl->setPollId($pollId); } - return new DataResponse($this->mapper->findByPoll($pollId), Http::STATUS_OK); + return new DataResponse($this->optionMapper->findByPoll($pollId), Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse($e, Http::STATUS_NOT_FOUND); @@ -134,19 +134,24 @@ class OptionController extends Controller { public function add($option) { try { - $this->acl->setPollId($option['pollId']); if (!$this->acl->setPollId($option['pollId'])->getAllowEdit()) { return new DataResponse(null, Http::STATUS_UNAUTHORIZED); } + $NewOption = new Option(); $NewOption->setPollId($option['pollId']); $NewOption->setPollOptionText(trim(htmlspecialchars($option['pollOptionText']))); $NewOption->setTimestamp($option['timestamp']); - $NewOption->setOrder($option['order']); - $this->mapper->insert($NewOption); + if ($option['timestamp'] === 0) { + $NewOption->setOrder($option['order']); + } else { + $NewOption->setOrder($option['timestamp']); + } + + $this->optionMapper->insert($NewOption); $this->logService->setLog($option['pollId'], 'addOption'); return new DataResponse($NewOption, Http::STATUS_OK); @@ -165,7 +170,7 @@ class OptionController extends Controller { public function update($option) { try { - $updateOption = $this->mapper->find($option['id']); + $updateOption = $this->optionMapper->find($option['id']); if (!$this->acl->setPollId($option['pollId'])->getAllowEdit()) { return new DataResponse(null, Http::STATUS_UNAUTHORIZED); @@ -173,9 +178,14 @@ class OptionController extends Controller { $updateOption->setPollOptionText(trim(htmlspecialchars($option['pollOptionText']))); $updateOption->setTimestamp($option['timestamp']); - $updateOption->setOrder($option['order']); - $this->mapper->update($updateOption); + if ($option['timestamp'] === 0) { + $NewOption->setOrder($option['order']); + } else { + $NewOption->setOrder($option['timestamp']); + } + + $this->optionMapper->update($updateOption); $this->logService->setLog($option['pollId'], 'updateOption'); return new DataResponse($updateOption, Http::STATUS_OK); @@ -192,14 +202,13 @@ class OptionController extends Controller { * @return DataResponse */ public function remove($option) { - // throw new \Exception( gettype($option) ); try { if (!$this->acl->setPollId($option['pollId'])->getAllowEdit()) { return new DataResponse(null, Http::STATUS_UNAUTHORIZED); } - $this->mapper->remove($option['id']); + $this->optionMapper->remove($option['id']); $this->logService->setLog($option['pollId'], 'deleteOption'); return new DataResponse(array( diff --git a/lib/Db/Option.php b/lib/Db/Option.php index 9f673725..f8c442ac 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' => $this->setOrder(intval($this->timestamp), intval($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 $order; + } else { + return $timestamp; + } + } } |