mirror of
https://github.com/netzbegruenung/circles.git
synced 2024-05-11 23:56:06 +02:00
events
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
This commit is contained in:
parent
7e0eb8fb49
commit
cd81b7970d
8
composer.lock
generated
8
composer.lock
generated
|
@ -12,12 +12,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/daita/my-small-php-tools.git",
|
||||
"reference": "30f9cff1d215854ed440dcaaafc2964cfa7aad3b"
|
||||
"reference": "7d25743c2cd79521df3e3353a9358ec3931c6ad1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/daita/my-small-php-tools/zipball/30f9cff1d215854ed440dcaaafc2964cfa7aad3b",
|
||||
"reference": "30f9cff1d215854ed440dcaaafc2964cfa7aad3b",
|
||||
"url": "https://api.github.com/repos/daita/my-small-php-tools/zipball/7d25743c2cd79521df3e3353a9358ec3931c6ad1",
|
||||
"reference": "7d25743c2cd79521df3e3353a9358ec3931c6ad1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -45,7 +45,7 @@
|
|||
"issues": "https://github.com/daita/my-small-php-tools/issues",
|
||||
"source": "https://github.com/daita/my-small-php-tools/tree/master"
|
||||
},
|
||||
"time": "2021-03-27T14:04:08+00:00"
|
||||
"time": "2021-04-19T21:42:37+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @author Vinicius Cubas Brand <vinicius@eita.org.br>
|
||||
* @author Daniel Tygel <dtygel@eita.org.br>
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @author Vinicius Cubas Brand <vinicius@eita.org.br>
|
||||
* @author Daniel Tygel <dtygel@eita.org.br>
|
||||
*
|
||||
|
@ -37,15 +37,18 @@ namespace OCA\Circles\AppInfo;
|
|||
|
||||
use Closure;
|
||||
use OC;
|
||||
use OCA\Circles\Api\v1\Circles;
|
||||
use OCA\Circles\Events\AddingCircleMemberEvent;
|
||||
use OCA\Circles\Events\CircleMemberAddedEvent;
|
||||
use OCA\Circles\Exceptions\GSStatusException;
|
||||
use OCA\Circles\GlobalScale\GSMount\MountProvider;
|
||||
use OCA\Circles\Handlers\WebfingerHandler;
|
||||
use OCA\Circles\Listeners\Files\MemberAdded as ListenerFilesMemberAdded;
|
||||
use OCA\Circles\Listeners\Files\AddingMember as ListenerFilesAddingMember;
|
||||
use OCA\Circles\Listeners\Files\MemberAdded as ListenerFilesMemberAdded;
|
||||
use OCA\Circles\Listeners\GroupCreated;
|
||||
use OCA\Circles\Listeners\GroupDeleted;
|
||||
use OCA\Circles\Listeners\GroupMemberAdded;
|
||||
use OCA\Circles\Listeners\GroupMemberRemoved;
|
||||
use OCA\Circles\Listeners\UserCreated;
|
||||
use OCA\Circles\Listeners\UserDeleted;
|
||||
use OCA\Circles\Notification\Notifier;
|
||||
use OCA\Circles\Service\ConfigService;
|
||||
|
@ -58,10 +61,13 @@ use OCP\AppFramework\Bootstrap\IBootstrap;
|
|||
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
||||
use OCP\AppFramework\IAppContainer;
|
||||
use OCP\AppFramework\QueryException;
|
||||
use OCP\Group\Events\GroupCreatedEvent;
|
||||
use OCP\Group\Events\GroupDeletedEvent;
|
||||
use OCP\Group\Events\UserAddedEvent;
|
||||
use OCP\Group\Events\UserRemovedEvent;
|
||||
use OCP\IServerContainer;
|
||||
use OCP\User\Events\UserCreatedEvent;
|
||||
use OCP\User\Events\UserDeletedEvent;
|
||||
use OCP\Util;
|
||||
use Throwable;
|
||||
|
||||
|
||||
|
@ -109,9 +115,18 @@ class Application extends App implements IBootstrap {
|
|||
*/
|
||||
public function register(IRegistrationContext $context): void {
|
||||
$context->registerCapability(Capabilities::class);
|
||||
$context->registerEventListener(UserDeletedEvent::class, UserDeleted::class);
|
||||
$context->registerEventListener(GroupDeletedEvent::class, GroupDeleted::class);
|
||||
|
||||
// User Events
|
||||
$context->registerEventListener(UserCreatedEvent::class, UserCreated::class);
|
||||
$context->registerEventListener(UserDeletedEvent::class, UserDeleted::class);
|
||||
|
||||
// Group Events
|
||||
$context->registerEventListener(GroupCreatedEvent::class, GroupCreated::class);
|
||||
$context->registerEventListener(GroupDeletedEvent::class, GroupDeleted::class);
|
||||
$context->registerEventListener(UserAddedEvent::class, GroupMemberAdded::class);
|
||||
$context->registerEventListener(UserRemovedEvent::class, GroupMemberRemoved::class);
|
||||
|
||||
// Local Events (for Files/Shares management)
|
||||
$context->registerEventListener(AddingCircleMemberEvent::class, ListenerFilesAddingMember::class);
|
||||
$context->registerEventListener(CircleMemberAddedEvent::class, ListenerFilesMemberAdded::class);
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @author Vinicius Cubas Brand <vinicius@eita.org.br>
|
||||
* @author Daniel Tygel <dtygel@eita.org.br>
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -148,7 +148,7 @@ class CirclesList extends Base {
|
|||
* @throws UnknownRemoteException
|
||||
* @throws UserTypeNotFoundException
|
||||
* @throws FederatedItemException
|
||||
* @throws MemberNotFoundException
|
||||
* @throws MemberNotFoundException
|
||||
* @throws SingleCircleNotFoundException
|
||||
*/
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int {
|
||||
|
|
|
@ -196,10 +196,12 @@ class CirclesTest extends Base {
|
|||
$this->loadConfiguration();
|
||||
|
||||
if (!$this->input->getOption('skip-setup')) {
|
||||
$this->t('Initialisation');
|
||||
if (!$this->input->getOption('skip-init')) {
|
||||
$this->t('Initialisation Nextcloud');
|
||||
$this->initEnvironment();
|
||||
}
|
||||
|
||||
$this->t('Initialisation Circles App');
|
||||
$this->reloadCirclesApp();
|
||||
$this->configureCirclesApp();
|
||||
$this->confirmVersion();
|
||||
|
@ -219,14 +221,14 @@ class CirclesTest extends Base {
|
|||
|
||||
$this->t('Adding local users and moderators');
|
||||
$this->addLocalMemberByUserId();
|
||||
$this->addLocalMemberBySingleId();
|
||||
$this->addLocalMemberUsingMember();
|
||||
$this->levelLocalMemberToModerator();
|
||||
$this->addRemoteMemberUsingModerator();
|
||||
$this->addRemoteMemberUsingRemoteMember();
|
||||
$this->levelRemoteMemberToAdmin();
|
||||
$this->addRemoteMemberUsingRemoteAdmin();
|
||||
|
||||
// $this->addLocalMemberBySingleId();
|
||||
// $this->addLocalMemberUsingMember();
|
||||
// $this->levelLocalMemberToModerator();
|
||||
// $this->addRemoteMemberUsingModerator();
|
||||
// $this->addRemoteMemberUsingRemoteMember();
|
||||
// $this->levelRemoteMemberToAdmin();
|
||||
// $this->addRemoteMemberUsingRemoteAdmin();
|
||||
//
|
||||
}
|
||||
|
||||
|
||||
|
@ -260,11 +262,21 @@ class CirclesTest extends Base {
|
|||
* @throws ItemNotFoundException
|
||||
*/
|
||||
private function initEnvironment() {
|
||||
$this->p('Disabling Password Policy App:');
|
||||
foreach ($this->getInstances() as $instanceId) {
|
||||
$this->occ($instanceId, 'app:disable password_policy', false, false);
|
||||
$this->pm($instanceId);
|
||||
}
|
||||
$this->r();
|
||||
|
||||
foreach ($this->getInstances() as $instance) {
|
||||
$this->p('Creating users on ' . $instance);
|
||||
foreach ($this->getConfigArray($instance, 'users') as $userId) {
|
||||
$this->pm($userId);
|
||||
$this->occ($instance, 'user:add ' . $userId, false, false);
|
||||
$this->occ(
|
||||
$instance, 'user:add --password-from-env ' . $userId, false, false,
|
||||
['OC_PASS' => 'testtest']
|
||||
);
|
||||
}
|
||||
$this->r();
|
||||
|
||||
|
@ -402,7 +414,7 @@ class CirclesTest extends Base {
|
|||
$compareToOwnerBasedOn = new Circle();
|
||||
$compareToOwnerBasedOn->setConfig(Circle::CFG_SINGLE)
|
||||
->setName('user:' . $userId . ':{CIRCLEID}')
|
||||
->setDisplayName('user:' . $userId . ':{CIRCLEID}');
|
||||
->setDisplayName($userId);
|
||||
|
||||
$compareToOwner = new Member();
|
||||
$compareToOwner->setUserId($userId)
|
||||
|
@ -420,10 +432,10 @@ class CirclesTest extends Base {
|
|||
$compareTo->setOwner($compareToOwner)
|
||||
->setConfig(Circle::CFG_SINGLE)
|
||||
->setName('user:' . $userId . ':{CIRCLEID}')
|
||||
->setDisplayName('user:' . $userId . ':{CIRCLEID}');
|
||||
->setDisplayName($userId);
|
||||
|
||||
$this->confirmCircleData($circle, $compareTo);
|
||||
$this->r(true, $circle->getId());
|
||||
$this->r(true, $circle->getSingleId());
|
||||
}
|
||||
|
||||
$this->p('Checking Single Circle for <comment>Circles App</comment>');
|
||||
|
@ -432,7 +444,7 @@ class CirclesTest extends Base {
|
|||
$compareToOwnerBasedOn = new Circle();
|
||||
$compareToOwnerBasedOn->setConfig(Circle::CFG_SINGLE | Circle::CFG_ROOT)
|
||||
->setName('app:circles:{CIRCLEID}')
|
||||
->setDisplayName('app:circles:{CIRCLEID}');
|
||||
->setDisplayName('circles');
|
||||
|
||||
$compareToOwner = new Member();
|
||||
$compareToOwner->setUserId(Application::APP_ID)
|
||||
|
@ -450,10 +462,10 @@ class CirclesTest extends Base {
|
|||
$compareTo->setOwner($compareToOwner)
|
||||
->setConfig(Circle::CFG_SINGLE | Circle::CFG_ROOT)
|
||||
->setName('app:circles:{CIRCLEID}')
|
||||
->setDisplayName('app:circles:{CIRCLEID}');
|
||||
->setDisplayName('circles');
|
||||
|
||||
$this->confirmCircleData($circle, $compareTo);
|
||||
$this->r(true, $circle->getId());
|
||||
$this->r(true, $circle->getSingleId());
|
||||
|
||||
foreach ($this->getConfigArray($instanceId, 'groups') as $groupId => $members) {
|
||||
$this->p('Checking Circle for <comment>' . $groupId . '@' . $instance . '</comment>');
|
||||
|
@ -485,7 +497,7 @@ class CirclesTest extends Base {
|
|||
->setDisplayName($groupId);
|
||||
|
||||
$this->confirmCircleData($circle, $compareTo);
|
||||
$this->r(true, $circle->getId());
|
||||
$this->r(true, $circle->getSingleId());
|
||||
}
|
||||
|
||||
$this->output->writeln('');
|
||||
|
@ -551,49 +563,49 @@ class CirclesTest extends Base {
|
|||
$localInstanceId = 'global-scale-1';
|
||||
$name = self::$TEST_CIRCLES[0];
|
||||
$owner = $this->getInstanceUsers($localInstanceId)[1];
|
||||
$dataCreatedCircle001 = $this->occ($localInstanceId, 'circles:manage:create ' . $owner . ' ' . $name);
|
||||
$dataCreatedCircle001 = $this->occ($localInstanceId, 'circles:manage:create --type user ' . $owner . ' ' . $name);
|
||||
/** @var Circle $createdCircle */
|
||||
$createdCircle = $this->deserialize($dataCreatedCircle001, Circle::class);
|
||||
$this->circles[$localInstanceId][$createdCircle->getName()] = $createdCircle;
|
||||
$this->r(true, $createdCircle->getId());;
|
||||
$this->r(true, $createdCircle->getSingleId());;
|
||||
|
||||
$this->p('Comparing data returned at creation');
|
||||
if ($createdCircle->getId() === '' || $createdCircle->getOwner()->getId() === '') {
|
||||
if ($createdCircle->getSingleId() === '' || $createdCircle->getOwner()->getId() === '') {
|
||||
throw new InvalidItemException('empty id or owner.member_id');
|
||||
}
|
||||
|
||||
$knownOwner = new Member();
|
||||
$knownOwner->importFromIFederatedUser($this->federatedUsers[$localInstanceId][$owner]);
|
||||
$knownOwner->setCircleId($createdCircle->getId());
|
||||
$knownOwner->setCircleId($createdCircle->getSingleId());
|
||||
$knownOwner->setLevel(Member::LEVEL_OWNER);
|
||||
$knownOwner->setStatus(Member::STATUS_MEMBER);
|
||||
$knownOwner->setId($createdCircle->getOwner()->getId());
|
||||
|
||||
$compareTo = new Circle();
|
||||
$compareTo->setOwner($knownOwner)
|
||||
->setId($createdCircle->getId())
|
||||
->setSingleId($createdCircle->getSingleId())
|
||||
->setInitiator($knownOwner)
|
||||
->setConfig(Circle::CFG_CIRCLE)
|
||||
->setName($name)
|
||||
->setDisplayName($name);
|
||||
|
||||
echo json_encode($createdCircle, JSON_PRETTY_PRINT);
|
||||
$this->confirmCircleData($createdCircle, $compareTo, 'circle', true);
|
||||
$this->r();
|
||||
|
||||
|
||||
$this->p('Comparing local stored data');
|
||||
$dataCircle = $this->occ($localInstanceId, 'circle:manage:details ' . $createdCircle->getId());
|
||||
$dataCircle = $this->occ($localInstanceId, 'circle:manage:details ' . $createdCircle->getSingleId());
|
||||
|
||||
/** @var Circle $tmpCircle */
|
||||
$tmpCircle = $this->deserialize($dataCircle, Circle::class);
|
||||
$this->confirmCircleData($tmpCircle, $createdCircle);
|
||||
$this->r(true, $tmpCircle->getId());
|
||||
$this->r(true, $tmpCircle->getSingleId());
|
||||
|
||||
$links = $this->getConfigArray('global-scale-1', 'remote');
|
||||
foreach ($this->getInstances(false) as $instanceId) {
|
||||
$this->p('Comparing data stored on ' . $instanceId);
|
||||
$dataCircle =
|
||||
$this->occ($instanceId, 'circle:manage:details ' . $createdCircle->getId(), false);
|
||||
$this->occ($instanceId, 'circle:manage:details ' . $createdCircle->getSingleId(), false);
|
||||
|
||||
if ($instanceId === $localInstanceId || $links[$instanceId] === 'GlobalScale') {
|
||||
/** @var Circle $tmpCircle */
|
||||
|
@ -602,7 +614,7 @@ class CirclesTest extends Base {
|
|||
$createdCircle->setInitiator(null)
|
||||
->getOwner()->setBasedOn(null);
|
||||
$this->confirmCircleData($tmpCircle, $createdCircle);
|
||||
$this->r(true, $tmpCircle->getId());
|
||||
$this->r(true, $tmpCircle->getSingleId());
|
||||
} else {
|
||||
if (is_null($dataCircle)) {
|
||||
$this->r(true, 'empty');
|
||||
|
@ -622,20 +634,14 @@ class CirclesTest extends Base {
|
|||
private function addLocalMemberByUserId() {
|
||||
$this->p('Adding local user as member, based on userId');
|
||||
|
||||
$localInstanceId = 'global-scale-1';
|
||||
$name = self::$TEST_CIRCLES[0];
|
||||
$userId = $this->getInstanceUsers($localInstanceId)[4];
|
||||
$circle = $this->getCircleByName($localInstanceId, $name);
|
||||
$dataAddedMember =
|
||||
$this->occ(
|
||||
$localInstanceId, 'circles:members:add ' . $circle->getId() . ' ' . $userId . ' --type user'
|
||||
);
|
||||
/** @var Member $addedMember */
|
||||
$addedMember = $this->deserialize($dataAddedMember, Member::class);
|
||||
$instanceId = 'global-scale-1';
|
||||
$circleName = self::$TEST_CIRCLES[0];
|
||||
$member = $this->getInstanceUsers($instanceId)[2];
|
||||
|
||||
$addedMember = $this->processMemberAdd($instanceId, $circleName, $member, 'user');
|
||||
$this->r(true, $addedMember->getId());;
|
||||
|
||||
|
||||
// check test4
|
||||
// check test2
|
||||
}
|
||||
|
||||
|
||||
|
@ -655,7 +661,7 @@ class CirclesTest extends Base {
|
|||
$user = $userCircle->getOwner();
|
||||
$dataAddedMember =
|
||||
$this->occ(
|
||||
$localInstanceId, 'circles:members:add ' . $circle->getId() . ' ' . $user->getSingleId()
|
||||
$localInstanceId, 'circles:members:add ' . $circle->getSingleId() . ' ' . $user->getSingleId()
|
||||
);
|
||||
/** @var Member $addedMember */
|
||||
$addedMember = $this->deserialize($dataAddedMember, Member::class);
|
||||
|
@ -666,8 +672,23 @@ class CirclesTest extends Base {
|
|||
|
||||
|
||||
private function addLocalMemberUsingMember() {
|
||||
// fail
|
||||
$this->p('Adding local member using local Member');
|
||||
$localInstanceId = 'global-scale-1';
|
||||
$initiator = $this->getInstanceUsers($localInstanceId)[6];
|
||||
$member = $this->getInstanceUsers($localInstanceId)[6];
|
||||
$circleName = self::$TEST_CIRCLES[0];
|
||||
|
||||
$circle = $this->getCircleByName($localInstanceId, $circleName);
|
||||
$userId = $this->getInstanceUsers($localInstanceId)[6];
|
||||
$userCircle = $this->getCircleByName($localInstanceId, 'user:' . $userId);
|
||||
$user = $userCircle->getOwner();
|
||||
$dataAddedMember =
|
||||
$this->occ(
|
||||
$localInstanceId, 'circles:members:add ' . $circle->getSingleId() . ' ' . $user->getSingleId()
|
||||
);
|
||||
/** @var Member $addedMember */
|
||||
$addedMember = $this->deserialize($dataAddedMember, Member::class);
|
||||
$this->r(true, $addedMember->getId());;
|
||||
}
|
||||
|
||||
private function levelLocalMemberToModerator() {
|
||||
|
@ -720,13 +741,13 @@ class CirclesTest extends Base {
|
|||
}
|
||||
|
||||
private function removeLocalMemberUsingRemoteMember() {
|
||||
// fail
|
||||
// fail
|
||||
}
|
||||
|
||||
private function removeLocalMemberUsingRemoteAdmin() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
private function removeRemoteMemberUsingRemoteMember() {
|
||||
// fail
|
||||
}
|
||||
|
@ -753,11 +774,11 @@ class CirclesTest extends Base {
|
|||
|
||||
if (empty($params)) {
|
||||
$params = [
|
||||
'CIRCLEID' => $circle->getId()
|
||||
'CIRCLEID' => $circle->getSingleId()
|
||||
];
|
||||
}
|
||||
|
||||
$this->compare($compareTo->getId(), $circle->getId(), $prefix . '.id', $params);
|
||||
$this->compare($compareTo->getSingleId(), $circle->getSingleId(), $prefix . '.id', $params);
|
||||
$this->compare($compareTo->getName(), $circle->getName(), $prefix . '.name', $params);
|
||||
$this->compare(
|
||||
$compareTo->getDisplayName(), $circle->getDisplayName(), $prefix . '.displayName', $params
|
||||
|
@ -772,7 +793,7 @@ class CirclesTest extends Base {
|
|||
if ($owner === null) {
|
||||
throw new Exception('empty owner');
|
||||
}
|
||||
if ($owner->getCircleId() !== $circle->getId()) {
|
||||
if ($owner->getCircleId() !== $circle->getSingleId()) {
|
||||
throw new Exception($prefix . '.owner.circleId is different than ' . $prefix . '.id');
|
||||
}
|
||||
$this->confirmMemberData($owner, $compareToOwner, 'owner', false, $params);
|
||||
|
@ -785,7 +806,7 @@ class CirclesTest extends Base {
|
|||
throw new Exception('empty initiator');
|
||||
}
|
||||
$initiator = $circle->getInitiator();
|
||||
if ($initiator->getCircleId() !== $circle->getId()) {
|
||||
if ($initiator->getCircleId() !== $circle->getSingleId()) {
|
||||
throw new Exception($prefix . '.initiator.circleId is different than ' . $prefix . '.id');
|
||||
}
|
||||
$this->confirmMemberData($initiator, $compareToInitiator, 'owner', false, $params);
|
||||
|
@ -1003,6 +1024,7 @@ class CirclesTest extends Base {
|
|||
* @param string $cmd
|
||||
* @param bool $exceptionOnFail
|
||||
* @param bool $jsonAsOutput
|
||||
* @param array $env
|
||||
*
|
||||
* @return array
|
||||
* @throws ItemNotFoundException
|
||||
|
@ -1012,7 +1034,8 @@ class CirclesTest extends Base {
|
|||
string $instance,
|
||||
string $cmd,
|
||||
bool $exceptionOnFail = true,
|
||||
bool $jsonAsOutput = true
|
||||
bool $jsonAsOutput = true,
|
||||
array $env = []
|
||||
): ?array {
|
||||
$configInstance = $this->getConfigInstance($instance);
|
||||
$path = $this->get('path', $configInstance);
|
||||
|
@ -1023,7 +1046,7 @@ class CirclesTest extends Base {
|
|||
$command = array_merge($command, ['--output=json']);
|
||||
}
|
||||
$process = new Process($command);
|
||||
$process->run();
|
||||
$process->run(null, $env);
|
||||
|
||||
if ($exceptionOnFail && !$process->isSuccessful()) {
|
||||
throw new Exception(implode(' ', $command) . ' failed');
|
||||
|
@ -1081,5 +1104,36 @@ class CirclesTest extends Base {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $instanceId
|
||||
* @param string $circleName
|
||||
* @param string $userId
|
||||
* @param string $type
|
||||
*
|
||||
* @return Member
|
||||
* @throws CircleNotFoundException
|
||||
* @throws InvalidItemException
|
||||
* @throws ItemNotFoundException
|
||||
*/
|
||||
private function processMemberAdd(string $instanceId, string $circleName, string $userId, string $type
|
||||
): Member {
|
||||
$circle = $this->getCircleByName($instanceId, $circleName);
|
||||
$dataAddedMember =
|
||||
$this->occ(
|
||||
$instanceId, 'circles:members:add ' . $circle->getSingleId() . ' ' . $userId . ' --type ' . $type
|
||||
);
|
||||
/** @var Member $addedMember */
|
||||
$addedMember = $this->deserialize($dataAddedMember, Member::class);
|
||||
|
||||
|
||||
echo 'ADDEDMEMBER: ' . json_encode($addedMember, JSON_PRETTY_PRINT) . "\n";
|
||||
|
||||
$federatedUser = $this->federatedUsers[$instanceId][$userId];
|
||||
echo 'FEDERATEDUER: ' . json_encode($federatedUser, JSON_PRETTY_PRINT) . "\n";
|
||||
|
||||
return $addedMember;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @author Vinicius Cubas Brand <vinicius@eita.org.br>
|
||||
* @author Daniel Tygel <dtygel@eita.org.br>
|
||||
*
|
||||
|
|
|
@ -278,6 +278,9 @@ class CircleRequest extends CircleRequestBuilder {
|
|||
if ($circle->getConfig() > 0) {
|
||||
$qb->limitToConfig($circle->getConfig());
|
||||
}
|
||||
if ($circle->getSource() > 0) {
|
||||
$qb->limitToSource($circle->getSource());
|
||||
}
|
||||
|
||||
if ($circle->hasOwner()) {
|
||||
$aliasOwner = $qb->generateAlias(CoreRequestBuilder::CIRCLE, CoreRequestBuilder::OWNER);
|
||||
|
@ -303,13 +306,12 @@ class CircleRequest extends CircleRequestBuilder {
|
|||
/**
|
||||
* @param Circle $circle
|
||||
*/
|
||||
public function delete(Circle $circle) {
|
||||
public function delete(Circle $circle): void {
|
||||
$qb = $this->getCircleDeleteSql();
|
||||
$qb->limitToUniqueId($circle->getSingleId());
|
||||
|
||||
$qb->execute();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
@ -214,6 +214,13 @@ class CoreRequestBuilder extends NC22ExtendedQueryBuilder {
|
|||
$this->limitToDBFieldInt('config', $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $source
|
||||
*/
|
||||
public function limitToSource(int $source): void {
|
||||
$this->limitToDBFieldInt('source', $source);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $config
|
||||
*/
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -133,6 +133,30 @@ class MemberRequest extends MemberRequestBuilder {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param IFederatedUser $federatedUser
|
||||
*/
|
||||
public function deleteFederatedUser(IFederatedUser $federatedUser): void {
|
||||
$qb = $this->getMemberDeleteSql();
|
||||
$qb->limitToSingleId($federatedUser->getSingleId());
|
||||
|
||||
$qb->execute();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param IFederatedUser $federatedUser
|
||||
* @param Circle $circle
|
||||
*/
|
||||
public function deleteFederatedUserFromCircle(IFederatedUser $federatedUser, Circle $circle): void {
|
||||
$qb = $this->getMemberDeleteSql();
|
||||
$qb->limitToSingleId($federatedUser->getSingleId());
|
||||
$qb->limitToCircleId($circle->getSingleId());
|
||||
|
||||
$qb->execute();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Circle $circle
|
||||
*/
|
||||
|
|
|
@ -69,12 +69,13 @@ class MembershipRequest extends MembershipRequestBuilder {
|
|||
public function update(Membership $membership) {
|
||||
$qb = $this->getMembershipUpdateSql();
|
||||
$qb->set('level', $qb->createNamedParameter($membership->getLevel()));
|
||||
$qb->set('parent', $qb->createNamedParameter($membership->getInheritanceLast()));
|
||||
$qb->set('inheritance_last', $qb->createNamedParameter($membership->getInheritanceLast()));
|
||||
$qb->set('inheritance_first', $qb->createNamedParameter($membership->getInheritanceFirst()));
|
||||
$qb->set(
|
||||
'path',
|
||||
'inheritance_path',
|
||||
$qb->createNamedParameter(json_encode($membership->getInheritancePath(), JSON_UNESCAPED_SLASHES))
|
||||
);
|
||||
$qb->set('depth', $qb->createNamedParameter($membership->getInheritanceDepth()));
|
||||
$qb->set('inheritance_depth', $qb->createNamedParameter($membership->getInheritanceDepth()));
|
||||
|
||||
$qb->limitToSingleId($membership->getSingleId());
|
||||
$qb->limitToCircleId($membership->getCircleId());
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2017
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
|
@ -9,7 +9,7 @@ declare(strict_types=1);
|
|||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@pontapreta.net>
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue