summaryrefslogtreecommitdiffstats
path: root/apps/workflowengine/lib
diff options
context:
space:
mode:
Diffstat (limited to 'apps/workflowengine/lib')
-rw-r--r--apps/workflowengine/lib/AppInfo/Application.php3
-rw-r--r--apps/workflowengine/lib/Check/RequestTime.php17
-rw-r--r--apps/workflowengine/lib/Controller/RequestTime.php53
3 files changed, 64 insertions, 9 deletions
diff --git a/apps/workflowengine/lib/AppInfo/Application.php b/apps/workflowengine/lib/AppInfo/Application.php
index 7adc4f6864d..b5e769d01d7 100644
--- a/apps/workflowengine/lib/AppInfo/Application.php
+++ b/apps/workflowengine/lib/AppInfo/Application.php
@@ -30,6 +30,7 @@ class Application extends \OCP\AppFramework\App {
parent::__construct('workflowengine');
$this->getContainer()->registerAlias('FlowOperationsController', 'OCA\WorkflowEngine\Controller\FlowOperations');
+ $this->getContainer()->registerAlias('RequestTimeController', 'OCA\WorkflowEngine\Controller\RequestTime');
}
/**
@@ -51,6 +52,8 @@ class Application extends \OCP\AppFramework\App {
'systemtags/systemtagscollection',
]);
+ vendor_script('jsTimezoneDetect/jstz');
+
script('workflowengine', [
'admin',
diff --git a/apps/workflowengine/lib/Check/RequestTime.php b/apps/workflowengine/lib/Check/RequestTime.php
index 4457f9d038c..a114819d450 100644
--- a/apps/workflowengine/lib/Check/RequestTime.php
+++ b/apps/workflowengine/lib/Check/RequestTime.php
@@ -29,7 +29,7 @@ use OCP\WorkflowEngine\ICheck;
class RequestTime implements ICheck {
const REGEX_TIME = '([0-1][0-9]|2[0-3]):([0-5][0-9])';
- const REGEX_TIMEZONE = '([a-zA-Z]+(?:\\\\\\/[a-zA-Z\-\_]+)+)';
+ const REGEX_TIMEZONE = '([a-zA-Z]+(?:\\/[a-zA-Z\-\_]+)+)';
/** @var bool[] */
protected $cachedResults;
@@ -110,16 +110,15 @@ class RequestTime implements ICheck {
throw new \UnexpectedValueException('Invalid time limits', 2);
}
- try {
- new \DateTimeZone(stripslashes($matches[3]));
- } catch(\Exception $e) {
- throw new \UnexpectedValueException('Invalid timezone1', 3);
+ $values = json_decode($value, true);
+ $time1 = \DateTime::createFromFormat('H:i e', $values[0]);
+ if ($time1 === false) {
+ throw new \UnexpectedValueException('Invalid start time given', 3);
}
- try {
- new \DateTimeZone(stripslashes($matches[6]));
- } catch(\Exception $e) {
- throw new \UnexpectedValueException('Invalid timezone2', 3);
+ $time2 = \DateTime::createFromFormat('H:i e', $values[1]);
+ if ($time2 === false) {
+ throw new \UnexpectedValueException('Invalid end time given', 3);
}
}
}
diff --git a/apps/workflowengine/lib/Controller/RequestTime.php b/apps/workflowengine/lib/Controller/RequestTime.php
new file mode 100644
index 00000000000..e596ee32a9e
--- /dev/null
+++ b/apps/workflowengine/lib/Controller/RequestTime.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\WorkflowEngine\Controller;
+
+use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\JSONResponse;
+
+class RequestTime extends Controller {
+
+ /**
+ * @NoCSRFRequired
+ * @NoAdminRequired
+ *
+ * @param string $search
+ * @return JSONResponse
+ */
+ public function getTimezones($search = '') {
+ $timezones = \DateTimeZone::listIdentifiers();
+
+ if ($search !== '') {
+ $timezones = array_filter($timezones, function ($timezone) use ($search) {
+ return strpos(strtolower($timezone), strtolower($search)) !== false;
+ });
+ }
+
+ $timezones = array_slice($timezones, 0, 10);
+
+ $response = [];
+ foreach ($timezones as $timezone) {
+ $response[$timezone] = $timezone;
+ }
+ return new JSONResponse($response);
+ }
+}