]> source.dussan.org Git - nextcloud-server.git/commitdiff
Remove php side of check registration
authorJoas Schilling <coding@schilljs.com>
Wed, 27 Jul 2016 06:54:34 +0000 (08:54 +0200)
committerJoas Schilling <coding@schilljs.com>
Wed, 27 Jul 2016 08:21:26 +0000 (10:21 +0200)
apps/workflowengine/appinfo/routes.php
apps/workflowengine/lib/AppInfo/Application.php
apps/workflowengine/lib/Controller/FlowOperations.php
apps/workflowengine/lib/Manager.php
lib/public/WorkflowEngine/RegisterCheckEvent.php [deleted file]

index 69478b1715cb971fd6681cf178dd5f1d958bfa43..b8c9ae1c236a29a3cc8f95776726fb4f97fe4d2d 100644 (file)
@@ -21,7 +21,6 @@
 
 return [
        'routes' => [
-               ['name' => 'flowOperations#getChecks', 'url' => '/checks', 'verb' => 'GET'], // TODO rm and do via js?
                ['name' => 'flowOperations#getOperations', 'url' => '/operations', 'verb' => 'GET'],
                ['name' => 'flowOperations#addOperation', 'url' => '/operations', 'verb' => 'POST'],
                ['name' => 'flowOperations#updateOperation', 'url' => '/operations/{id}', 'verb' => 'PUT'],
index c196ecd955c598bf78718d69e9169861a074a0f3..843395030472654d6d5832a0254fd47d6ffa4437 100644 (file)
@@ -37,18 +37,6 @@ class Application extends \OCP\AppFramework\App {
         */
        public function registerHooksAndListeners() {
                $dispatcher = $this->getContainer()->getServer()->getEventDispatcher();
-               $dispatcher->addListener(
-                       'OCP\WorkflowEngine\RegisterCheckEvent',
-                       function(RegisterCheckEvent $event) {
-                               $event->addCheck(
-                                       'OCA\WorkflowEngine\Check\UserGroupMembership',
-                                       'User group membership',
-                                       ['is', '!is']
-                               );
-                       },
-                       -100
-               );
-
                $dispatcher->addListener(
                        'OCP\WorkflowEngine::loadAdditionalSettingScripts',
                        function() {
index e0836c727a27b7ae12803bb0eb13d3948688f4be..94b8b9ddc79bf7dab804e82d3f6efcc379106ffa 100644 (file)
@@ -26,38 +26,19 @@ use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\IRequest;
-use OCP\WorkflowEngine\RegisterCheckEvent;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 
 class FlowOperations extends Controller {
 
        /** @var Manager */
        protected $manager;
 
-       /** @var EventDispatcherInterface */
-       protected $dispatcher;
-
        /**
         * @param IRequest $request
         * @param Manager $manager
-        * @param EventDispatcherInterface $dispatcher
         */
-       public function __construct(IRequest $request, Manager $manager, EventDispatcherInterface $dispatcher) {
+       public function __construct(IRequest $request, Manager $manager) {
                parent::__construct('workflowengine', $request);
                $this->manager = $manager;
-               $this->dispatcher = $dispatcher;
-       }
-
-       /**
-        * @NoCSRFRequired
-        *
-        * @return JSONResponse
-        */
-       public function getChecks() {
-               $event = new RegisterCheckEvent();
-               $this->dispatcher->dispatch('OCP\WorkflowEngine\RegisterCheckEvent', $event);
-
-               return new JSONResponse($event->getChecks());
        }
 
        /**
index 98c34e894ccd0cde28ecdddd5608d924fc697b25..f2a04dfb0fa83e94c690d4f39f0f631724445360 100644 (file)
@@ -110,8 +110,8 @@ class Manager implements IManager {
                        $checkInstance->setFileInfo($this->storage, $this->path);
                        return $checkInstance->executeCheck($check['operator'], $check['value']);
                } else {
-                       // Check is invalid, assume it matches.
-                       return true;
+                       // Check is invalid
+                       throw new \RuntimeException('Check ' . htmlspecialchars($check['class']) . ' is invalid or does not exist');
                }
        }
 
@@ -258,10 +258,12 @@ class Manager implements IManager {
                }
                $result->closeCursor();
 
-               // TODO What if a check is missing? Should we throw?
-               // As long as we only allow AND-concatenation of checks, a missing check
-               // is like a matching check, so it evaluates to true and therefor blocks
-               // access. So better save than sorry.
+               $checkIds = array_diff($checkIds, array_keys($checks));
+
+               if (!empty($checkIds)) {
+                       $missingCheck = array_pop($checkIds);
+                       throw new \RuntimeException('Check #' . htmlspecialchars($missingCheck) . ' is invalid or does not exist');
+               }
 
                return $checks;
        }
diff --git a/lib/public/WorkflowEngine/RegisterCheckEvent.php b/lib/public/WorkflowEngine/RegisterCheckEvent.php
deleted file mode 100644 (file)
index e08aae5..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>
- *
- * @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 OCP\WorkflowEngine;
-
-
-use Symfony\Component\EventDispatcher\Event;
-
-/**
- * Class RegisterCheckEvent
- *
- * @package OCP\WorkflowEngine
- * @since 9.1
- */
-class RegisterCheckEvent extends Event {
-
-       /** @var array[] */
-       protected $checks = [];
-
-       /**
-        * @param string $class
-        * @param string $name
-        * @param string[] $operators
-        * @throws \OutOfBoundsException when the check class is already registered
-        * @throws \OutOfBoundsException when the provided information is invalid
-        * @since 9.1
-        */
-       public function addCheck($class, $name, array $operators) {
-               if (!is_string($class)) {
-                       throw new \OutOfBoundsException('Given class name is not a string');
-               }
-
-               if (isset($this->checks[$class])) {
-                       throw new \OutOfBoundsException('Duplicate check class "' . $class . '"');
-               }
-
-               if (!is_string($name)) {
-                       throw new \OutOfBoundsException('Given check name is not a string');
-               }
-
-               foreach ($operators as $operator) {
-                       if (!is_string($operator)) {
-                               throw new \OutOfBoundsException('At least one of the operators is not a string');
-                       }
-               }
-
-               $this->checks[$class] = [
-                       'class' => $class,
-                       'name' => $name,
-                       'operators' => $operators,
-               ];
-       }
-
-       /**
-        * @return array[]
-        * @since 9.1
-        */
-       public function getChecks() {
-               return array_values($this->checks);
-       }
-}