Passed
Push — master ( 4ada5b...453afa )
by Richard
02:12
created
Maphper/MultiPk.php 3 patches
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@
 block discarded – undo
4 4
 	private $parent;
5 5
 	private $primaryKey;
6 6
 	private $lookup;
7
-    private $mapper;
7
+	private $mapper;
8 8
 
9 9
 	public function __construct(Maphper $mapper, $lookup, array $primaryKey, MultiPk $parent = null) {
10 10
 		$this->parent = $parent;
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -24,8 +24,8 @@  discard block
 block discarded – undo
24 24
 	}
25 25
 
26 26
 	public function offsetGet($key) {
27
-		$depth = $this->getDepth()+1;
28
-		if (count($this->primaryKey)-1 == $depth) return $this->mapper->filter([$this->primaryKey[$depth] => $key])->item(0);
27
+		$depth = $this->getDepth() + 1;
28
+		if (count($this->primaryKey) - 1 == $depth) return $this->mapper->filter([$this->primaryKey[$depth] => $key])->item(0);
29 29
 		else return new MultiPk($this->mapper, $key, $this->primaryKey, $this);
30 30
 	}
31 31
 
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
 
45 45
 	public function offsetUnset($key) {
46 46
 		$keys = $this->primaryKey;
47
-		$this->mapper->filter([ array_pop($keys) => $key])->delete();
47
+		$this->mapper->filter([array_pop($keys) => $key])->delete();
48 48
 	}
49 49
 
