Fix more bugs in datamapper.
authorCameron Ball <cameron@getapproved.com.au>
Thu, 11 Dec 2014 07:28:07 +0000 (15:28 +0800)
committerCameron Ball <cameron@getapproved.com.au>
Thu, 11 Dec 2014 07:28:07 +0000 (15:28 +0800)
DataAccess/DataMapper/DataMapper.php
DataAccess/DataMapper/Helpers/AbstractPopulationHelper.php

index 1200397..384627d 100644 (file)
@@ -57,7 +57,7 @@ class DataMapper implements IDataMapper
         $queries = AbstractPopulationHelper::generateUpdateSaveQuery($this->_maps, $entity, $entity->getId(), $this->_db);\r
         $mergeMap = array();\r
         $flattened = array();\r
-        \r
+\r
         foreach($queries as $index => $query)\r
         {\r
             $this_table = $query['table'];\r
@@ -110,12 +110,12 @@ class DataMapper implements IDataMapper
                     }\r
                 }\r
             }\r
-\r
+            \r
             if(!array_key_exists($index, $mergeMap)) {\r
                 $prepared = isset($query['prepared']) ? $query['prepared'] : null;\r
                 $id = isset($query['id']) ? $query['id'] : null;\r
 \r
-                $flattened[] = array(\r
+                $flattened[$index] = array(\r
                     'columns' => $this_columns,\r
                     'table' => $this_table,\r
                     'prepared' => $prepared,\r
@@ -126,7 +126,7 @@ class DataMapper implements IDataMapper
         \r
         $queries = array();\r
                 \r
-        foreach($flattened as $info)\r
+        foreach($flattened as $index => $info)\r
         {\r
             if(isset($info['id']))\r
             {\r
@@ -140,7 +140,7 @@ class DataMapper implements IDataMapper
                 implode(', ', $info['columns']));\r
             }\r
             \r
-            $queries[] = $query;\r
+            $queries[$index] = $query;\r
         }\r
 \r
        // if($queries['TYPE'] == AbstractPopulationHelper::QUERY_TYPE_CREATE)\r
index eab5154..c7bc679 100644 (file)
@@ -112,7 +112,7 @@ class AbstractPopulationHelper
                                         );\r
                                     } else {\r
                                         //TODO: logic to detemine what the value is? i.e., string, int etc?\r
-                                        $queryColumnNamesAndValues[$columnName] = sprintf('"%s"', $columnValue);\r
+                                        $queryColumnNamesAndValues[$columnName] = $db->quote($columnValue);\r
                                     }\r
                                 }\r
 \r
@@ -198,7 +198,7 @@ class AbstractPopulationHelper
                             {\r
                                 $property = ($property) ? '1' : '0';\r
                             }\r
-                            $queryColumnNamesAndValues[$mapsHelper->getColumnName()] = sprintf('%u', $property);\r
+                            $queryColumnNamesAndValues[$mapsHelper->getColumnName()] = $property;\r
                         }\r
                         break;\r
                     case 'DataAccess\DataMapper\Helpers\VarcharMapsHelper':\r
@@ -208,7 +208,7 @@ class AbstractPopulationHelper
                                 $mapsHelper->getColumnName(),\r
                                 $property);                        \r
                         } else {\r
-                            $queryColumnNamesAndValues[$mapsHelper->getColumnName()] = sprintf('"%s"', $property);\r
+                            $queryColumnNamesAndValues[$mapsHelper->getColumnName()] = $db->quote($property);\r
                         }\r
 \r
                         break;\r
@@ -371,7 +371,7 @@ class AbstractPopulationHelper
         \r
         foreach($columns as $columnName => $columnValue)\r
         {\r
-            $query .= sprintf('%s="%s" AND ', $columnName, $columnValue);\r
+            $query .= sprintf('%s="%s" AND ', $columnName, str_replace('"', '\"', $columnValue));\r
         }\r
         \r
         $query = substr($query, 0, -4);\r