Passed
Push — master ( eade66...a4d1b5 )
by Aimeos
03:55
created

CustomerChangeAddressRefidParentidFosUser   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 6
eloc 17
c 2
b 0
f 0
dl 0
loc 51
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A migrate() 0 3 1
A getPostDependencies() 0 3 1
A process() 0 16 4
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2015-2020
6
 */
7
8
9
namespace Aimeos\MW\Setup\Task;
10
11
12
/**
13
 * Renames the "refid" column to "parentid"
14
 */
15
class CustomerChangeAddressRefidParentidFosUser extends \Aimeos\MW\Setup\Task\Base
16
{
17
	private $mysql = array(
18
		'refid' => array(
19
			'ALTER TABLE "fos_user_address" CHANGE "refid" "parentid" INTEGER NOT NULL',
20
			'ALTER TABLE "fos_user_address" DROP INDEX "idx_fosad_refid", ADD INDEX "idx_fosad_pid" ("parentid")',
21
		),
22
	);
23
24
25
	/**
26
	 * Returns the list of task names which depends on this task.
27
	 *
28
	 * @return string[] List of task names
29
	 */
30
	public function getPostDependencies() : array
31
	{
32
		return ['TablesCreateMShop'];
33
	}
34
35
36
	/**
37
	 * Migrate database schema
38
	 */
39
	public function migrate()
40
	{
41
		$this->process( $this->mysql );
42
	}
43
44
45
	/**
46
	 * Changes the column in table
47
	 *
48
	 * array string $stmts List of SQL statements for changing the columns
49
	 */
50
	protected function process( array $stmts )
51
	{
52
		$table = 'fos_user_address';
53
		$this->msg( sprintf( 'Rename "refid" to "parentid" in table "%1$s"', $table ), 0 ); $this->status( '' );
54
55
		foreach( $stmts as $column => $stmts )
56
		{
57
			$this->msg( sprintf( 'Checking column "%1$s"', $column ), 1 );
58
59
			if( $this->schema->tableExists( $table )
60
				&& $this->schema->columnExists( $table, $column ) === true
61
			) {
62
				$this->executeList( $stmts );
63
				$this->status( 'done' );
64
			} else {
65
				$this->status( 'OK' );
66
			}
67
		}
68
	}
69
}
70