Completed
Pull Request — master (#310)
by Victor
02:17
created

Locator::getPathtoConfigFiles()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
ccs 0
cts 3
cp 0
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
crap 2
1
<?php
2
/**
3
 * @author Victor Dubiniuk <[email protected]>
4
 *
5
 * @copyright Copyright (c) 2015, ownCloud, Inc.
6
 * @license AGPL-3.0
7
 *
8
 * This code is free software: you can redistribute it and/or modify
9
 * it under the terms of the GNU Affero General Public License, version 3,
10
 * as published by the Free Software Foundation.
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, version 3,
18
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
19
 *
20
 */
21
22
namespace Owncloud\Updater\Utils;
23
24
use \Owncloud\Updater\Console\Application;
25
26
class Locator {
27
28
	/**
29
	 * absolute path to ownCloud root
30
	 * @var string 
31
	 */
32
	protected $ownCloudRootPath;
33
34
	/**
35
	 * absolute path to updater root
36
	 * @var string
37
	 */
38
	protected $updaterRootPath;
39
40
	/**
41
	 *
42
	 * @param string $baseDir
43
	 */
44
	public function __construct($baseDir){
45
		$this->updaterRootPath = $baseDir;
46
		$this->ownCloudRootPath = dirname($baseDir);
47
	}
48
49
	public function getOwnCloudRootPath(){
50
		return $this->ownCloudRootPath;
51
	}
52
53
	/**
54
	 * expected items in the core
55
	 * @return string[]
56
	 */
57
	public function getRootDirContent(){
58
		return [
59
			"config/config.sample.php",
60
			"core",
61
			"l10n",
62
			"lib",
63
			"ocs",
64
			"ocs-provider",
65
			"resources",
66
			"settings",
67
			".htaccess",
68
			".mailmap",
69
			".tag",
70
			".user.ini",
71
			"AUTHORS",
72
			"console.php",
73
			"COPYING-AGPL",
74
			"cron.php",
75
			"db_structure.xml",
76
			"index.html",
77
			"index.php",
78
			"indie.json",
79
			"occ",
80
			"public.php",
81
			"remote.php",
82
			"robots.txt",
83
			"status.php",
84
			"version.php"
85
		];
86
	}
87
88
	public function getUpdaterContent(){
89
		return [
90
			'app',
91
			'application.php',
92
			'box.json',
93
			'composer.json',
94
			'composer.lock',
95
			'CONTRIBUTING.md',
96
			'COPYING-AGPL',
97
			'index.php',
98
			'pub',
99
			'src',
100
			'vendor',
101
			'README.md',
102
			'.travis.yml',
103
			'.scrutinizer.yml',
104
		];
105
	}
106
107
	/**
108
	 * Absolute path to core root dir content
109
	 * @return array
110
	 */
111
	public function getRootDirItems(){
112
		$items = $this->getRootDirContent();
113
		$items = array_map(
114
			function($item){ return $this->ownCloudRootPath . "/" . $item;	},
115
			$items
116
		);
117
		return $items;
118
	}
119
120
	/**
121
	 * Absolute path
122
	 * @return string
123
	 * @throws \Exception
124
	 */
125
	public function getDataDir(){
126
		$container = Application::$container;
127
		if (isset($container['utils.configReader']) && $container['utils.configReader']->getIsLoaded()){
128
			return $container['utils.configReader']->getByPath('system.datadirectory');
129
		}
130
131
		// Fallback case
132
		include $this->getPathToConfigFile();
133
		if (isset($CONFIG['datadirectory'])){
0 ignored issues
show
Bug introduced by
The variable $CONFIG seems to never exist, and therefore isset should always return false. Did you maybe rename this variable?

This check looks for calls to isset(...) or empty() on variables that are yet undefined. These calls will always produce the same result and can be removed.

This is most likely caused by the renaming of a variable or the removal of a function/method parameter.

Loading history...
134
			return $CONFIG['datadirectory'];
135
		}
136
137
		// Something went wrong
138
		throw new \Exception('Unable to detect datadirectory');
139
	}
140
141
	/**
142
	 * Absolute path to updater root dir
143
	 * @return string
144
	 */
145
	public function getUpdaterBaseDir(){
146
		return $this->getDataDir() . '/updater-data';
147
	}
148
149
	/**
150
	 * Absolute path to create a core and apps backups
151
	 * @return string
152
	 */
153
	public function getCheckpointDir(){
154
		return $this->getUpdaterBaseDir() . '/checkpoint';
155
	}
156
157
	/**
158
	 * Absolute path to store downloaded packages
159
	 * @return string
160
	 */
161
	public function getDownloadBaseDir(){
162
		return $this->getUpdaterBaseDir() . '/download';
163
	}
164
165
	public function getExtractionBaseDir(){
166
		 return $this->ownCloudRootPath . "/_oc_upgrade";
167
	}
168
169
	/**
170
	 *
171
	 * @return string
172
	 */
173
	public function getPathToOccFile(){
174
		return $this->ownCloudRootPath . '/occ';
175
	}
176
177
	/**
178
	 *
179
	 * @return string
180
	 */
181
	public function getInstalledVersion(){
182
		include $this->getPathToVersionFile();
183
184
		/** @var $OC_Version string */
185
		return $OC_Version;
0 ignored issues
show
Bug introduced by
The variable $OC_Version does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
186
	}
187
188
	/**
189
	 *
190
	 * @return string
191
	 */
192
	public function getChannelFromVersionsFile(){
193
		include $this->getPathToVersionFile();
194
195
		/** @var $OC_Version string */
196
		return $OC_Channel;
0 ignored issues
show
Bug introduced by
The variable $OC_Channel does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
197
	}
198
199
	/**
200
	 *
201
	 * @return string
202
	 */
203
	public function getBuild(){
204
		include $this->getPathToVersionFile();
205
206
		/** @var $OC_Build string */
207
		return $OC_Build;
0 ignored issues
show
Bug introduced by
The variable $OC_Build does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
208
	}
209
210
	public function getPathtoConfigFiles($filePostfix = 'config.php'){
211
		// Only config.php for now
212
		return [
213
			$this->ownCloudRootPath . '/config/' . $filePostfix
214
		];
215
	}
216
217
	public function getPathToConfigFile(){
218
		return $this->ownCloudRootPath . '/config/config.php';
219
	}
220
221
	/**
222
	 *
223
	 * @return string
224
	 */
225
	public function getPathToVersionFile(){
226
		return $this->ownCloudRootPath . '/version.php';
227
	}
228
229
}
230