Completed
Push — master ( 4a9cb8...f72f55 )
by Morris
12:46
created

BundleFetcher::getDefaultInstallationBundle()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * @copyright Copyright (c) 2017 Lukas Reschke <[email protected]>
4
 *
5
 * @license GNU AGPL version 3 or any later version
6
 *
7
 * This program is free software: you can redistribute it and/or modify
8
 * it under the terms of the GNU Affero General Public License as
9
 * published by the Free Software Foundation, either version 3 of the
10
 * License, or (at your option) any later version.
11
 *
12
 * This program is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 * GNU Affero General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Affero General Public License
18
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
 *
20
 */
21
22
namespace OC\App\AppStore\Bundles;
23
24
use OCP\IL10N;
25
26
class BundleFetcher {
27
	/** @var IL10N */
28
	private $l10n;
29
30
	/**
31
	 * @param IL10N $l10n
32
	 */
33
	public function __construct(IL10N $l10n) {
34
		$this->l10n = $l10n;
35
	}
36
37
	/**
38
	 * @return Bundle[]
39
	 */
40
	public function getBundles() {
41
		return [
42
			new EnterpriseBundle($this->l10n),
43
			new GroupwareBundle($this->l10n),
44
			new SocialSharingBundle($this->l10n),
45
		];
46
	}
47
48
	/**
49
	 * Bundles that should be installed by default after installation
50
	 *
51
	 * @return Bundle[]
52
	 */
53
	public function getDefaultInstallationBundle() {
54
		return [
55
			new CoreBundle($this->l10n),
56
		];
57
	}
58
59
	/**
60
	 * Get the bundle with the specified identifier
61
	 *
62
	 * @param string $identifier
63
	 * @return Bundle
64
	 * @throws \BadMethodCallException If the bundle does not exist
65
	 */
66
	public function getBundleByIdentifier($identifier) {
67
		/** @var Bundle[] $bundles */
68
		$bundles = array_merge(
69
			$this->getBundles(),
70
			$this->getDefaultInstallationBundle()
71
		);
72
		foreach($bundles as $bundle) {
73
			if($bundle->getIdentifier() === $identifier) {
74
				return $bundle;
75
			}
76
		}
77
78
		throw new \BadMethodCallException('Bundle with specified identifier does not exist');
79
	}
80
}
81