Skip to content

Commit 28d0d65

Browse files
author
Marshall House
committed
Solving memory leak when saving a customer
See issue #70. Customers with a long history of orders can not place orders if their customer account "save" triggers.
1 parent 7c916e4 commit 28d0d65

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

src/app/code/community/Zendesk/Zendesk/Model/Observer.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -157,20 +157,22 @@ public function changeIdentity(Varien_Event_Observer $event)
157157

158158
if (is_object($order_totals)) {
159159
$order_totals
160-
->addFieldToSelect('*')
161-
->addFieldToFilter('customer_id', $customer->getId())
162-
->addFieldToFilter('status', Mage_Sales_Model_Order::STATE_COMPLETE)
163-
->addAttributeToSelect('grand_total')
164-
->getColumnValues('grand_total');
160+
->addFieldToFilter('customer_id', $customer->getId())
161+
->addFieldToFilter('status', Mage_Sales_Model_Order::STATE_COMPLETE)
162+
;
165163

166-
$sum = 0;
167-
foreach ($order_totals as $total) {
168-
if (isset($total['grand_total']))
169-
$sum += (float)$total['grand_total'];
170-
}
164+
$order_totals->getSelect()
165+
->reset(Zend_Db_Select::COLUMNS)
166+
->columns(new Zend_Db_Expr("SUM(grand_total) as total"))
167+
->columns(new Zend_Db_Expr("AVG(grand_total) as avg_total"))
168+
->group('customer_id')
169+
;
170+
171+
$sum = (float) $order_totals->getFirstItem()->getTotal();
172+
$avg = (float) $order_totals->getFirstItem()->getAvgTotal();
171173

172174
$lifetime_sale = Mage::helper('core')->currency($sum, true, false);
173-
$average_sale = Mage::helper('core')->currency($sum / (count($order_totals) ?: 1), true, false);
175+
$average_sale = Mage::helper('core')->currency($avg, true, false);
174176
}
175177

176178
$info['user'] = array(

0 commit comments

Comments
 (0)