Move repairstep to a custom command
People that have issues can run it manually Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
parent
f9a64d3e1b
commit
26c1e33d11
|
@ -28,7 +28,6 @@
|
|||
<step>OCA\DAV\Migration\FixBirthdayCalendarComponent</step>
|
||||
<step>OCA\DAV\Migration\CalDAVRemoveEmptyValue</step>
|
||||
<step>OCA\DAV\Migration\BuildCalendarSearchIndex</step>
|
||||
<step>OCA\DAV\Repair\RemoveInvalidShares</step>
|
||||
</post-migration>
|
||||
</repair-steps>
|
||||
|
||||
|
@ -37,6 +36,7 @@
|
|||
<command>OCA\DAV\Command\CreateCalendar</command>
|
||||
<command>OCA\DAV\Command\SyncBirthdayCalendar</command>
|
||||
<command>OCA\DAV\Command\SyncSystemAddressBook</command>
|
||||
<command>OCA\DAV\Command\RemoveInvalidShares</command>
|
||||
</commands>
|
||||
|
||||
<settings>
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||
*
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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')
|
|
@ -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()),
|
||||
];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue