Skip to content
Snippets Groups Projects
Unverified Commit 369c3b5d authored by Thomas Müller's avatar Thomas Müller
Browse files

Implement classification migration as repair step

parent 287e4173
No related branches found
No related tags found
No related merge requests found
...@@ -20,4 +20,9 @@ ...@@ -20,4 +20,9 @@
<background-jobs> <background-jobs>
<job>OCA\DAV\CardDAV\Sync\SyncJob</job> <job>OCA\DAV\CardDAV\Sync\SyncJob</job>
</background-jobs> </background-jobs>
<repair-steps>
<post-migration>
<job>OCA\DAV\Migration\Classification</job>
</post-migration>
</repair-steps>
</info> </info>
...@@ -24,4 +24,3 @@ use OCA\DAV\AppInfo\Application; ...@@ -24,4 +24,3 @@ use OCA\DAV\AppInfo\Application;
$app = new Application(); $app = new Application();
$app->generateBirthdays(); $app->generateBirthdays();
$app->migrateClassification();
...@@ -108,6 +108,14 @@ class Application extends App { ...@@ -108,6 +108,14 @@ class Application extends App {
$g $g
); );
}); });
$container->registerService('OCA\DAV\Migration\Classification', function ($c) {
/** @var IAppContainer $c */
return new Classification(
$c->query('CalDavBackend'),
$c->getServer()->getUserManager()
);
});
} }
/** /**
...@@ -170,20 +178,4 @@ class Application extends App { ...@@ -170,20 +178,4 @@ class Application extends App {
$this->getContainer()->getServer()->getLogger()->logException($ex); $this->getContainer()->getServer()->getLogger()->logException($ex);
} }
} }
public function migrateClassification() {
try {
/** @var CalDavBackend $calDavBackend */
$calDavBackend = $this->getContainer()->query('CalDavBackend');
$migration = new Classification($calDavBackend);
$userManager = $this->getContainer()->getServer()->getUserManager();
$userManager->callForAllUsers(function($user) use($migration) {
/** @var IUser $user */
$migration->runForUser($user);
});
} catch (\Exception $ex) {
$this->getContainer()->getServer()->getLogger()->logException($ex);
}
}
} }
<?php <?php
/**
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* 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, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace OCA\DAV\Migration; namespace OCA\DAV\Migration;
use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CalDAV\CalDavBackend;
use OCP\IUser; use OCP\IUser;
use OCP\IUserManager;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
class Classification implements IRepairStep {
/** @var CalDavBackend */
private $calDavBackend;
class Classification { /** @var IUserManager */
private $userManager;
/** /**
* Classification constructor. * Classification constructor.
* *
* @param CalDavBackend $calDavBackend * @param CalDavBackend $calDavBackend
*/ */
public function __construct(CalDavBackend $calDavBackend) { public function __construct(CalDavBackend $calDavBackend, IUserManager $userManager) {
$this->calDavBackend = $calDavBackend; $this->calDavBackend = $calDavBackend;
$this->userManager = $userManager;
} }
/** /**
...@@ -33,9 +63,31 @@ class Classification { ...@@ -33,9 +63,31 @@ class Classification {
} }
/** /**
* @param $calObject * @param $calendarData
* @return integer
* @throws \Sabre\DAV\Exception\BadRequest
*/ */
protected function extractClassification($calendarData) { protected function extractClassification($calendarData) {
return $this->calDavBackend->getDenormalizedData($calendarData)['classification']; return $this->calDavBackend->getDenormalizedData($calendarData)['classification'];
} }
/**
* @inheritdoc
*/
public function getName() {
return 'Fix classification for calendar objects';
}
/**
* @inheritdoc
*/
public function run(IOutput $output) {
$output->startProgress();
$this->userManager->callForAllUsers(function($user) use ($output) {
/** @var IUser $user */
$output->advance(1, $user->getDisplayName());
$this->runForUser($user);
});
$output->finishProgress();
}
} }
...@@ -39,8 +39,9 @@ interface IRepairStep { ...@@ -39,8 +39,9 @@ interface IRepairStep {
* Run repair step. * Run repair step.
* Must throw exception on error. * Must throw exception on error.
* *
* @since 9.1.0 * @param IOutput $output
* @throws \Exception in case of failure * @throws \Exception in case of failure
* @since 9.1.0
*/ */
public function run(IOutput $output); public function run(IOutput $output);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment