Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/polls.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRené Gieling <github@dartcafe.de>2020-04-04 09:54:39 +0300
committerGitHub <noreply@github.com>2020-04-04 09:54:39 +0300
commit682f307a82c7f26c6938151f6b9ea8a484548920 (patch)
treea5c8268d201f0b228e1351afb621c1a190d973b7 /lib
parent8d89f84282e63351817a1c76b426087cb668dee0 (diff)
parentab752982054947ea1dcb201eb92442db703ce5eb (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.php35
-rw-r--r--lib/Db/Option.php15
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;
+ }
+ }
}