2015-07-16 19:41:08 +03:00
|
|
|
<?php
|
|
|
|
/**
|
2015-10-05 21:54:56 +03:00
|
|
|
* @author Lukas Reschke <lukas@owncloud.com>
|
2015-07-16 19:41:08 +03:00
|
|
|
*
|
|
|
|
* @copyright Copyright (c) 2015, 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 OC\Repair;
|
|
|
|
|
|
|
|
use OC\Hooks\BasicEmitter;
|
|
|
|
use OC\RepairStep;
|
|
|
|
use OCP\IConfig;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Class UpdateOutdatedOcsIds is used to update invalid outdated OCS IDs, this is
|
|
|
|
* for example the case when an application has had another OCS ID in the past such
|
|
|
|
* as for contacts and calendar when apps.owncloud.com migrated to a unified identifier
|
|
|
|
* for multiple versions.
|
|
|
|
*
|
|
|
|
* @package OC\Repair
|
|
|
|
*/
|
|
|
|
class UpdateOutdatedOcsIds extends BasicEmitter implements RepairStep {
|
|
|
|
/** @var IConfig */
|
|
|
|
private $config;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param IConfig $config
|
|
|
|
*/
|
|
|
|
public function __construct(IConfig $config) {
|
|
|
|
$this->config = $config;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* {@inheritdoc}
|
|
|
|
*/
|
|
|
|
public function getName() {
|
|
|
|
return 'Repair outdated OCS IDs';
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param string $appName
|
|
|
|
* @param string $oldId
|
|
|
|
* @param string $newId
|
|
|
|
* @return bool True if updated, false otherwise
|
|
|
|
*/
|
|
|
|
public function fixOcsId($appName, $oldId, $newId) {
|
|
|
|
$existingId = $this->config->getAppValue($appName, 'ocsid');
|
|
|
|
|
|
|
|
if($existingId === $oldId) {
|
|
|
|
$this->config->setAppValue($appName, 'ocsid', $newId);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* {@inheritdoc}
|
|
|
|
*/
|
|
|
|
public function run() {
|
|
|
|
$appsToUpdate = [
|
|
|
|
'contacts' => [
|
|
|
|
'old' => '166044',
|
|
|
|
'new' => '168708',
|
|
|
|
],
|
|
|
|
'calendar' => [
|
|
|
|
'old' => '166043',
|
|
|
|
'new' => '168707',
|
|
|
|
],
|
|
|
|
'bookmarks' => [
|
|
|
|
'old' => '166042',
|
|
|
|
'new' => '168710',
|
|
|
|
],
|
|
|
|
'search_lucene' => [
|
|
|
|
'old' => '166057',
|
|
|
|
'new' => '168709',
|
|
|
|
],
|
|
|
|
'documents' => [
|
|
|
|
'old' => '166045',
|
|
|
|
'new' => '168711',
|
|
|
|
]
|
|
|
|
];
|
|
|
|
|
|
|
|
foreach($appsToUpdate as $appName => $ids) {
|
|
|
|
if ($this->fixOcsId($appName, $ids['old'], $ids['new'])) {
|
|
|
|
$this->emit(
|
|
|
|
'\OC\Repair',
|
|
|
|
'info',
|
|
|
|
[sprintf('Fixed invalid %s OCS id', $appName)]
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|