diff options
Diffstat (limited to 'apps/workflowengine/lib')
-rw-r--r-- | apps/workflowengine/lib/AppInfo/Application.php | 3 | ||||
-rw-r--r-- | apps/workflowengine/lib/Check/RequestTime.php | 17 | ||||
-rw-r--r-- | apps/workflowengine/lib/Controller/RequestTime.php | 53 |
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); + } +} |