From 26c1e33d115cad3029c0663b7a388be0aff6417b Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Thu, 24 May 2018 09:27:40 +0200 Subject: [PATCH] Move repairstep to a custom command People that have issues can run it manually Signed-off-by: Roeland Jago Douma --- apps/dav/appinfo/info.xml | 2 +- .../composer/composer/autoload_classmap.php | 2 +- .../dav/composer/composer/autoload_static.php | 2 +- .../RemoveInvalidShares.php | 44 ++++++------------- .../RemoveInvalidSharesTest.php | 9 ++-- lib/private/Repair.php | 4 +- 6 files changed, 24 insertions(+), 39 deletions(-) rename apps/dav/lib/{Repair => Command}/RemoveInvalidShares.php (73%) rename apps/dav/tests/unit/{Repair => Command}/RemoveInvalidSharesTest.php (86%) diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 5e0847ff5d..2dcb986c84 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -28,7 +28,6 @@ OCA\DAV\Migration\FixBirthdayCalendarComponent OCA\DAV\Migration\CalDAVRemoveEmptyValue OCA\DAV\Migration\BuildCalendarSearchIndex - OCA\DAV\Repair\RemoveInvalidShares @@ -37,6 +36,7 @@ OCA\DAV\Command\CreateCalendar OCA\DAV\Command\SyncBirthdayCalendar OCA\DAV\Command\SyncSystemAddressBook + OCA\DAV\Command\RemoveInvalidShares diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index d4ef0a5337..075ee593ad 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -65,6 +65,7 @@ return array( 'OCA\\DAV\\CardDAV\\Xml\\Groups' => $baseDir . '/../lib/CardDAV/Xml/Groups.php', 'OCA\\DAV\\Command\\CreateAddressBook' => $baseDir . '/../lib/Command/CreateAddressBook.php', 'OCA\\DAV\\Command\\CreateCalendar' => $baseDir . '/../lib/Command/CreateCalendar.php', + 'OCA\\DAV\\Command\\RemoveInvalidShares' => $baseDir . '/../lib/Command/RemoveInvalidShares.php', 'OCA\\DAV\\Command\\SyncBirthdayCalendar' => $baseDir . '/../lib/Command/SyncBirthdayCalendar.php', 'OCA\\DAV\\Command\\SyncSystemAddressBook' => $baseDir . '/../lib/Command/SyncSystemAddressBook.php', 'OCA\\DAV\\Comments\\CommentNode' => $baseDir . '/../lib/Comments/CommentNode.php', @@ -142,7 +143,6 @@ return array( 'OCA\\DAV\\Migration\\Version1004Date20170924124212' => $baseDir . '/../lib/Migration/Version1004Date20170924124212.php', 'OCA\\DAV\\Migration\\Version1004Date20170926103422' => $baseDir . '/../lib/Migration/Version1004Date20170926103422.php', 'OCA\\DAV\\Migration\\Version1005Date20180413093149' => $baseDir . '/../lib/Migration/Version1005Date20180413093149.php', - 'OCA\\DAV\\Repair\\RemoveInvalidShares' => $baseDir . '/../lib/Repair/RemoveInvalidShares.php', 'OCA\\DAV\\RootCollection' => $baseDir . '/../lib/RootCollection.php', 'OCA\\DAV\\Server' => $baseDir . '/../lib/Server.php', 'OCA\\DAV\\Settings\\CalDAVSettings' => $baseDir . '/../lib/Settings/CalDAVSettings.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index afaecd28e8..e4938350aa 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -80,6 +80,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\CardDAV\\Xml\\Groups' => __DIR__ . '/..' . '/../lib/CardDAV/Xml/Groups.php', 'OCA\\DAV\\Command\\CreateAddressBook' => __DIR__ . '/..' . '/../lib/Command/CreateAddressBook.php', 'OCA\\DAV\\Command\\CreateCalendar' => __DIR__ . '/..' . '/../lib/Command/CreateCalendar.php', + 'OCA\\DAV\\Command\\RemoveInvalidShares' => __DIR__ . '/..' . '/../lib/Command/RemoveInvalidShares.php', 'OCA\\DAV\\Command\\SyncBirthdayCalendar' => __DIR__ . '/..' . '/../lib/Command/SyncBirthdayCalendar.php', 'OCA\\DAV\\Command\\SyncSystemAddressBook' => __DIR__ . '/..' . '/../lib/Command/SyncSystemAddressBook.php', 'OCA\\DAV\\Comments\\CommentNode' => __DIR__ . '/..' . '/../lib/Comments/CommentNode.php', @@ -157,7 +158,6 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Migration\\Version1004Date20170924124212' => __DIR__ . '/..' . '/../lib/Migration/Version1004Date20170924124212.php', 'OCA\\DAV\\Migration\\Version1004Date20170926103422' => __DIR__ . '/..' . '/../lib/Migration/Version1004Date20170926103422.php', 'OCA\\DAV\\Migration\\Version1005Date20180413093149' => __DIR__ . '/..' . '/../lib/Migration/Version1005Date20180413093149.php', - 'OCA\\DAV\\Repair\\RemoveInvalidShares' => __DIR__ . '/..' . '/../lib/Repair/RemoveInvalidShares.php', 'OCA\\DAV\\RootCollection' => __DIR__ . '/..' . '/../lib/RootCollection.php', 'OCA\\DAV\\Server' => __DIR__ . '/..' . '/../lib/Server.php', 'OCA\\DAV\\Settings\\CalDAVSettings' => __DIR__ . '/..' . '/../lib/Settings/CalDAVSettings.php', diff --git a/apps/dav/lib/Repair/RemoveInvalidShares.php b/apps/dav/lib/Command/RemoveInvalidShares.php similarity index 73% rename from apps/dav/lib/Repair/RemoveInvalidShares.php rename to apps/dav/lib/Command/RemoveInvalidShares.php index b69f918a57..12a5ee43d4 100644 --- a/apps/dav/lib/Repair/RemoveInvalidShares.php +++ b/apps/dav/lib/Command/RemoveInvalidShares.php @@ -1,4 +1,5 @@ * @@ -19,58 +20,40 @@ * */ -namespace OCA\DAV\Repair; +namespace OCA\DAV\Command; use OCA\DAV\Connector\Sabre\Principal; use OCP\IDBConnection; -use OCP\ILogger; -use OCP\Migration\IOutput; -use OCP\Migration\IRepairStep; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; /** * Class RemoveInvalidShares - removes shared calendars and addressbook which * have no matching principal. Happened because of a bug in the calendar app. - * - * @package OCA\DAV\Repair */ -class RemoveInvalidShares implements IRepairStep { +class RemoveInvalidShares extends Command { /** @var IDBConnection */ private $connection; /** @var Principal */ private $principalBackend; - /** - * RemoveInvalidShares constructor. - * - * @param IDBConnection $connection - * @param Principal $principalBackend - */ public function __construct(IDBConnection $connection, Principal $principalBackend) { + parent::__construct(); + $this->connection = $connection; $this->principalBackend = $principalBackend; } - /** - * Returns the step's name - * - * @return string - * @since 9.1.0 - */ - public function getName() { - return 'Remove invalid calendar and addressbook shares'; + protected function configure() { + $this + ->setName('dav:remove-invalid-shares') + ->setDescription('Remove invalid dav shares'); } - /** - * Run repair step. - * Must throw exception on error. - * - * @param IOutput $output - * @throws \Exception in case of failure - * @since 9.1.0 - */ - public function run(IOutput $output) { + protected function execute(InputInterface $input, OutputInterface $output) { $query = $this->connection->getQueryBuilder(); $result = $query->selectDistinct('principaluri') ->from('dav_shares') @@ -80,7 +63,6 @@ class RemoveInvalidShares implements IRepairStep { $principaluri = $row['principaluri']; $p = $this->principalBackend->getPrincipalByPath($principaluri); if ($p === null) { - $output->info(" ... for principal '$principaluri'"); $this->deleteSharesForPrincipal($principaluri); } } diff --git a/apps/dav/tests/unit/Repair/RemoveInvalidSharesTest.php b/apps/dav/tests/unit/Command/RemoveInvalidSharesTest.php similarity index 86% rename from apps/dav/tests/unit/Repair/RemoveInvalidSharesTest.php rename to apps/dav/tests/unit/Command/RemoveInvalidSharesTest.php index 14553740f3..2574e4d0ae 100644 --- a/apps/dav/tests/unit/Repair/RemoveInvalidSharesTest.php +++ b/apps/dav/tests/unit/Command/RemoveInvalidSharesTest.php @@ -20,12 +20,14 @@ */ -namespace OCA\DAV\Tests\Unit\Repair; +namespace OCA\DAV\Tests\Unit\Command; use OCA\DAV\Connector\Sabre\Principal; -use OCA\DAV\Repair\RemoveInvalidShares; +use OCA\DAV\Command\RemoveInvalidShares; use OCP\Migration\IOutput; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; use Test\TestCase; /** @@ -57,8 +59,7 @@ class RemoveInvalidSharesTest extends TestCase { $output = $this->createMock(IOutput::class); $repair = new RemoveInvalidShares($db, $principal); - $this->assertEquals("Remove invalid calendar and addressbook shares", $repair->getName()); - $repair->run($output); + $this->invokePrivate($repair, 'run', [$this->createMock(InputInterface::class), $this->createMock(OutputInterface::class)]); $query = $db->getQueryBuilder(); $result = $query->select('*')->from('dav_shares') diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 8746f1e6f2..2774699344 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -47,6 +47,8 @@ use OC\Repair\RepairMimeTypes; use OC\Repair\RepairInvalidShares; use OC\Template\JSCombiner; use OC\Template\SCSSCacher; +use OCA\DAV\Connector\Sabre\Principal; +use OCA\DAV\Repair\RemoveInvalidShares; use OCP\AppFramework\QueryException; use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; @@ -146,7 +148,7 @@ class Repair implements IOutput{ */ public static function getExpensiveRepairSteps() { return [ - new OldGroupMembershipShares(\OC::$server->getDatabaseConnection(), \OC::$server->getGroupManager()) + new OldGroupMembershipShares(\OC::$server->getDatabaseConnection(), \OC::$server->getGroupManager()), ]; }