Passed
Push — master ( ccc0a5...5195be )
by Roeland
10:43 queued 11s
created

SetAcceptedStatus   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
dl 0
loc 43
rs 10
c 1
b 0
f 0
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A run() 0 11 2
A shouldRun() 0 3 1
A getName() 0 2 1
1
<?php
2
declare(strict_types=1);
3
/**
4
 * @copyright Copyright (c) 2019, Joas Schilling <[email protected]>
5
 *
6
 * @author Joas Schilling <[email protected]>
7
 *
8
 * @license GNU AGPL version 3 or any later version
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU Affero General Public License as
12
 * published by the Free Software Foundation, either version 3 of the
13
 * License, or (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 * GNU Affero General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU Affero General Public License
21
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
 *
23
 */
24
25
namespace OCA\Files_Sharing\Migration;
26
27
use OCP\DB\QueryBuilder\IQueryBuilder;
28
use OCP\IConfig;
29
use OCP\IDBConnection;
30
use OCP\Migration\IOutput;
31
use OCP\Migration\IRepairStep;
32
use OCP\Share\IShare;
33
34
class SetAcceptedStatus implements IRepairStep {
35
36
	/** @var IDBConnection */
37
	private $connection;
38
39
	/** @var  IConfig */
40
	private $config;
41
42
43
	public function __construct(IDBConnection $connection, IConfig $config) {
44
		$this->connection = $connection;
45
		$this->config = $config;
46
	}
47
48
	/**
49
	 * Returns the step's name
50
	 *
51
	 * @return string
52
	 * @since 9.1.0
53
	 */
54
	public function getName(): string {
55
		return 'Set existing shares as accepted';
56
	}
57
58
	/**
59
	 * @param IOutput $output
60
	 */
61
	public function run(IOutput $output): void {
62
		if (!$this->shouldRun()) {
63
			return;
64
		}
65
66
		$query = $this->connection->getQueryBuilder();
67
		$query
68
			->update('share')
69
			->set('accepted', $query->createNamedParameter(IShare::STATUS_ACCEPTED))
70
			->where($query->expr()->in('share_type', $query->createNamedParameter([IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_USERGROUP], IQueryBuilder::PARAM_INT_ARRAY)));
71
		$query->execute();
72
	}
73
74
	protected function shouldRun() {
75
		$appVersion = $this->config->getAppValue('files_sharing', 'installed_version', '0.0.0');
76
		return version_compare($appVersion, '1.10.1', '<');
77
	}
78
79
}
80