mirror of https://github.com/nextcloud/server.git
parent
646db7f88d
commit
47cd976035
@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* 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
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OC\App\AppStore\Bundles;
|
||||
|
||||
use OCP\IL10N;
|
||||
|
||||
abstract class Bundle {
|
||||
/** @var IL10N */
|
||||
protected $l10n;
|
||||
|
||||
/**
|
||||
* @param IL10N $l10n
|
||||
*/
|
||||
public function __construct(IL10N $l10n) {
|
||||
$this->l10n = $l10n;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the identifier of the bundle
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public final function getIdentifier() {
|
||||
return substr(strrchr(get_class($this), '\\'), 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of the bundle
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public abstract function getName();
|
||||
|
||||
/**
|
||||
* Get the description of the bundle
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public abstract function getDescription();
|
||||
|
||||
/**
|
||||
* Get the list of app identifiers in the bundle
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public abstract function getAppIdentifiers();
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* 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
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OC\App\AppStore\Bundles;
|
||||
|
||||
use OCP\IL10N;
|
||||
|
||||
class BundleFetcher {
|
||||
/** @var IL10N */
|
||||
private $l10n;
|
||||
|
||||
/**
|
||||
* @param IL10N $l10n
|
||||
*/
|
||||
public function __construct(IL10N $l10n) {
|
||||
$this->l10n = $l10n;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Bundle[]
|
||||
*/
|
||||
public function getBundles() {
|
||||
return [
|
||||
new EnterpriseBundle($this->l10n),
|
||||
new GroupwareBundle($this->l10n),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Bundles that should be installed by default after installation
|
||||
*
|
||||
* @return Bundle[]
|
||||
*/
|
||||
public function getDefaultInstallationBundle() {
|
||||
return [
|
||||
new CoreBundle($this->l10n),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the bundle with the specified identifier
|
||||
*
|
||||
* @param string $identifier
|
||||
* @return Bundle
|
||||
* @throws \BadMethodCallException If the bundle does not exist
|
||||
*/
|
||||
public function getBundleByIdentifier($identifier) {
|
||||
/** @var Bundle[] $bundles */
|
||||
$bundles = array_merge(
|
||||
$this->getBundles(),
|
||||
$this->getDefaultInstallationBundle()
|
||||
);
|
||||
foreach($bundles as $bundle) {
|
||||
if($bundle->getIdentifier() === $identifier) {
|
||||
return $bundle;
|
||||
}
|
||||
}
|
||||
|
||||
throw new \BadMethodCallException('Bundle with specified identifier does not exist');
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* 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
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OC\App\AppStore\Bundles;
|
||||
|
||||
class CoreBundle extends Bundle {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getName() {
|
||||
return (string)$this->l10n->t('Core bundle');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getDescription() {
|
||||
return (string)$this->l10n->t('Default apps required by Nextcloud');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getAppIdentifiers() {
|
||||
return [
|
||||
'bruteforcesettings',
|
||||
];
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* 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
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OC\App\AppStore\Bundles;
|
||||
|
||||
class EnterpriseBundle extends Bundle {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getName() {
|
||||
return (string)$this->l10n->t('Enterprise bundle');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getDescription() {
|
||||
return (string)$this->l10n->t('Apps for the Enterprise.');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getAppIdentifiers() {
|
||||
return [
|
||||
'admin_audit',
|
||||
'user_ldap',
|
||||
'files_retention',
|
||||
'files_automatedtagging',
|
||||
'user_saml',
|
||||
'files_accesscontrol',
|
||||
];
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* 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
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OC\App\AppStore\Bundles;
|
||||
|
||||
class GroupwareBundle extends Bundle {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getName() {
|
||||
return (string)$this->l10n->t('Groupware bundle');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getDescription() {
|
||||
return (string)$this->l10n->t('Apps for groupware functionalities.');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getAppIdentifiers() {
|
||||
return [
|
||||
'calendar',
|
||||
'contacts',
|
||||
];
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* 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
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OC\Repair\NC12;
|
||||
|
||||
use OC\App\AppStore\Bundles\BundleFetcher;
|
||||
use OC\Installer;
|
||||
use OCP\IConfig;
|
||||
use OCP\Migration\IOutput;
|
||||
use OCP\Migration\IRepairStep;
|
||||
|
||||
class InstallCoreBundle implements IRepairStep {
|
||||
/** @var BundleFetcher */
|
||||
private $bundleFetcher;
|
||||
/** @var IConfig */
|
||||
private $config;
|
||||
/** @var Installer */
|
||||
private $installer;
|
||||
|
||||
/**
|
||||
* @param BundleFetcher $bundleFetcher
|
||||
* @param IConfig $config
|
||||
* @param Installer $installer
|
||||
*/
|
||||
public function __construct(BundleFetcher $bundleFetcher,
|
||||
IConfig $config,
|
||||
Installer $installer) {
|
||||
$this->bundleFetcher = $bundleFetcher;
|
||||
$this->config = $config;
|
||||
$this->installer = $installer;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getName() {
|
||||
return 'Install new core bundle components';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run(IOutput $output) {
|
||||
$versionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0');
|
||||
|
||||
if (version_compare($versionFromBeforeUpdate, '12.0.0.14', '>')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$defaultBundle = $this->bundleFetcher->getDefaultInstallationBundle();
|
||||
foreach($defaultBundle as $bundle) {
|
||||
try {
|
||||
$this->installer->installAppBundle($bundle);
|
||||
$output->info('Successfully installed core app bundle.');
|
||||
} catch (\Exception $e) {
|
||||
$output->warning('Could not install core app bundle:' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue