Passed
Push — master ( 380864...509b8c )
by Richard
01:39
created
maphper/lib/Sql/WhereBuilder.php 1 patch
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -2,68 +2,68 @@
 block discarded – undo
2 2
 namespace Maphper\Lib\Sql;
3 3
 
4 4
 class WhereBuilder {
5
-    private $conditionals = [];
5
+	private $conditionals = [];
6 6
 
7
-    public function __construct() {
8
-        $defaultConditionals = [
9
-            'Maphper\Lib\Sql\Between',
10
-            'Maphper\Lib\Sql\In',
11
-            'Maphper\Lib\Sql\NullConditional',
12
-            'Maphper\Lib\Sql\Like',
13
-            'Maphper\Lib\Sql\GeneralOperator'
14
-        ];
7
+	public function __construct() {
8
+		$defaultConditionals = [
9
+			'Maphper\Lib\Sql\Between',
10
+			'Maphper\Lib\Sql\In',
11
+			'Maphper\Lib\Sql\NullConditional',
12
+			'Maphper\Lib\Sql\Like',
13
+			'Maphper\Lib\Sql\GeneralOperator'
14
+		];
15 15
 
16
-        foreach ($defaultConditionals as $conditional) $this->addConditional(new $conditional);
17
-    }
16
+		foreach ($defaultConditionals as $conditional) $this->addConditional(new $conditional);
17
+	}
18 18
 
19
-    public function addConditional(WhereConditional $conditional) {
20
-        $this->conditionals[] = $conditional;
21
-    }
19
+	public function addConditional(WhereConditional $conditional) {
20
+		$this->conditionals[] = $conditional;
21
+	}
22 22
 
23 23
 	public function createSql($fields, $mode = \Maphper\Maphper::FIND_EXACT | \Maphper\Maphper::FIND_AND) {
24 24
 		$args = [];
25 25
 		$sql = [];
26 26
 
27
-        foreach ($fields as $key => $value) {
28
-            $value = $this->convertDates($value);
27
+		foreach ($fields as $key => $value) {
28
+			$value = $this->convertDates($value);
29 29
 
30
-            if (is_object($value)) continue;
30
+			if (is_object($value)) continue;
31 31
 			$result = $this->getResult($key, $value, $mode);
32
-            $sql = array_merge($sql, (array)$result['sql']);
33
-            $args = array_merge($args, $result['args']);
34
-        }
32
+			$sql = array_merge($sql, (array)$result['sql']);
33
+			$args = array_merge($args, $result['args']);
34
+		}
35 35
 
36 36
 		return ['args' => $args, 'sql' => $this->sqlArrayToString($sql, $mode)];
37 37
 	}
38 38
 
39
-    /*
39
+	/*
40 40
      * Either get sql from a conditional or call createSql again because the mode needs to be changed
41 41
      */
42
-    private function getResult($key, $value, $mode) {
43
-        if (is_numeric($key) && is_array($value)) return $this->createSql($value, $key);
44
-        return $this->getConditional($key, $value, $mode);
45
-    }
42
+	private function getResult($key, $value, $mode) {
43
+		if (is_numeric($key) && is_array($value)) return $this->createSql($value, $key);
44
+		return $this->getConditional($key, $value, $mode);
45
+	}
46 46
 
47
-    private function sqlArrayToString($sql, $mode) {
48
-        if (\Maphper\Maphper::FIND_OR & $mode) $query = implode(' OR  ', $sql);
47
+	private function sqlArrayToString($sql, $mode) {
48
+		if (\Maphper\Maphper::FIND_OR & $mode) $query = implode(' OR  ', $sql);
49 49
 		else $query = implode(' AND ', $sql);
50 50
 		if (!empty($query)) $query = '(' . $query . ')';
51
-        return $query;
52
-    }
51
+		return $query;
52
+	}
53 53
 
54
-    private function getConditional($key, $value, $mode) {
55
-        foreach ($this->conditionals as $conditional) {
56
-            if ($conditional->matches($key, $value, $mode))
57
-                return $conditional->getSql($key, $value, $mode);
58
-        }
59
-        throw new \Exception("Invalid WHERE query");
60
-    }
54
+	private function getConditional($key, $value, $mode) {
55
+		foreach ($this->conditionals as $conditional) {
56
+			if ($conditional->matches($key, $value, $mode))
57
+				return $conditional->getSql($key, $value, $mode);
58
+		}
59
+		throw new \Exception("Invalid WHERE query");
60
+	}
61 61
 
62
-    private function convertDates($value) {
63
-        if ($value instanceof \DateTime) {
64
-            if ($value->format('H:i:s')  == '00:00:00') $value = $value->format('Y-m-d');
65
-            else $value = $value->format('Y-m-d H:i:s');
66
-        }
67
-        return $value;
68
-    }
62
+	private function convertDates($value) {
63
+		if ($value instanceof \DateTime) {
64
+			if ($value->format('H:i:s')  == '00:00:00') $value = $value->format('Y-m-d');
65
+			else $value = $value->format('Y-m-d H:i:s');
66
+		}
67
+		return $value;
68
+	}
69 69
 }
Please login to merge, or discard this patch.
maphper/lib/ArrayFilter.php 1 patch
Indentation   +54 added lines, -54 removed lines patch added patch discarded remove patch
@@ -3,58 +3,58 @@
 block discarded – undo
3 3
 use Maphper\Maphper;
4 4
 
5 5
 class ArrayFilter {
6
-    private $array;
7
-
8
-    public function __construct(array $array) {
9
-        $this->array = $array;
10
-    }
11
-
12
-    public function filter($fields) {
13
-        $filteredArray = array_filter($this->array, $this->getSearchFieldFunction($fields, \Maphper\Maphper::FIND_EXACT | \Maphper\Maphper::FIND_AND));
14
-        // Need to reset indexes
15
-        $filteredArray = array_values($filteredArray);
16
-        return $filteredArray;
17
-    }
18
-
19
-    private function getSearchFieldFunction($fields, $mode) {
20
-        return function ($data) use ($fields, $mode) {
21
-            foreach ($fields as $key => $val) {
22
-                $currentFieldResult = $this->getIfFieldMatches($key, $val, $data, $mode);
23
-
24
-                if (Maphper::FIND_OR & $mode && $currentFieldResult === true) return true;
25
-                else if (Maphper::FIND_OR ^ $mode && $currentFieldResult === false) return false;
26
-            }
27
-            return (bool)(Maphper::FIND_OR ^ $mode);
28
-        };
29
-    }
30
-
31
-    private function getIfFieldMatches($key, $val, $data, $mode) {
32
-        if ($this->shouldRunDeepSearch($key, $val)) {
33
-            return $this->getSearchFieldFunction($val, $key)($data);
34
-        }
35
-        else if (!isset($data->$key)) return false;
36
-        else if ($this->isInArraySearch($mode, $key, $val))
37
-            return in_array($data->$key, $val);
38
-        else
39
-            return $this->processFilter($mode, $val, $data->$key);
40
-    }
41
-
42
-    private function shouldRunDeepSearch($key, $val) {
43
-        return is_numeric($key) && is_array($val);
44
-    }
45
-
46
-    private function isInArraySearch($mode, $key, $val) {
47
-        return !(Maphper::FIND_BETWEEN & $mode) && !is_numeric($key) && is_array($val);
48
-    }
49
-
50
-    private function processFilter($mode, $expected, $actual) {
51
-        if (Maphper::FIND_NOT & $mode) return $expected != $actual;
52
-        else if ((Maphper::FIND_GREATER | Maphper::FIND_EXACT) === $mode) return $expected <= $actual;
53
-        else if ((Maphper::FIND_LESS | Maphper::FIND_EXACT) === $mode) return $expected >= $actual;
54
-        else if (Maphper::FIND_GREATER & $mode) return $expected < $actual;
55
-        else if (Maphper::FIND_LESS & $mode) return $expected > $actual;
56
-        else if (Maphper::FIND_BETWEEN & $mode) return $expected[0] <= $actual && $actual <= $expected[1];
57
-        else if (Maphper::FIND_NOCASE & $mode) return strtolower($expected) == strtolower($actual);
58
-        return $expected == $actual;
59
-    }
6
+	private $array;
7
+
8
+	public function __construct(array $array) {
9
+		$this->array = $array;
10
+	}
11
+
12
+	public function filter($fields) {
13
+		$filteredArray = array_filter($this->array, $this->getSearchFieldFunction($fields, \Maphper\Maphper::FIND_EXACT | \Maphper\Maphper::FIND_AND));
14
+		// Need to reset indexes
15
+		$filteredArray = array_values($filteredArray);
16
+		return $filteredArray;
17
+	}
18
+
19
+	private function getSearchFieldFunction($fields, $mode) {
20
+		return function ($data) use ($fields, $mode) {
21
+			foreach ($fields as $key => $val) {
22
+				$currentFieldResult = $this->getIfFieldMatches($key, $val, $data, $mode);
23
+
24
+				if (Maphper::FIND_OR & $mode && $currentFieldResult === true) return true;
25
+				else if (Maphper::FIND_OR ^ $mode && $currentFieldResult === false) return false;
26
+			}
27
+			return (bool)(Maphper::FIND_OR ^ $mode);
28
+		};
29
+	}
30
+
31
+	private function getIfFieldMatches($key, $val, $data, $mode) {
32
+		if ($this->shouldRunDeepSearch($key, $val)) {
33
+			return $this->getSearchFieldFunction($val, $key)($data);
34
+		}
35
+		else if (!isset($data->$key)) return false;
36
+		else if ($this->isInArraySearch($mode, $key, $val))
37
+			return in_array($data->$key, $val);
38
+		else
39
+			return $this->processFilter($mode, $val, $data->$key);
40
+	}
41
+
42
+	private function shouldRunDeepSearch($key, $val) {
43
+		return is_numeric($key) && is_array($val);
44
+	}
45
+
46
+	private function isInArraySearch($mode, $key, $val) {
47
+		return !(Maphper::FIND_BETWEEN & $mode) && !is_numeric($key) && is_array($val);
48
+	}
49
+
50
+	private function processFilter($mode, $expected, $actual) {
51
+		if (Maphper::FIND_NOT & $mode) return $expected != $actual;
52
+		else if ((Maphper::FIND_GREATER | Maphper::FIND_EXACT) === $mode) return $expected <= $actual;
53
+		else if ((Maphper::FIND_LESS | Maphper::FIND_EXACT) === $mode) return $expected >= $actual;
54
+		else if (Maphper::FIND_GREATER & $mode) return $expected < $actual;
55
+		else if (Maphper::FIND_LESS & $mode) return $expected > $actual;
56
+		else if (Maphper::FIND_BETWEEN & $mode) return $expected[0] <= $actual && $actual <= $expected[1];
57
+		else if (Maphper::FIND_NOCASE & $mode) return strtolower($expected) == strtolower($actual);
58
+		return $expected == $actual;
59
+	}
60 60
 }
Please login to merge, or discard this patch.
maphper/datasource/mysqladapter.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -3,14 +3,14 @@  discard block
 block discarded – undo
3 3
 class MysqlAdapter implements DatabaseAdapter {
4 4
 	private $pdo;
5 5
 	private $stmtCache;
6
-    private $generalEditor;
6
+	private $generalEditor;
7 7
 
8 8
 	public function __construct(\PDO $pdo) {
9 9
 		$this->pdo = $pdo;
10 10
 		//Set to strict mode to detect 'out of range' errors, action at a distance but it needs to be set for all INSERT queries
11 11
 		$this->pdo->query('SET sql_mode = STRICT_ALL_TABLES');
12
-        $this->stmtCache = new StmtCache($pdo);
13
-        $this->generalEditor = new GeneralEditDatabase($this->pdo, ['short_string_max_len' => 191]);
12
+		$this->stmtCache = new StmtCache($pdo);
13
+		$this->generalEditor = new GeneralEditDatabase($this->pdo, ['short_string_max_len' => 191]);
14 14
 	}
15 15
 
16 16
 	public function quote($str) {
@@ -20,13 +20,13 @@  discard block
 block discarded – undo
20 20
 	public function query(\Maphper\Lib\Query $query) {
21 21
 		$stmt = $this->stmtCache->getCachedStmt($query->getSql());
22 22
 		$args = $query->getArgs();
23
-        $stmt->execute($args);
23
+		$stmt->execute($args);
24 24
 
25 25
 		return $stmt;
26 26
 	}
27 27
 
28
-    private function alterColumns($table, array $primaryKey, $data) {
29
-        foreach ($data as $key => $value) {
28
+	private function alterColumns($table, array $primaryKey, $data) {
29
+		foreach ($data as $key => $value) {
30 30
 			if ($this->generalEditor->isNotSavableType($value, $key, $primaryKey)) continue;
31 31
 
32 32
 			$type = $this->generalEditor->getType($value);
@@ -38,11 +38,11 @@  discard block
 block discarded – undo
38 38
 				$this->pdo->query('ALTER TABLE ' . $table . ' MODIFY ' . $this->quote($key) . ' ' . $type);
39 39
 			}
40 40
 		}
41
-    }
41
+	}
42 42
 
43 43
 	public function alterDatabase($table, array $primaryKey, $data) {
44 44
 		$this->generalEditor->createTable($table, $primaryKey, $data);
45
-        $this->alterColumns($table, $primaryKey, $data);
45
+		$this->alterColumns($table, $primaryKey, $data);
46 46
 	}
47 47
 
48 48
 	public function lastInsertId() {
Please login to merge, or discard this patch.
maphper/datasource/GeneralEditDatabase.php 1 patch
Indentation   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -2,55 +2,55 @@
 block discarded – undo
2 2
 namespace Maphper\DataSource;
3 3
 
4 4
 class GeneralEditDatabase {
5
-    private $pdo;
6
-    private $dataTypes = [
7
-        'datetime' => 'DATETIME',
8
-        'int' => 'INT(11)',
9
-        'decimal' => 'DECIMAL',
10
-        'short_string' => 'VARCHAR',
11
-        'long_string' => 'LONGBLOG',
12
-        'short_string_max_len' => 255,
13
-        'other' => 'VARCHAR(255)',
5
+	private $pdo;
6
+	private $dataTypes = [
7
+		'datetime' => 'DATETIME',
8
+		'int' => 'INT(11)',
9
+		'decimal' => 'DECIMAL',
10
+		'short_string' => 'VARCHAR',
11
+		'long_string' => 'LONGBLOG',
12
+		'short_string_max_len' => 255,
13
+		'other' => 'VARCHAR(255)',
14 14
 
15
-        'pk_default' => 'INT(11) NOT NULL AUTO_INCREMENT'
16
-    ];
15
+		'pk_default' => 'INT(11) NOT NULL AUTO_INCREMENT'
16
+	];
17 17
 
18
-    public function __construct(\PDO $pdo, array $dataTypes) {
19
-        $this->pdo = $pdo;
20
-        $this->dataTypes = array_merge($this->dataTypes, $dataTypes);
21
-    }
18
+	public function __construct(\PDO $pdo, array $dataTypes) {
19
+		$this->pdo = $pdo;
20
+		$this->dataTypes = array_merge($this->dataTypes, $dataTypes);
21
+	}
22 22
 
23
-    public function quote($str) {
23
+	public function quote($str) {
24 24
 		return '`' . str_replace('.', '`.`', trim($str, '`')) . '`';
25 25
 	}
26 26
 
27
-    public function getType($val) {
27
+	public function getType($val) {
28 28
 		if ($val instanceof \DateTime) return $this->dataTypes['datetime'];
29 29
 		else if ($result = $this->doNumberTypes($val)) return $result;
30 30
 		else if ($result = $this->doStringTypes($val)) return $result;
31 31
 		else return $this->dataTypes['other'];
32 32
 	}
33 33
 
34
-    private function doNumberTypes($val) {
35
-        if (is_int($val)) return $this->dataTypes['int'];
34
+	private function doNumberTypes($val) {
35
+		if (is_int($val)) return $this->dataTypes['int'];
36 36
 		else if (is_double($val)) return $this->dataTypes['decimal'] . '(9,' . strlen($val) - strrpos($val, '.') - 1 . ')';
37
-        else return false;
38
-    }
37
+		else return false;
38
+	}
39 39
 
40
-    private function doStringTypes($val) {
41
-        if (!is_string($val)) return false;
42
-        if (strlen($val) <= $this->dataTypes['short_string_max_len'])
43
-            return $this->dataTypes['short_string'] . '(' . $this->dataTypes['short_string_max_len'] . ')';
40
+	private function doStringTypes($val) {
41
+		if (!is_string($val)) return false;
42
+		if (strlen($val) <= $this->dataTypes['short_string_max_len'])
43
+			return $this->dataTypes['short_string'] . '(' . $this->dataTypes['short_string_max_len'] . ')';
44 44
 		else return $this->dataTypes['long_string'];
45
-    }
45
+	}
46 46
 
47
-    public function isNotSavableType($value, $key, $primaryKey) {
48
-        return is_array($value) || (is_object($value) && !($value instanceof \DateTime)) ||
49
-                in_array($key, $primaryKey);
50
-    }
47
+	public function isNotSavableType($value, $key, $primaryKey) {
48
+		return is_array($value) || (is_object($value) && !($value instanceof \DateTime)) ||
49
+				in_array($key, $primaryKey);
50
+	}
51 51
 
52
-    //Alter the database so that it can store $data
53
-    public function createTable($table, array $primaryKey, $data) {
52
+	//Alter the database so that it can store $data
53
+	public function createTable($table, array $primaryKey, $data) {
54 54
 		$parts = [];
55 55
 		foreach ($primaryKey as $key) {
56 56
 			$pk = $data->$key;
Please login to merge, or discard this patch.
maphper/datasource/sqliteadapter.php 1 patch
Indentation   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -4,15 +4,15 @@  discard block
 block discarded – undo
4 4
 class SqliteAdapter implements DatabaseAdapter {
5 5
 	private $pdo;
6 6
 	private $stmtCache;
7
-    private $generalEditor;
7
+	private $generalEditor;
8 8
 
9 9
 	public function __construct(\PDO $pdo) {
10 10
 		$this->pdo = $pdo;
11
-        $this->stmtCache = new StmtCache($pdo);
12
-        $this->generalEditor = new GeneralEditDatabase($this->pdo, [
13
-            'int' => 'INTEGER',
14
-            'pk_default' => 'INTEGER NOT NULL',
15
-        ]);
11
+		$this->stmtCache = new StmtCache($pdo);
12
+		$this->generalEditor = new GeneralEditDatabase($this->pdo, [
13
+			'int' => 'INTEGER',
14
+			'pk_default' => 'INTEGER NOT NULL',
15
+		]);
16 16
 	}
17 17
 
18 18
 	public function quote($str) {
@@ -20,19 +20,19 @@  discard block
 block discarded – undo
20 20
 	}
21 21
 
22 22
 	public function query(\Maphper\Lib\Query $query) {
23
-        $stmt = $this->stmtCache->getCachedStmt($query->getSql());
23
+		$stmt = $this->stmtCache->getCachedStmt($query->getSql());
24 24
 		$args = $query->getArgs();
25 25
 
26
-        //Handle SQLite when PDO_ERRMODE is set to SILENT
27
-        if ($stmt === false) throw new \Exception('Invalid query');
26
+		//Handle SQLite when PDO_ERRMODE is set to SILENT
27
+		if ($stmt === false) throw new \Exception('Invalid query');
28 28
 
29
-        $stmt->execute($args);
30
-        if ($stmt->errorCode() !== '00000' && $stmt->errorInfo()[2] == 'database schema has changed') {
29
+		$stmt->execute($args);
30
+		if ($stmt->errorCode() !== '00000' && $stmt->errorInfo()[2] == 'database schema has changed') {
31 31
 			$this->stmtCache->deleteQueryFromCache($query->getSql());
32 32
 			return $this->query($query);
33
-        }
33
+		}
34 34
 
35
-        return $stmt;
35
+		return $stmt;
36 36
 	}
37 37
 
38 38
 	public function lastInsertId() {
@@ -59,11 +59,11 @@  discard block
 block discarded – undo
59 59
 		// SQLSTATE[HY000]: General error: 17 database schema has changed
60 60
 		$this->stmtCache->clearCache();
61 61
 
62
-        // Create temp table to create a new structure
62
+		// Create temp table to create a new structure
63 63
 		$affix = '_'.substr(md5($table), 0, 6);
64
-        $tempTable = $table . $affix;
64
+		$tempTable = $table . $affix;
65 65
 		$this->generalEditor->createTable($tempTable, $primaryKey, $data);
66
-        $this->alterColumns($tempTable, $primaryKey, $data);
66
+		$this->alterColumns($tempTable, $primaryKey, $data);
67 67
 		$this->copyTableData($table, $tempTable);
68 68
 
69 69
 		$this->pdo->query('DROP TABLE IF EXISTS ' . $table );
@@ -71,8 +71,8 @@  discard block
 block discarded – undo
71 71
 
72 72
 	}
73 73
 
74
-    private function copyTableData($tableFrom, $tableTo) {
75
-        try {
74
+	private function copyTableData($tableFrom, $tableTo) {
75
+		try {
76 76
 			if ($this->tableExists($tableFrom)) {
77 77
 				$columns = implode(', ', $this->getColumns($tableFrom));
78 78
 
@@ -83,19 +83,19 @@  discard block
 block discarded – undo
83 83
 			// No data to copy
84 84
 			echo $e->getMessage();
85 85
 		}
86
-    }
86
+	}
87 87
 
88
-    private function alterColumns($table, array $primaryKey, $data) {
89
-        foreach ($data as $key => $value) {
88
+	private function alterColumns($table, array $primaryKey, $data) {
89
+		foreach ($data as $key => $value) {
90 90
 			if ($this->generalEditor->isNotSavableType($value, $key, $primaryKey)) continue;
91 91
 
92 92
 			$type = $this->generalEditor->getType($value);
93 93
 
94 94
 			$this->pdo->query('ALTER TABLE ' . $table . ' ADD ' . $this->quote($key) . ' ' . $type);
95 95
 		}
96
-    }
96
+	}
97 97
 
98
-    public function addIndex($table, array $fields) {
98
+	public function addIndex($table, array $fields) {
99 99
 		if (empty($fields)) return false;
100 100
 
101 101
 		//SQLite doesn't support ASC/DESC indexes, remove the keywords
Please login to merge, or discard this patch.