diff options
author | Thomas Steur <thomas.steur@googlemail.com> | 2014-10-04 13:28:23 +0400 |
---|---|---|
committer | Thomas Steur <thomas.steur@googlemail.com> | 2014-10-04 13:28:23 +0400 |
commit | f05a25d60acb670d4292c67a10d0b408643ed3df (patch) | |
tree | 19438be0d2c12a71e80c8fe752e77be1f792802d /core/Tracker/GoalManager.php | |
parent | 1a7dbc5ff6ab987338fa644f1c4c7a07602c10f6 (diff) |
moved some queries within core to model files
This is only a start. Especially the Tracker model contains quite a bunch of different models. Ideally, one day, the tracker is refactored and all the goal tracker stuff including the queries are in the goal plugins, all the ecommerce stuff is in an ecommerce plugin etc. Haven't moved some of the LogAggregator queries.
Diffstat (limited to 'core/Tracker/GoalManager.php')
-rw-r--r-- | core/Tracker/GoalManager.php | 97 |
1 files changed, 14 insertions, 83 deletions
diff --git a/core/Tracker/GoalManager.php b/core/Tracker/GoalManager.php index 7823b88cc2..69639fd1c6 100644 --- a/core/Tracker/GoalManager.php +++ b/core/Tracker/GoalManager.php @@ -330,12 +330,7 @@ class GoalManager $conversion['items'] = $itemsCount; if ($this->isThereExistingCartInVisit) { - $updateWhere = array( - 'idvisit' => $visitInformation['idvisit'], - 'idgoal' => self::IDGOAL_CART, - 'buster' => 0, - ); - $recorded = $this->updateExistingConversion($conversion, $updateWhere); + $recorded = $this->getModel()->updateConversion($visitInformation['idvisit'], self::IDGOAL_CART, $conversion); } else { $recorded = $this->insertNewConversion($conversion, $visitInformation); } @@ -398,20 +393,8 @@ class GoalManager $itemInCartBySku[$item[0]] = $item; } - // Select all items currently in the Cart if any - $sql = "SELECT idaction_sku, idaction_name, idaction_category, idaction_category2, idaction_category3, idaction_category4, idaction_category5, price, quantity, deleted, idorder as idorder_original_value - FROM " . Common::prefixTable('log_conversion_item') . " - WHERE idvisit = ? AND (idorder = ? OR idorder = ?)"; - - $bind = array($goal['idvisit'], - isset($goal['idorder']) ? $goal['idorder'] : self::ITEM_IDORDER_ABANDONED_CART, - self::ITEM_IDORDER_ABANDONED_CART - ); - - $itemsInDb = Tracker::getDatabase()->fetchAll($sql, $bind); + $itemsInDb = $this->getModel()->getAllItemsCurrentlyInTheCart($goal, self::ITEM_IDORDER_ABANDONED_CART); - Common::printDebug("Items found in current cart, for conversion_item (visit,idorder)=" . var_export($bind, true)); - Common::printDebug($itemsInDb); // Look at which items need to be deleted, which need to be added or updated, based on the SKU $skuFoundInDb = $itemsToUpdate = array(); @@ -601,20 +584,16 @@ class GoalManager foreach ($itemsToUpdate as $item) { $newRow = $this->getItemRowEnriched($goal, $item); Common::printDebug($newRow); - $updateParts = $sqlBind = array(); - foreach ($newRow as $name => $value) { - $updateParts[] = $name . " = ?"; - $sqlBind[] = $value; - } - $sql = 'UPDATE ' . Common::prefixTable('log_conversion_item') . " SET " . implode($updateParts, ', ') . " - WHERE idvisit = ? AND idorder = ? AND idaction_sku = ?"; - $sqlBind[] = $newRow['idvisit']; - $sqlBind[] = $item['idorder_original_value']; - $sqlBind[] = $newRow['idaction_sku']; - Tracker::getDatabase()->query($sql, $sqlBind); + + $this->getModel()->updateEcommerceItem($item['idorder_original_value'], $newRow); } } + private function getModel() + { + return new Model(); + } + /** * Inserts in the cart in the DB the new items * that were not previously in the cart @@ -633,26 +612,13 @@ class GoalManager Common::printDebug("Ecommerce items that are added to the cart/order"); Common::printDebug($itemsToInsert); - $sql = "INSERT INTO " . Common::prefixTable('log_conversion_item') . " - (idaction_sku, idaction_name, idaction_category, idaction_category2, idaction_category3, idaction_category4, idaction_category5, price, quantity, deleted, - idorder, idsite, idvisitor, server_time, idvisit) - VALUES "; - $i = 0; - $bind = array(); + $items = array(); foreach ($itemsToInsert as $item) { - if ($i > 0) { - $sql .= ','; - } - $newRow = array_values($this->getItemRowEnriched($goal, $item)); - $sql .= " ( " . Common::getSqlStringFieldsArray($newRow) . " ) "; - $i++; - $bind = array_merge($bind, $newRow); + $items[] = $this->getItemRowEnriched($goal, $item); } - Tracker::getDatabase()->query($sql, $bind); - Common::printDebug($sql); - Common::printDebug($bind); + $this->getModel()->createEcommerceItems($items); } protected function getItemRowEnriched($goal, $item) @@ -757,15 +723,9 @@ class GoalManager $newGoalDebug['idvisitor'] = bin2hex($newGoalDebug['idvisitor']); Common::printDebug($newGoalDebug); - $fields = implode(", ", array_keys($conversion)); - $bindFields = Common::getSqlStringFieldsArray($conversion); + $wasInserted = $this->getModel()->createConversion($conversion); - $sql = 'INSERT IGNORE INTO ' . Common::prefixTable('log_conversion') . " ($fields) VALUES ($bindFields) "; - $bind = array_values($conversion); - $result = Tracker::getDatabase()->query($sql, $bind); - - // If a record was inserted, we return true - return Tracker::getDatabase()->rowCount($result) > 0; + return $wasInserted; } /** @@ -788,35 +748,6 @@ class GoalManager ); } - protected function updateExistingConversion($newGoal, $updateWhere) - { - $updateParts = $sqlBind = $updateWhereParts = array(); - - foreach ($newGoal as $name => $value) { - $updateParts[] = $name . " = ?"; - $sqlBind[] = $value; - } - - foreach ($updateWhere as $name => $value) { - $updateWhereParts[] = $name . " = ?"; - $sqlBind[] = $value; - } - - $table = Common::prefixTable('log_conversion'); - $parts = implode($updateParts, ', '); - $sql = 'UPDATE ' . $table . " SET " . $parts . " WHERE " . implode($updateWhereParts, ' AND '); - - try { - Tracker::getDatabase()->query($sql, $sqlBind); - } catch(Exception $e){ - Common::printDebug("There was an error while updating the Conversion: " . $e->getMessage()); - - return false; - } - - return true; - } - /** * @param $goal * @param $pattern_type |