50 50
 	public function offsetExists($key) {
Please login to merge, or discard this patch.
Braces   +5 added lines, -2 removed lines patch added patch discarded remove patch
@@ -25,8 +25,11 @@
 block discarded – undo
25 25
 
26 26
 	public function offsetGet($key) {
27 27
 		$depth = $this->getDepth()+1;
28
-		if (count($this->primaryKey)-1 == $depth) return $this->mapper->filter([$this->primaryKey[$depth] => $key])->item(0);
29
-		else return new MultiPk($this->mapper, $key, $this->primaryKey, $this);
28
+		if (count($this->primaryKey)-1 == $depth) {
29
+			return $this->mapper->filter([$this->primaryKey[$depth] => $key])->item(0);
30
+		} else {
31
+			return new MultiPk($this->mapper, $key, $this->primaryKey, $this);
32
+		}
30 33
 	}
31 34
 
32 35
 	public function offsetSet($key, $value) {
Please login to merge, or discard this patch.
Maphper/DataSource/DatabaseOptions.php 1 patch
Braces   +6 added lines, -2 removed lines patch added patch discarded remove patch
@@ -10,7 +10,9 @@  discard block
 block discarded – undo
10 10
 	}
11 11
 
12 12
 	public function getAdapter() {
13
-		if (!($this->db instanceof \PDO)) return $this->db;
13
+		if (!($this->db instanceof \PDO)) {
14
+			return $this->db;
15
+		}
14 16
 
15 17
 		$adapter = '\\Maphper\\DataSource\\' . ucfirst($this->db->getAttribute(\PDO::ATTR_DRIVER_NAME)) . 'Adapter';
16 18
 
@@ -18,7 +20,9 @@  discard block
 block discarded – undo
18 20
 	}
19 21
 
20 22
 	public function getEditMode() {
21
-		if (!isset($this->options['editmode'])) return false;
23
+		if (!isset($this->options['editmode'])) {
24
+			return false;
25
+		}
22 26
 
23 27
 		return $this->options['editmode'] === true ? Database::EDIT_STRUCTURE | Database::EDIT_INDEX | Database::EDIT_OPTIMISE : $this->options['editmode'];
24 28
 	}
Please login to merge, or discard this patch.
Maphper/DataSource/DatabaseCrud.php 2 patches
Indentation   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -2,30 +2,30 @@  discard block
 block discarded – undo
2 2
 namespace Maphper\DataSource;
3 3
 
4 4
 class DatabaseCrud {
5
-    private $crudBuilder;
6
-    private $whereBuilder;
7
-    private $adapter;
8
-    private $databaseModify;
9
-    private $databaseSelect;
10
-    private $table;
11
-    private $primaryKey;
12
-
13
-    public function __construct(DatabaseAdapter $adapter, DatabaseModify $databaseModify, DatabaseSelect $databaseSelect, $table, $primaryKey) {
14
-        $this->adapter = $adapter;
15
-        $this->databaseModify = $databaseModify;
16
-        $this->databaseSelect = $databaseSelect;
17
-        $this->crudBuilder = new \Maphper\Lib\CrudBuilder();
18
-        $this->whereBuilder = new \Maphper\Lib\Sql\WhereBuilder();
19
-        $this->table = $table;
20
-        $this->primaryKey = $primaryKey;
21
-    }
22
-
23
-    public function deleteById($id) {
24
-        $this->adapter->query($this->crudBuilder->delete($this->table, $this->primaryKey[0] . ' = :id', [':id' => $id]));
25
-        $this->databaseSelect->deleteIDFromCache($id);
5
+	private $crudBuilder;
6
+	private $whereBuilder;
7
+	private $adapter;
8
+	private $databaseModify;
9
+	private $databaseSelect;
10
+	private $table;
11
+	private $primaryKey;
12
+
13
+	public function __construct(DatabaseAdapter $adapter, DatabaseModify $databaseModify, DatabaseSelect $databaseSelect, $table, $primaryKey) {
14
+		$this->adapter = $adapter;
15
+		$this->databaseModify = $databaseModify;
16
+		$this->databaseSelect = $databaseSelect;
17
+		$this->crudBuilder = new \Maphper\Lib\CrudBuilder();
18
+		$this->whereBuilder = new \Maphper\Lib\Sql\WhereBuilder();
19
+		$this->table = $table;
20
+		$this->primaryKey = $primaryKey;
26 21
 	}
27 22
 
28
-    public function deleteByField(array $fields, array $options = []) {
23
+	public function deleteById($id) {
24
+		$this->adapter->query($this->crudBuilder->delete($this->table, $this->primaryKey[0] . ' = :id', [':id' => $id]));
25
+		$this->databaseSelect->deleteIDFromCache($id);
26
+	}
27
+
28
+	public function deleteByField(array $fields, array $options = []) {
29 29
 		$query = $this->whereBuilder->createSql($fields);
30 30
 		$this->adapter->query($this->crudBuilder->delete($this->table, $query['sql'], $query['args'], $options['limit'], null, $options['order']));
31 31
 		$this->databaseModify->addIndex(array_keys($query['args']));
@@ -35,22 +35,22 @@  discard block
 block discarded – undo
35 35
 		$this->databaseSelect->clearResultCache();
36 36
 	}
37 37
 
38
-    private function getIfNew($data) {
39
-        $new = false;
40
-        foreach ($this->primaryKey as $k) {
41
-            if (empty($data->$k)) {
42
-                $data->$k = null;
43
-                $new = true;
44
-            }
45
-        }
46
-        return $new;
47
-    }
38
+	private function getIfNew($data) {
39
+		$new = false;
40
+		foreach ($this->primaryKey as $k) {
41
+			if (empty($data->$k)) {
42
+				$data->$k = null;
43
+				$new = true;
44
+			}
45
+		}
46
+		return $new;
47
+	}
48 48
 
49
-    public function save($data, $tryagain = true) {
50
-        $new = $this->getIfNew($data);
49
+	public function save($data, $tryagain = true) {
50
+		$new = $this->getIfNew($data);
51 51
 
52 52
 		try {
53
-            $result = $this->insert($this->table, $this->primaryKey, $data);
53
+			$result = $this->insert($this->table, $this->primaryKey, $data);
54 54
 
55 55
 			//If there was an error but PDO is silent, trigger the catch block anyway
56 56
 			if ($result->errorCode() !== '00000') throw new \Exception('Could not insert into ' . $this->table);
@@ -68,15 +68,15 @@  discard block
 block discarded – undo
68 68
 		$this->databaseSelect->updateCache($data, $data->{$this->primaryKey[0]});
69 69
 	}
70 70
 
71
-    private function updatePK($data, $new) {
72
-        if ($new && count($this->primaryKey) == 1) $data->{$this->primaryKey[0]} = $this->adapter->lastInsertId();
73
-    }
71
+	private function updatePK($data, $new) {
72
+		if ($new && count($this->primaryKey) == 1) $data->{$this->primaryKey[0]} = $this->adapter->lastInsertId();
73
+	}
74 74
 
75
-    private function checkIfUpdateWorked($data) {
76
-        $updateWhere = $this->whereBuilder->createSql($data);
77
-        $matched = $this->databaseSelect->findByField($updateWhere['args']);
78
-        if (count($matched) == 0) throw new \InvalidArgumentException('Record inserted into table ' . $this->table . ' fails table constraints');
79
-    }
75
+	private function checkIfUpdateWorked($data) {
76
+		$updateWhere = $this->whereBuilder->createSql($data);
77
+		$matched = $this->databaseSelect->findByField($updateWhere['args']);
78
+		if (count($matched) == 0) throw new \InvalidArgumentException('Record inserted into table ' . $this->table . ' fails table constraints');
79
+	}
80 80
 
81 81
 	private function insert($table, array $primaryKey, $data) {
82 82
 		$error = 0;
@@ -88,16 +88,16 @@  discard block
 block discarded – undo
88 88
 		}
89 89
 
90 90
  		if ($error || $result->errorCode() !== '00000') {
91
-            $result = $this->tryUpdate($table, $primaryKey, $data);
92
-        }
91
+			$result = $this->tryUpdate($table, $primaryKey, $data);
92
+		}
93 93
 
94 94
 		return $result;
95 95
 	}
96 96
 
97
-    private function tryUpdate($table, array $primaryKey, $data) {
98
-        $result = $this->adapter->query($this->crudBuilder->update($table, $primaryKey, $data));
99
-        if ($result->rowCount() === 0) $this->checkIfUpdateWorked($data);
97
+	private function tryUpdate($table, array $primaryKey, $data) {
98
+		$result = $this->adapter->query($this->crudBuilder->update($table, $primaryKey, $data));
99
+		if ($result->rowCount() === 0) $this->checkIfUpdateWorked($data);
100 100
 
101
-        return $result;
102
-    }
101
+		return $result;
102
+	}
103 103
 }
Please login to merge, or discard this patch.
Braces   +17 added lines, -9 removed lines patch added patch discarded remove patch
@@ -53,10 +53,13 @@  discard block
 block discarded – undo
53 53
             $result = $this->insert($this->table, $this->primaryKey, $data);
54 54
 
55 55
 			//If there was an error but PDO is silent, trigger the catch block anyway
56
-			if ($result->errorCode() !== '00000') throw new \Exception('Could not insert into ' . $this->table);
57
-		}
58
-		catch (\Exception $e) {
59
-			if (!$this->databaseModify->getTryInsertAgain($tryagain)) throw $e;
56
+			if ($result->errorCode() !== '00000') {
57
+				throw new \Exception('Could not insert into ' . $this->table);
58
+			}
59
+		} catch (\Exception $e) {
60
+			if (!$this->databaseModify->getTryInsertAgain($tryagain)) {
61
+				throw $e;
62
+			}
60 63
 
61 64
 			$this->adapter->alterDatabase($this->table, $this->primaryKey, $data);
62 65
 			$this->save($data, false);
@@ -69,21 +72,24 @@  discard block
 block discarded – undo
69 72
 	}
70 73
 
71 74
     private function updatePK($data, $new) {
72
-        if ($new && count($this->primaryKey) == 1) $data->{$this->primaryKey[0]} = $this->adapter->lastInsertId();
75
+        if ($new && count($this->primaryKey) == 1) {
76
+        	$data->{$this->primaryKey[0]} = $this->adapter->lastInsertId();
77
+        }
73 78
     }
74 79
 
75 80
     private function checkIfUpdateWorked($data) {
76 81
         $updateWhere = $this->whereBuilder->createSql($data);
77 82
         $matched = $this->databaseSelect->findByField($updateWhere['args']);
78
-        if (count($matched) == 0) throw new \InvalidArgumentException('Record inserted into table ' . $this->table . ' fails table constraints');
83
+        if (count($matched) == 0) {
84
+        	throw new \InvalidArgumentException('Record inserted into table ' . $this->table . ' fails table constraints');
85
+        }
79 86
     }
80 87
 
81 88
 	private function insert($table, array $primaryKey, $data) {
82 89
 		$error = 0;
83 90
 		try {
84 91
 			$result = $this->adapter->query($this->crudBuilder->insert($table, $data));
85
-		}
86
-		catch (\Exception $e) {
92
+		} catch (\Exception $e) {
87 93
 			$error = 1;
88 94
 		}
89 95
 
@@ -96,7 +102,9 @@  discard block
 block discarded – undo
96 102
 
97 103
     private function tryUpdate($table, array $primaryKey, $data) {
98 104
         $result = $this->adapter->query($this->crudBuilder->update($table, $primaryKey, $data));
99
-        if ($result->rowCount() === 0) $this->checkIfUpdateWorked($data);
105
+        if ($result->rowCount() === 0) {
106
+        	$this->checkIfUpdateWorked($data);
107
+        }
100 108
 
101 109
         return $result;
102 110
     }
Please login to merge, or discard this patch.
Maphper/DataSource/GeneralEditDatabase.php 2 patches
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.
Braces   +29 added lines, -13 removed lines patch added patch discarded remove patch
@@ -25,23 +25,36 @@  discard block
 block discarded – undo
25 25
 	}
26 26
 
27 27
     public function getType($val) {
28
-		if ($val instanceof \DateTime) return $this->dataTypes['datetime'];
29
-		else if ($result = $this->doNumberTypes($val)) return $result;
30
-		else if ($result = $this->doStringTypes($val)) return $result;
31
-		else return $this->dataTypes['other'];
28
+		if ($val instanceof \DateTime) {
29
+			return $this->dataTypes['datetime'];
30
+		} else if ($result = $this->doNumberTypes($val)) {
31
+			return $result;
32
+		} else if ($result = $this->doStringTypes($val)) {
33
+			return $result;
34
+		} else {
35
+			return $this->dataTypes['other'];
36
+		}
32 37
 	}
33 38
 
34 39
     private function doNumberTypes($val) {
35
-        if (is_int($val)) return $this->dataTypes['int'];
36
-		else if (is_double($val)) return $this->dataTypes['decimal'] . '(9,' . strlen($val) - strrpos($val, '.') - 1 . ')';
37
-        else return false;
40
+        if (is_int($val)) {
41
+        	return $this->dataTypes['int'];
42
+        } else if (is_double($val)) {
43
+			return $this->dataTypes['decimal'] . '(9,' . strlen($val) - strrpos($val, '.') - 1 . ')';
44
+		} else {
45
+        	return false;
46
+        }
38 47
     }
39 48
 
40 49
     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
-		else return $this->dataTypes['long_string'];
50
+        if (!is_string($val)) {
51
+        	return false;
52
+        }
53
+        if (strlen($val) <= $this->dataTypes['short_string_max_len']) {
54
+                    return $this->dataTypes['short_string'] . '(' . $this->dataTypes['short_string_max_len'] . ')';
55
+        } else {
56
+			return $this->dataTypes['long_string'];
57
+		}
45 58
     }
46 59
 
47 60
     public function isNotSavableType($value, $key, $primaryKey) {
@@ -54,8 +67,11 @@  discard block
 block discarded – undo
54 67
 		$parts = [];
55 68
 		foreach ($primaryKey as $key) {
56 69
 			$pk = $data->$key;
57
-			if ($pk == null) $parts[] = $key . ' ' . $this->dataTypes['pk_default'];
58
-			else $parts[] = $key . ' ' . $this->getType($pk) . ' NOT NULL';
70
+			if ($pk == null) {
71
+				$parts[] = $key . ' ' . $this->dataTypes['pk_default'];
72
+			} else {
73
+				$parts[] = $key . ' ' . $this->getType($pk) . ' NOT NULL';
74
+			}
59 75
 		}
60 76
 
61 77
 		$pkField = implode(', ', $parts) . ', PRIMARY KEY(' . implode(', ', $primaryKey) . ')';
Please login to merge, or discard this patch.
Maphper/DataSource/StmtCache.php 2 patches
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -1,14 +1,14 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 namespace Maphper\DataSource;
3 3
 class StmtCache {
4
-    private $pdo;
5
-    private $queryCache = [];
4
+	private $pdo;
5
+	private $queryCache = [];
6 6
 
7
-    public function __construct(\PDO $pdo) {
8
-        $this->pdo = $pdo;
9
-    }
7
+	public function __construct(\PDO $pdo) {
8
+		$this->pdo = $pdo;
9
+	}
10 10
 
11
-    public function getCachedStmt($sql) {
11
+	public function getCachedStmt($sql) {
12 12
 		$queryId = $this->getQueryId($sql);
13 13
 		if (isset($this->queryCache[$queryId])) $stmt = $this->queryCache[$queryId];
14 14
 		else {
@@ -18,15 +18,15 @@  discard block
 block discarded – undo
18 18
 		return $stmt;
19 19
 	}
20 20
 
21
-    private function getQueryId($sql) {
22
-        return md5($sql);
23
-    }
21
+	private function getQueryId($sql) {
22
+		return md5($sql);
23
+	}
24 24
 
25
-    public function deleteQueryFromCache($sql) {
26
-        unset($this->queryCache[$this->getQueryId($sql)]);
27
-    }
25
+	public function deleteQueryFromCache($sql) {
26
+		unset($this->queryCache[$this->getQueryId($sql)]);
27
+	}
28 28
 
29
-    public function clearCache() {
30
-        $this->queryCache = [];
31
-    }
29
+	public function clearCache() {
30
+		$this->queryCache = [];
31
+	}
32 32
 }
Please login to merge, or discard this patch.
Braces   +6 added lines, -3 removed lines patch added patch discarded remove patch
@@ -10,10 +10,13 @@
 block discarded – undo
10 10
 
11 11
     public function getCachedStmt($sql) {
12 12
 		$queryId = $this->getQueryId($sql);
13
-		if (isset($this->queryCache[$queryId])) $stmt = $this->queryCache[$queryId];
14
-		else {
13
+		if (isset($this->queryCache[$queryId])) {
14
+			$stmt = $this->queryCache[$queryId];
15
+		} else {
15 16
 			$stmt = $this->pdo->prepare($sql, [\PDO::ATTR_CURSOR => \PDO::CURSOR_FWDONLY]);
16
-			if ($stmt) $this->queryCache[$queryId] = $stmt;
17
+			if ($stmt) {
18
+				$this->queryCache[$queryId] = $stmt;
19
+			}
17 20
 		}
18 21
 		return $stmt;
19 22
 	}
Please login to merge, or discard this patch.
Maphper/DataSource/Database.php 2 patches
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -7,8 +7,8 @@  discard block
 block discarded – undo
7 7
 
8 8
 	private $primaryKey;
9 9
 	private $fields = '*';
10
-    private $databaseSelect;
11
-    private $databaseCrud;
10
+	private $databaseSelect;
11
+	private $databaseCrud;
12 12
 
13 13
 	public function __construct($db, $table, $primaryKey = 'id', array $options = []) {
14 14
 		$options = new DatabaseOptions($db, $options);
@@ -20,10 +20,10 @@  discard block
 block discarded – undo
20 20
 
21 21
 		$defaultSort = $options->read('defaultSort') !== false ? $options->read('defaultSort')  : implode(', ', $this->primaryKey);
22 22
 
23
-        $databaseModify = new DatabaseModify($adapter, $options->getEditMode(), $table);
23
+		$databaseModify = new DatabaseModify($adapter, $options->getEditMode(), $table);
24 24
 
25
-        $this->databaseSelect = new DatabaseSelect($adapter, $databaseModify, $table, $defaultSort);
26
-        $this->databaseCrud = new DatabaseCrud($adapter, $databaseModify, $this->databaseSelect, $table, $this->primaryKey);
25
+		$this->databaseSelect = new DatabaseSelect($adapter, $databaseModify, $table, $defaultSort);
26
+		$this->databaseCrud = new DatabaseCrud($adapter, $databaseModify, $this->databaseSelect, $table, $this->primaryKey);
27 27
 
28 28
 		$databaseModify->optimizeColumns();
29 29
 	}
@@ -45,7 +45,7 @@  discard block
 block discarded – undo
45 45
 	}
46 46
 
47 47
 	public function findByField(array $fields, $options = []) {
48
-        return $this->databaseSelect->findByField($fields, $options);
48
+		return $this->databaseSelect->findByField($fields, $options);
49 49
 	}
50 50
 
51 51
 	public function deleteByField(array $fields, array $options = []) {
@@ -53,6 +53,6 @@  discard block
 block discarded – undo
53 53
 	}
54 54
 
55 55
 	public function save($data) {
56
-        $this->databaseCrud->save($data, true);
56
+		$this->databaseCrud->save($data, true);
57 57
 	}
58 58
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -16,9 +16,9 @@
 block discarded – undo
16 16
 
17 17
 		$this->primaryKey = is_array($primaryKey) ? $primaryKey : [$primaryKey];
18 18
 
19
-		$this->fields = implode(',', array_map([$adapter, 'quote'], (array) $options->read('fields')));
19
+		$this->fields = implode(',', array_map([$adapter, 'quote'], (array)$options->read('fields')));
20 20
 
21
-		$defaultSort = $options->read('defaultSort') !== false ? $options->read('defaultSort')  : implode(', ', $this->primaryKey);
21
+		$defaultSort = $options->read('defaultSort') !== false ? $options->read('defaultSort') : implode(', ', $this->primaryKey);
22 22
 
23 23
         $databaseModify = new DatabaseModify($adapter, $options->getEditMode(), $table);
24 24
 
Please login to merge, or discard this patch.
Maphper/DataSource/DatabaseModify.php 3 patches
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -2,25 +2,25 @@
 block discarded – undo
2 2
 namespace Maphper\DataSource;
3 3
 
4 4
 class DatabaseModify {
5
-    private $adapter;
6
-    private $alterDb;
7
-    private $table;
5
+	private $adapter;
6
+	private $alterDb;
7
+	private $table;
8 8
 
9
-    public function __construct(DatabaseAdapter $adapter, $alterDb, $table) {
10
-        $this->adapter = $adapter;
11
-        $this->alterDb = $alterDb;
12
-        $this->table = $table;
13
-    }
9
+	public function __construct(DatabaseAdapter $adapter, $alterDb, $table) {
10
+		$this->adapter = $adapter;
11
+		$this->alterDb = $alterDb;
12
+		$this->table = $table;
13
+	}
14 14
 
15
-    public function addIndex($args) {
15
+	public function addIndex($args) {
16 16
 		if (Database::EDIT_INDEX & $this->alterDb) $this->adapter->addIndex($this->table, $args);
17 17
 	}
18 18
 
19
-    public function optimizeColumns() {
20
-        if (Database::EDIT_OPTIMISE & $this->alterDb && rand(0,500) == 1) $this->adapter->optimiseColumns($this->table);
21
-    }
19
+	public function optimizeColumns() {
20
+		if (Database::EDIT_OPTIMISE & $this->alterDb && rand(0,500) == 1) $this->adapter->optimiseColumns($this->table);
21
+	}
22 22
 
23
-    public function getTryInsertAgain($tryagain) {
24
-        return $tryagain && Database::EDIT_STRUCTURE & $this->alterDb;
25
-    }
23
+	public function getTryInsertAgain($tryagain) {
24
+		return $tryagain && Database::EDIT_STRUCTURE & $this->alterDb;
25
+	}
26 26
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@
 block discarded – undo
17 17
 	}
18 18
 
19 19
     public function optimizeColumns() {
20
-        if (Database::EDIT_OPTIMISE & $this->alterDb && rand(0,500) == 1) $this->adapter->optimiseColumns($this->table);
20
+        if (Database::EDIT_OPTIMISE & $this->alterDb && rand(0, 500) == 1) $this->adapter->optimiseColumns($this->table);
21 21
     }
22 22
 
23 23
     public function getTryInsertAgain($tryagain) {
Please login to merge, or discard this patch.
Braces   +6 added lines, -2 removed lines patch added patch discarded remove patch
@@ -13,11 +13,15 @@
 block discarded – undo
13 13
     }
14 14
 
15 15
     public function addIndex($args) {
16
-		if (Database::EDIT_INDEX & $this->alterDb) $this->adapter->addIndex($this->table, $args);
16
+		if (Database::EDIT_INDEX & $this->alterDb) {
17
+			$this->adapter->addIndex($this->table, $args);
18
+		}
17 19
 	}
18 20
 
19 21
     public function optimizeColumns() {
20
-        if (Database::EDIT_OPTIMISE & $this->alterDb && rand(0,500) == 1) $this->adapter->optimiseColumns($this->table);
22
+        if (Database::EDIT_OPTIMISE & $this->alterDb && rand(0,500) == 1) {
23
+        	$this->adapter->optimiseColumns($this->table);
24
+        }
21 25
     }
22 26
 
23 27
     public function getTryInsertAgain($tryagain) {
Please login to merge, or discard this patch.
Maphper/DataSource/SqliteAdapter.php 3 patches
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.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -40,7 +40,7 @@  discard block
 block discarded – undo
40 40
 	}
41 41
 
42 42
 	private function tableExists($name) {
43
-		$result = $this->pdo->query('SELECT name FROM sqlite_master WHERE type="table" and name="'. $name.'"');
43
+		$result = $this->pdo->query('SELECT name FROM sqlite_master WHERE type="table" and name="' . $name . '"');
44 44
 		return count($result->fetchAll()) == 1;
45 45
 	}
46 46
 
@@ -60,14 +60,14 @@  discard block
 block discarded – undo
60 60
 		$this->stmtCache->clearCache();
61 61
 
62 62
         // Create temp table to create a new structure
63
-		$affix = '_'.substr(md5($table), 0, 6);
63
+		$affix = '_' . substr(md5($table), 0, 6);
64 64
         $tempTable = $table . $affix;
65 65
 		$this->generalEditor->createTable($tempTable, $primaryKey, $data);
66 66
         $this->alterColumns($tempTable, $primaryKey, $data);
67 67
 		$this->copyTableData($table, $tempTable);
68 68
 
69
-		$this->pdo->query('DROP TABLE IF EXISTS ' . $table );
70
-		$this->pdo->query('ALTER TABLE ' . $tempTable . ' RENAME TO '. $table );
69
+		$this->pdo->query('DROP TABLE IF EXISTS ' . $table);
70
+		$this->pdo->query('ALTER TABLE ' . $tempTable . ' RENAME TO ' . $table);
71 71
 
72 72
 	}
73 73
 
Please login to merge, or discard this patch.
Braces   +14 added lines, -8 removed lines patch added patch discarded remove patch
@@ -24,7 +24,9 @@  discard block
 block discarded – undo
24 24
 		$args = $query->getArgs();
25 25
 
26 26
         //Handle SQLite when PDO_ERRMODE is set to SILENT
27
-        if ($stmt === false) throw new \Exception('Invalid query');
27
+        if ($stmt === false) {
28
+        	throw new \Exception('Invalid query');
29
+        }
28 30
 
29 31
         $stmt->execute($args);
30 32
         if ($stmt->errorCode() !== '00000' && $stmt->errorInfo()[2] == 'database schema has changed') {
@@ -78,8 +80,7 @@  discard block
 block discarded – undo
78 80
 
79 81
 				$this->pdo->query('INSERT INTO ' . $this->quote($tableTo) . '(' . $columns . ') SELECT ' . $columns . ' FROM ' . $this->quote($tableFrom));
80 82
 			}
81
-		}
82
-		catch (\PDOException $e) {
83
+		} catch (\PDOException $e) {
83 84
 			// No data to copy
84 85
 			echo $e->getMessage();
85 86
 		}
@@ -87,7 +88,9 @@  discard block
 block discarded – undo
87 88
 
88 89
     private function alterColumns($table, array $primaryKey, $data) {
89 90
         foreach ($data as $key => $value) {
90
-			if ($this->generalEditor->isNotSavableType($value, $key, $primaryKey)) continue;
91
+			if ($this->generalEditor->isNotSavableType($value, $key, $primaryKey)) {
92
+				continue;
93
+			}
91 94
 
92 95
 			$type = $this->generalEditor->getType($value);
93 96
 
@@ -96,10 +99,14 @@  discard block
 block discarded – undo
96 99
     }
97 100
 
98 101
     public function addIndex($table, array $fields) {
99
-		if (empty($fields)) return false;
102
+		if (empty($fields)) {
103
+			return false;
104
+		}
100 105
 
101 106
 		//SQLite doesn't support ASC/DESC indexes, remove the keywords
102
-		foreach ($fields as &$field) $field = str_ireplace([' desc', ' asc'], '', $field);
107
+		foreach ($fields as &$field) {
108
+			$field = str_ireplace([' desc', ' asc'], '', $field);
109
+		}
103 110
 		sort($fields);
104 111
 		$fields = array_map('strtolower', $fields);
105 112
 		$fields = array_map('trim', $fields);
@@ -108,8 +115,7 @@  discard block
 block discarded – undo
108 115
 
109 116
 		try {
110 117
 			$this->pdo->query('CREATE INDEX IF NOT EXISTS  ' . $keyName . ' ON ' . $table . ' (' . implode(', ', $fields) . ')');
111
-		}
112
-		catch (\Exception $e) {
118
+		} catch (\Exception $e) {
113 119
 
114 120
 		}
115 121
 	}
Please login to merge, or discard this patch.
Maphper/DataSource/DatabaseSelect.php 3 patches
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -2,31 +2,31 @@  discard block
 block discarded – undo
2 2
 namespace Maphper\DataSource;
3 3
 
4 4
 class DatabaseSelect {
5
-    private $resultCache = [];
6
-    private $idCache = [];
7
-    private $selectBuilder;
8
-    private $whereBuilder;
9
-    private $adapter;
10
-    private $databaseModify;
11
-    private $defaultSort;
12
-    private $table;
13
-
14
-    public function __construct(DatabaseAdapter $adapter, DatabaseModify $databaseModify, $table, $defaultSort) {
15
-        $this->adapter = $adapter;
16
-        $this->databaseModify = $databaseModify;
17
-        $this->selectBuilder = new \Maphper\Lib\SelectBuilder();
18
-        $this->whereBuilder = new \Maphper\Lib\Sql\WhereBuilder();
19
-        $this->defaultSort = $defaultSort;
20
-        $this->table = $table;
21
-    }
22
-
23
-    public function findById($id, $pk) {
5
+	private $resultCache = [];
6
+	private $idCache = [];
7
+	private $selectBuilder;
8
+	private $whereBuilder;
9
+	private $adapter;
10
+	private $databaseModify;
11
+	private $defaultSort;
12
+	private $table;
13
+
14
+	public function __construct(DatabaseAdapter $adapter, DatabaseModify $databaseModify, $table, $defaultSort) {
15
+		$this->adapter = $adapter;
16
+		$this->databaseModify = $databaseModify;
17
+		$this->selectBuilder = new \Maphper\Lib\SelectBuilder();
18
+		$this->whereBuilder = new \Maphper\Lib\Sql\WhereBuilder();
19
+		$this->defaultSort = $defaultSort;
20
+		$this->table = $table;
21
+	}
22
+
23
+	public function findById($id, $pk) {
24 24
 		if (!isset($this->idCache[$id])) {
25 25
 			try {
26 26
 				$result = $this->selectQuery($this->selectBuilder->select($this->table, $pk . ' = :id', [':id' => $id], ['limit' => 1]));
27 27
 			}
28 28
 			catch (\Exception $e) {
29
-                // Don't issue an error if it cannot be found since we return null
29
+				// Don't issue an error if it cannot be found since we return null
30 30
 			}
31 31
 
32 32
 			if (isset($result[0])) 	$this->idCache[$id] = $result[0];
@@ -35,7 +35,7 @@  discard block
 block discarded – undo
35 35
 		return $this->idCache[$id];
36 36
 	}
37 37
 
38
-    public function findByField(array $fields, $options = []) {
38
+	public function findByField(array $fields, $options = []) {
39 39
 		$cacheId = md5(serialize(func_get_args()));
40 40
 		if (!isset($this->resultCache[$cacheId])) {
41 41
 			$query = $this->whereBuilder->createSql($fields);
@@ -55,7 +55,7 @@  discard block
 block discarded – undo
55 55
 		return $this->resultCache[$cacheId];
56 56
 	}
57 57
 
58
-    public function findAggregate($function, $field, $group = null, array $criteria = [], array $options = []) {
58
+	public function findAggregate($function, $field, $group = null, array $criteria = [], array $options = []) {
59 59
 		//Cannot count/sum/max multiple fields, pick the first one. This should only come into play when trying to count() a mapper with multiple primary keys
60 60
 		if (is_array($field)) $field = $field[0];
61 61
 		$query = $this->whereBuilder->createSql($criteria);
@@ -72,34 +72,34 @@  discard block
 block discarded – undo
72 72
 		}
73 73
 	}
74 74
 
75
-    private function determineAggregateResult($result, $group, $field) {
76
-        if ($group != null) {
77
-            $ret = [];
78
-            foreach ($result as $res) $ret[$res->$field] = $res->val;
79
-            return $ret;
80
-        }
81
-        else if (isset($result[0])) return $result[0]->val;
82
-        else return 0;
83
-    }
84
-
85
-    private function selectQuery(\Maphper\Lib\Query $query) {
86
-        return $this->adapter->query($query)->fetchAll(\PDO::FETCH_OBJ);
87
-    }
88
-
89
-    public function clearResultCache() {
90
-        $this->resultCache = [];
91
-    }
92
-
93
-    public function clearIDCache() {
94
-        $this->idCache = [];
95
-    }
96
-
97
-    public function updateCache($data, $pkValue) {
75
+	private function determineAggregateResult($result, $group, $field) {
76
+		if ($group != null) {
77
+			$ret = [];
78
+			foreach ($result as $res) $ret[$res->$field] = $res->val;
79
+			return $ret;
80
+		}
81
+		else if (isset($result[0])) return $result[0]->val;
82
+		else return 0;
83
+	}
84
+
85
+	private function selectQuery(\Maphper\Lib\Query $query) {
86
+		return $this->adapter->query($query)->fetchAll(\PDO::FETCH_OBJ);
87
+	}
88
+
89
+	public function clearResultCache() {
90
+		$this->resultCache = [];
91
+	}
92
+
93
+	public function clearIDCache() {
94
+		$this->idCache = [];
95
+	}
96
+
97
+	public function updateCache($data, $pkValue) {
98 98
 		if (isset($this->cache[$pkValue])) $this->cache[$pkValue] = (object) array_merge((array)$this->cache[$pkValue], (array)$data);
99 99
 		else $this->cache[$pkValue] = $data;
100
-    }
100
+	}
101 101
 
102
-    public function deleteIDFromCache($id) {
103
-        unset($this->idCache[$id]);
104
-    }
102
+	public function deleteIDFromCache($id) {
103
+		unset($this->idCache[$id]);
104
+	}
105 105
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -94,7 +94,7 @@
 block discarded – undo
94 94
     }
95 95
 
96 96
     public function updateCache($data, $pkValue) {
97
-		if (isset($this->cache[$pkValue])) $this->cache[$pkValue] = (object) array_merge((array)$this->cache[$pkValue], (array)$data);
97
+		if (isset($this->cache[$pkValue])) $this->cache[$pkValue] = (object)array_merge((array)$this->cache[$pkValue], (array)$data);
98 98
 		else $this->cache[$pkValue] = $data;
99 99
     }
100 100
 
Please login to merge, or discard this patch.
Braces   +26 added lines, -15 removed lines patch added patch discarded remove patch
@@ -24,13 +24,15 @@  discard block
 block discarded – undo
24 24
 		if (!isset($this->idCache[$id])) {
25 25
 			try {
26 26
 				$result = $this->selectQuery($this->selectBuilder->select($this->table, $pk . ' = :id', [':id' => $id], ['limit' => 1]));
27
-			}
28
-			catch (\Exception $e) {
27
+			} catch (\Exception $e) {
29 28
                 // Don't issue an error if it cannot be found since we return null
30 29
 			}
31 30
 
32
-			if (isset($result[0])) 	$this->idCache[$id] = $result[0];
33
-			else return null;
31
+			if (isset($result[0])) {
32
+				$this->idCache[$id] = $result[0];
33
+			} else {
34
+				return null;
35
+			}
34 36
 		}
35 37
 		return $this->idCache[$id];
36 38
 	}
@@ -40,14 +42,15 @@  discard block
 block discarded – undo
40 42
 		if (!isset($this->resultCache[$cacheId])) {
41 43
 			$query = $this->whereBuilder->createSql($fields);
42 44
 
43
-			if (!isset($options['order'])) $options['order'] = $this->defaultSort;
45
+			if (!isset($options['order'])) {
46
+				$options['order'] = $this->defaultSort;
47
+			}
44 48
 
45 49
 			try {
46 50
 				$this->resultCache[$cacheId] = $this->selectQuery($this->selectBuilder->select($this->table, $query['sql'], $query['args'], $options));
47 51
 				$this->databaseModify->addIndex(array_keys($query['args']));
48 52
 				$this->databaseModify->addIndex(explode(',', $options['order']));
49
-			}
50
-			catch (\Exception $e) {
53
+			} catch (\Exception $e) {
51 54
 				$this->errors[] = $e;
52 55
 				$this->resultCache[$cacheId] = [];
53 56
 			}
@@ -57,7 +60,9 @@  discard block
 block discarded – undo
57 60
 
58 61
     public function findAggregate($function, $field, $group = null, array $criteria = [], array $options = []) {
59 62
 		//Cannot count/sum/max multiple fields, pick the first one. This should only come into play when trying to count() a mapper with multiple primary keys
60
-		if (is_array($field)) $field = $field[0];
63
+		if (is_array($field)) {
64
+			$field = $field[0];
65
+		}
61 66
 		$query = $this->whereBuilder->createSql($criteria);
62 67
 
63 68
 		try {
@@ -66,8 +71,7 @@  discard block
 block discarded – undo
66 71
 			$result = $this->selectQuery($this->selectBuilder->aggregate($this->table, $function, $field, $query['sql'], $query['args'], $group));
67 72
 
68 73
 			return $this->determineAggregateResult($result, $group, $field);
69
-		}
70
-		catch (\Exception $e) {
74
+		} catch (\Exception $e) {
71 75
 			return $group ? [] : 0;
72 76
 		}
73 77
 	}
@@ -75,11 +79,15 @@  discard block
 block discarded – undo
75 79
     private function determineAggregateResult($result, $group, $field) {
76 80
         if ($group != null) {
77 81
             $ret = [];
78
-            foreach ($result as $res) $ret[$res->$field] = $res->val;
82
+            foreach ($result as $res) {
83
+            	$ret[$res->$field] = $res->val;
84
+            }
79 85
             return $ret;
86
+        } else if (isset($result[0])) {
87
+        	return $result[0]->val;
88
+        } else {
89
+        	return 0;
80 90
         }
81
-        else if (isset($result[0])) return $result[0]->val;
82
-        else return 0;
83 91
     }
84 92
 
85 93
     private function selectQuery(\Maphper\Lib\Query $query) {
@@ -95,8 +103,11 @@  discard block
 block discarded – undo
95 103
     }
96 104
 
97 105
     public function updateCache($data, $pkValue) {
98
-		if (isset($this->cache[$pkValue])) $this->cache[$pkValue] = (object) array_merge((array)$this->cache[$pkValue], (array)$data);
99
-		else $this->cache[$pkValue] = $data;
106
+		if (isset($this->cache[$pkValue])) {
107
+			$this->cache[$pkValue] = (object) array_merge((array)$this->cache[$pkValue], (array)$data);
108
+		} else {
109
+			$this->cache[$pkValue] = $data;
110
+		}
100 111
     }
101 112
 
102 113
     public function deleteIDFromCache($id) {
Please login to merge, or discard this patch.