Ситуация таковая: есть один маленький ынтырпрайзный модуль, который использует объект сессии как временное хранилище данных, которые необходимы для его работы.
Пример кода
private function preparedData(){
$result = array();
$session = Mage::getSingleton('checkout/session');
$order = Mage::getModel('sales/order')->loadByIncrementId($session->getLastRealOrderId());
foreach ($order->getAllVisibleItems() as $itemId => $item)
{
$result['orders_sales'][] = array(
'name' => $item->getName(),
'price' => (string)number_format($item->getPrice(), 2, '.', ''),
'count' => (int)$item->getQtyOrdered()
);
}
//var_dump($session); die;
$result['order_id_unique'] = $order->getRealOrderId().'_'.uniqid();
$result['store_passwd'] = $this->getConfigData('shoppassword');
$result['store_id'] = $this->getConfigData('shopident');
$result['amount'] = (string)number_format($order->getGrandTotal(), 2, '.', '');
$result['merchantType'] = (string)$session->system;
$result['partsCount'] = (string)$session->parts;
$result['currency'] = $order->getOrderCurrencyCode();
$result['responseUrl'] = Mage::getUrl('payparts/payment/return/', array('transaction_id' => $order->getRealOrderId()));
$result['redirectUrl'] = Mage::getUrl('payparts/payment/fail/');
$result['products_string'] = "";
if($order->getTaxAmount()){
$result['orders_sales'][] = array(
'name' => 'Tax',
'price' => (string)number_format($this->getTax($order), 2, '.', ''),
'count' => 1
);
}
for ($i=0; $i<count($result['orders_sales']);$i++)
{
$result['products_string'] .= $result['orders_sales'][$i]['name']
.(string)$result['orders_sales'][$i]['count']
.str_replace('.', '', $result['orders_sales'][$i]['price']);
}
$requestData = json_encode(
array(
"storeId" => $result['store_id'],
"orderId" => $result['order_id_unique'],
"amount" => $result['amount'],
"currency" => $result['currency'],
"partsCount" => $result['partsCount'],
"merchantType" => $result['merchantType'],
"products" => $result['orders_sales'],
"responseUrl" => $result['responseUrl'],
"redirectUrl" => $result['redirectUrl'],
"signature" => $this->getSignature($result)
)
);
//var_dump($requestData); die;
return $requestData;
}
Но вот незадача, другой модуль также использует как я понимаю этот же объект сессии для своих целей и затирает данные.
В результате первый модуль делает «Опаньки!»
Модуль не мой.
Вопрос: как и где в Мадженто сохранять промежуточные данные, чтобы избежать такой проблемы?
Ткните в документацию пожалуйста :-)