diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml
index f749645dfe..26e37e6bb8 100644
--- a/apps/dav/appinfo/info.xml
+++ b/apps/dav/appinfo/info.xml
@@ -20,4 +20,9 @@
OCA\DAV\CardDAV\Sync\SyncJob
+
+
+ OCA\DAV\Migration\Classification
+
+
diff --git a/apps/dav/appinfo/update.php b/apps/dav/appinfo/update.php
index 2941725086..d2ee06cc9f 100644
--- a/apps/dav/appinfo/update.php
+++ b/apps/dav/appinfo/update.php
@@ -24,4 +24,3 @@ use OCA\DAV\AppInfo\Application;
$app = new Application();
$app->generateBirthdays();
-$app->migrateClassification();
diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php
index 0de61b12e2..9e0d2da4e1 100644
--- a/apps/dav/lib/AppInfo/Application.php
+++ b/apps/dav/lib/AppInfo/Application.php
@@ -108,6 +108,14 @@ class Application extends App {
$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 {
$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);
- }
- }
}
diff --git a/apps/dav/lib/Migration/Classification.php b/apps/dav/lib/Migration/Classification.php
new file mode 100644
index 0000000000..13ceca6fea
--- /dev/null
+++ b/apps/dav/lib/Migration/Classification.php
@@ -0,0 +1,93 @@
+
+ *
+ * @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
+ *
+ */
+
+
+namespace OCA\DAV\Migration;
+
+use OCA\DAV\CalDAV\CalDavBackend;
+use OCP\IUser;
+use OCP\IUserManager;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+
+class Classification implements IRepairStep {
+
+ /** @var CalDavBackend */
+ private $calDavBackend;
+
+ /** @var IUserManager */
+ private $userManager;
+
+ /**
+ * Classification constructor.
+ *
+ * @param CalDavBackend $calDavBackend
+ */
+ public function __construct(CalDavBackend $calDavBackend, IUserManager $userManager) {
+ $this->calDavBackend = $calDavBackend;
+ $this->userManager = $userManager;
+ }
+
+ /**
+ * @param IUser $user
+ */
+ public function runForUser($user) {
+ $principal = 'principals/users/' . $user->getUID();
+ $calendars = $this->calDavBackend->getCalendarsForUser($principal);
+ foreach ($calendars as $calendar) {
+ $objects = $this->calDavBackend->getCalendarObjects($calendar['id']);
+ foreach ($objects as $object) {
+ $calObject = $this->calDavBackend->getCalendarObject($calendar['id'], $object['id']);
+ $classification = $this->extractClassification($calObject['calendardata']);
+ $this->calDavBackend->setClassification($object['id'], $classification);
+ }
+ }
+ }
+
+ /**
+ * @param $calendarData
+ * @return integer
+ * @throws \Sabre\DAV\Exception\BadRequest
+ */
+ protected function extractClassification($calendarData) {
+ 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();
+ }
+}
diff --git a/apps/dav/lib/migration/classification.php b/apps/dav/lib/migration/classification.php
deleted file mode 100644
index 48e62e6158..0000000000
--- a/apps/dav/lib/migration/classification.php
+++ /dev/null
@@ -1,41 +0,0 @@
-calDavBackend = $calDavBackend;
- }
-
- /**
- * @param IUser $user
- */
- public function runForUser($user) {
- $principal = 'principals/users/' . $user->getUID();
- $calendars = $this->calDavBackend->getCalendarsForUser($principal);
- foreach ($calendars as $calendar) {
- $objects = $this->calDavBackend->getCalendarObjects($calendar['id']);
- foreach ($objects as $object) {
- $calObject = $this->calDavBackend->getCalendarObject($calendar['id'], $object['id']);
- $classification = $this->extractClassification($calObject['calendardata']);
- $this->calDavBackend->setClassification($object['id'], $classification);
- }
- }
- }
-
- /**
- * @param $calObject
- */
- protected function extractClassification($calendarData) {
- return $this->calDavBackend->getDenormalizedData($calendarData)['classification'];
- }
-}
diff --git a/lib/public/Migration/IRepairStep.php b/lib/public/Migration/IRepairStep.php
index 3394b70a6f..84619128b4 100644
--- a/lib/public/Migration/IRepairStep.php
+++ b/lib/public/Migration/IRepairStep.php
@@ -39,8 +39,9 @@ interface IRepairStep {
* Run repair step.
* Must throw exception on error.
*
- * @since 9.1.0
+ * @param IOutput $output
* @throws \Exception in case of failure
+ * @since 9.1.0
*/
public function run(IOutput $output);