migrate therinaldos.com data
Build & Deploy to DigitalOcean Space / build (push) Failing after 2m38s

This commit is contained in:
2024-05-05 15:50:45 -04:00
commit ef1ff240d4
23182 changed files with 3801898 additions and 0 deletions
@@ -0,0 +1,57 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2020 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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\EntityContext;
/**
* Interface IContextPortation
*
* Occasionally an IEntity needs to be reused not in the same, but a new
* request. As IEntities receive custom context information during a flow
* cycle, sometimes it might be necessary to export context identifiers to
* be able to recreate the state at a later point. For example: handling
* translations in a notification INotifier.
*
*
* @since 20.0.0
*/
interface IContextPortation {
/**
* All relevant context identifiers that are needed to restore the state
* of an entity shall be returned with this method. The resulting array
* must be JSON-serializable.
*
* @since 20.0.0
*/
public function exportContextIDs(): array;
/**
* This method receives the array as returned by `exportContextIDs()` in
* order to restore the state of the IEntity if necessary.
*
* @since 20.0.0
*/
public function importContextIDs(array $contextIDs): void;
}
@@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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\EntityContext;
/**
* Interface IDisplayName
*
*
* @since 18.0.0
*/
interface IDisplayName {
/**
* returns the end user facing name of the object related to the entity
*
* @since 18.0.0
*/
public function getDisplayName(): string;
}
@@ -0,0 +1,46 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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\EntityContext;
/**
* Interface IDisplayText
*
*
* @since 18.0.0
*/
interface IDisplayText {
/**
* returns translated text used for display to the end user. For instance,
* it can describe the event in a human readable way.
*
* The entity may react to a verbosity level that is provided. With the
* basic level, 0, it would return brief information, and more with higher
* numbers. All information shall be shown at a level of 3.
*
* @since 18.0.0
*/
public function getDisplayText(int $verbosity = 0): string;
}
@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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\EntityContext;
/**
* Interface IIcon
*
*
* @since 18.0.0
*/
interface IIcon {
/**
* returns a URL to an icon that is related to the entity, for instance
* a group icon for groups.
*
* @since 18.0.0
*/
public function getIconUrl(): string;
}
@@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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\EntityContext;
/**
* Interface IUrl
*
*
* @since 18.0.0
*/
interface IUrl {
/**
* returns a URL that is related to the entity, e.g. the link to a share
*
* @since 18.0.0
*/
public function getUrl(): string;
}
@@ -0,0 +1,37 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2020 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author 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\Events;
use OCP\EventDispatcher\Event;
/**
* Emitted when the workflow engine settings page is loaded.
*
* @since 20.0.0
*/
class LoadSettingsScriptsEvent extends Event {
}
@@ -0,0 +1,54 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
*
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @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\Events;
use OCP\EventDispatcher\Event;
use OCP\WorkflowEngine\ICheck;
use OCP\WorkflowEngine\IManager;
/**
* @since 18.0.0
*/
class RegisterChecksEvent extends Event {
/** @var IManager */
private $manager;
/**
* @since 18.0.0
*/
public function __construct(IManager $manager) {
parent::__construct();
$this->manager = $manager;
}
/**
* @since 18.0.0
*/
public function registerCheck(ICheck $check): void {
$this->manager->registerCheck($check);
}
}
@@ -0,0 +1,54 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
*
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @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\Events;
use OCP\EventDispatcher\Event;
use OCP\WorkflowEngine\IEntity;
use OCP\WorkflowEngine\IManager;
/**
* @since 18.0.0
*/
class RegisterEntitiesEvent extends Event {
/** @var IManager */
private $manager;
/**
* @since 18.0.0
*/
public function __construct(IManager $manager) {
parent::__construct();
$this->manager = $manager;
}
/**
* @since 18.0.0
*/
public function registerEntity(IEntity $entity): void {
$this->manager->registerEntity($entity);
}
}
@@ -0,0 +1,54 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
*
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @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\Events;
use OCP\EventDispatcher\Event;
use OCP\WorkflowEngine\IManager;
use OCP\WorkflowEngine\IOperation;
/**
* @since 18.0.0
*/
class RegisterOperationsEvent extends Event {
/** @var IManager */
private $manager;
/**
* @since 18.0.0
*/
public function __construct(IManager $manager) {
parent::__construct();
$this->manager = $manager;
}
/**
* @since 18.0.0
*/
public function registerOperation(IOperation $operation): void {
$this->manager->registerOperation($operation);
}
}
@@ -0,0 +1,80 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
*
* @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;
/**
* Class GenericEntityEvent
*
*
* @since 18.0.0
*/
class GenericEntityEvent implements IEntityEvent {
/** @var string */
private $displayName;
/** @var string */
private $eventName;
/**
* GenericEntityEvent constructor.
*
* @since 18.0.0
*/
public function __construct(string $displayName, string $eventName) {
if (trim($displayName) === '') {
throw new \InvalidArgumentException('DisplayName must not be empty');
}
if (trim($eventName) === '') {
throw new \InvalidArgumentException('EventName must not be empty');
}
$this->displayName = trim($displayName);
$this->eventName = trim($eventName);
}
/**
* returns a translated name to be presented in the web interface.
*
* Example: "created" (en), "kreita" (eo)
*
* @since 18.0.0
*/
public function getDisplayName(): string {
return $this->displayName;
}
/**
* returns the event name that is emitted by the EventDispatcher, e.g.:
*
* Example: "OCA\MyApp\Factory\Cats::postCreated"
*
* @since 18.0.0
*/
public function getEventName(): string {
return $this->eventName;
}
}
@@ -0,0 +1,71 @@
<?php
/**
* @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author 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;
/**
* Interface ICheck
*
* @since 9.1
*/
interface ICheck {
/**
* @param string $operator
* @param string $value
* @return bool
* @since 9.1
*/
public function executeCheck($operator, $value);
/**
* @param string $operator
* @param string $value
* @throws \UnexpectedValueException
* @since 9.1
*/
public function validateCheck($operator, $value);
/**
* returns a list of Entities the checker supports. The values must match
* the class name of the entity.
*
* An empty result means the check is universally available.
*
* @since 18.0.0
*/
public function supportedEntities(): array;
/**
* returns whether the operation can be used in the requested scope.
*
* Scope IDs are defined as constants in OCP\WorkflowEngine\IManager. At
* time of writing these are SCOPE_ADMIN and SCOPE_USER.
*
* For possibly unknown future scopes the recommended behaviour is: if
* user scope is permitted, the default behaviour should return `true`,
* otherwise `false`.
*
* @since 18.0.0
*/
public function isAvailableForScope(int $scope): bool;
}
@@ -0,0 +1,54 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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;
/**
* Interface IComplexOperation
*
* This interface represents an operator that is less generic and indicates
* that some of the tasks it does itself instead of relying on the engine.
* This includes:
*
* * registering listeners – the implementing app needs to ensure that the
* business logic registers listeners to the events it listens to. For example
* when direct storage access is required, adding a wrapper or listening to
* a specific one is required over usual file events.
*
*
* @since 18.0.0
*/
interface IComplexOperation extends IOperation {
/**
* As IComplexOperation chooses the triggering events itself, a hint has
* to be shown to the user so make clear when this operation is becoming
* active. This method returns such a translated string.
*
* Example: "When a file is accessed" (en)
*
* @since 18.0.0
*/
public function getTriggerHint(): string;
}
@@ -0,0 +1,83 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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 OCP\EventDispatcher\Event;
/**
* Interface IEntity
*
* This interface represents an entity that supports events the workflow engine
* can listen to. For example a file with the create, update, etc. events.
*
* Ensure to listen to 'OCP/WorkflowEngine::loadEntities' for registering your
* entities.
*
* @since 18.0.0
*/
interface IEntity {
/**
* returns a translated name to be presented in the web interface.
*
* Example: "File" (en), "Dosiero" (eo)
*
* @since 18.0.0
*/
public function getName(): string;
/**
* returns the URL to the icon of the entity for display in the web interface.
*
* Usually, the implementation would utilize the `imagePath()` method of the
* `\OCP\IURLGenerator` instance and simply return its result.
*
* Example implementation: return $this->urlGenerator->imagePath('myApp', 'cat.svg');
*
* @since 18.0.0
*/
public function getIcon(): string;
/**
* returns a list of supported events
*
* @return IEntityEvent[]
* @since 18.0.0
*/
public function getEvents(): array;
/**
* @since 18.0.0
*/
public function prepareRuleMatcher(IRuleMatcher $ruleMatcher, string $eventName, Event $event): void;
/**
* returns whether the provided user id is allowed to run a flow against
* the known context
*
* @since 18.0.0
*/
public function isLegitimatedForUserId(string $userId): bool;
}
@@ -0,0 +1,50 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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;
/**
* Interface IFileCheck
*
* @since 18.0.0
*/
interface IEntityCheck {
/**
* Equips the check with a subject fitting the Entity. For instance, an
* entity of File will receive an instance of OCP\Files\Node, or a comment
* entity might get an IComment.
*
* The implementing check must be aware of the incoming type.
*
* If an unsupported subject is passed the implementation MAY throw an
* \UnexpectedValueException.
*
* @param IEntity $entity
* @param mixed $subject
* @throws \UnexpectedValueException
* @since 18.0.0
*/
public function setEntitySubject(IEntity $entity, $subject): void;
}
@@ -0,0 +1,54 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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;
/**
* Interface IEntityEvent
*
* represents an entity event that is dispatched via EventDispatcher
*
*
* @since 18.0.0
*/
interface IEntityEvent {
/**
* returns a translated name to be presented in the web interface.
*
* Example: "created" (en), "kreita" (eo)
*
* @since 18.0.0
*/
public function getDisplayName(): string;
/**
* returns the event name that is emitted by the EventDispatcher, e.g.:
*
* Example: "OCA\MyApp\Factory\Cats::postCreated"
*
* @since 18.0.0
*/
public function getEventName(): string;
}
@@ -0,0 +1,44 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author 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 OCP\WorkflowEngine;
use OCP\Files\Storage\IStorage;
/**
* Interface IFileCheck
*
* @since 18.0.0
*/
interface IFileCheck extends IEntityCheck {
/**
* @param IStorage $storage
* @param string $path
* @param bool $isDir
* @since 18.0.0
*/
public function setFileInfo(IStorage $storage, string $path, bool $isDir = false): void;
}
@@ -0,0 +1,75 @@
<?php
/**
* @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @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;
/**
* Interface IManager
*
* @since 9.1
*/
interface IManager {
public const SCOPE_ADMIN = 0;
public const SCOPE_USER = 1;
/**
* @since 21.0.0
*/
public const MAX_CHECK_VALUE_BYTES = 2048;
/**
* @since 21.0.0
*/
public const MAX_OPERATION_VALUE_BYTES = 4096;
/**
* Listen to `OCP\WorkflowEngine\Events\RegisterEntitiesEvent` at the
* IEventDispatcher for registering your entities.
*
* @since 18.0.0
*/
public function registerEntity(IEntity $entity): void;
/**
* Listen to `OCP\WorkflowEngine\Events\RegisterOperationsEvent` at the
* IEventDispatcher for registering your operators.
*
* @since 18.0.0
*/
public function registerOperation(IOperation $operator): void;
/**
* Listen to `OCP\WorkflowEngine\Events\RegisterChecksEvent` at the
* IEventDispatcher for registering your operators.
*
* @since 18.0.0
*/
public function registerCheck(ICheck $check): void;
/**
* @since 18.0.0
*/
public function getRuleMatcher(): IRuleMatcher;
}
@@ -0,0 +1,105 @@
<?php
/**
* @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author 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 OCP\WorkflowEngine;
use OCP\EventDispatcher\Event;
/**
* Interface IOperation
*
* @since 9.1
*/
interface IOperation {
/**
* returns a translated name to be presented in the web interface
*
* Example: "Automated tagging" (en), "Aŭtomata etikedado" (eo)
*
* @since 18.0.0
*/
public function getDisplayName(): string;
/**
* returns a translated, descriptive text to be presented in the web interface.
*
* It should be short and precise.
*
* Example: "Tag based automatic deletion of files after a given time." (en)
*
* @since 18.0.0
*/
public function getDescription(): string;
/**
* returns the URL to the icon of the operator for display in the web interface.
*
* Usually, the implementation would utilize the `imagePath()` method of the
* `\OCP\IURLGenerator` instance and simply return its result.
*
* Example implementation: return $this->urlGenerator->imagePath('myApp', 'cat.svg');
*
* @since 18.0.0
*/
public function getIcon(): string;
/**
* returns whether the operation can be used in the requested scope.
*
* Scope IDs are defined as constants in OCP\WorkflowEngine\IManager. At
* time of writing these are SCOPE_ADMIN and SCOPE_USER.
*
* For possibly unknown future scopes the recommended behaviour is: if
* user scope is permitted, the default behaviour should return `true`,
* otherwise `false`.
*
* @param int $scope
* @psalm-param IManager::SCOPE_* $scope
*
* @since 18.0.0
*/
public function isAvailableForScope(int $scope): bool;
/**
* Validates whether a configured workflow rule is valid. If it is not,
* an `\UnexpectedValueException` is supposed to be thrown.
*
* @throws \UnexpectedValueException
* @since 9.1
*/
public function validateOperation(string $name, array $checks, string $operation): void;
/**
* Is being called by the workflow engine when an event was triggered that
* is configured for this operation. An evaluation whether the event
* qualifies for this operation to run has still to be done by the
* implementor by calling the RuleMatchers getMatchingOperations method
* and evaluating the results.
*
* If the implementor is an IComplexOperation, this method will not be
* called automatically. It can be used or left as no-op by the implementor.
*
* @since 18.0.0
*/
public function onEvent(string $eventName, Event $event, IRuleMatcher $ruleMatcher): void;
}
@@ -0,0 +1,89 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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 RuntimeException;
/**
* Class IRuleMatcher
*
*
* @since 18.0.0
*/
interface IRuleMatcher extends IFileCheck {
/**
* This method is left for backwards compatibility and easier porting of
* apps. Please use 'getFlows' instead (and setOperation if you implement
* an IComplexOperation).
*
* @since 18.0.0
* @deprecated 18.0.0
*/
public function getMatchingOperations(string $class, bool $returnFirstMatchingOperationOnly = true): array;
/**
* @throws RuntimeException
* @since 18.0.0
*/
public function getFlows(bool $returnFirstMatchingOperationOnly = true): array;
/**
* this method can only be called once and is typically called by the
* Flow engine, unless for IComplexOperations.
*
* @throws RuntimeException
* @since 18.0.0
*/
public function setOperation(IOperation $operation): void;
/**
* this method can only be called once and is typically called by the
* Flow engine, unless for IComplexOperations.
*
* @throws RuntimeException
* @since 18.0.0
*/
public function setEntity(IEntity $entity): void;
/**
* returns the entity which might provide more information, depending on
* the interfaces it implements
*
* @return IEntity
* @since 18.0.0
*/
public function getEntity(): IEntity;
/**
* this method can be called once to set the event name that is currently
* being processed. The workflow engine takes care of this usually, only an
* IComplexOperation might want to make use of it.
*
* @throws RuntimeException
* @since 20.0.0
*/
public function setEventName(string $eventName): void;
}
@@ -0,0 +1,49 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.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;
/**
* Interface ISpecificOperation
*
* This interface represents an operator that is designed to work with exactly
* one entity type.
*
* In almost all of the cases it is not necessary to have this limitation,
* because the action is not connected to the event. This mechanism suits
* special cases.
*
* @since 18.0.0
*/
interface ISpecificOperation extends IOperation {
/**
* returns the id of the entity the operator is designed for
*
* Example: 'WorkflowEngine_Entity_File'
*
* @since 18.0.0
*/
public function getEntityId():string;
}