lib/Ajde/Shop/Cart/Merge.php
<?php
class Ajde_Shop_Cart_Merge extends Ajde_Object_Singleton
{
public static function getInstance()
{
static $instance;
return $instance === null ? $instance = new self() : $instance;
}
public static function __bootstrap()
{
self::mergeClientToUser();
return true;
}
public static function mergeClientToUser()
{
if ($user = Ajde_User::getLoggedIn()) {
// Do we have a saved client cart?
$clientCart = new CartModel();
if ($clientCart->loadByClient()) {
// Do we have a saved cart for logged in user?
$userCart = new CartModel();
if ($userCart->loadByUser($user) === false) {
$userCart->user = $user->getPK();
$userCart->insert();
}
if ($userCart->hasItems()) {
// Set alert message
Ajde_Session_Flash::alert(trans('Your items are still in the shopping cart'));
}
// Merge items
foreach ($clientCart->getItems() as $item) {
/* @var $item Ajde_Shop_Cart_Item */
$userCart->addItem($item->getEntity(), null, $item->getQty());
}
// And delete client
$clientCart->delete();
}
}
}
public static function mergeUserToClient()
{
if ($user = Ajde_User::getLoggedIn()) {
// Do we have a saved cart for logged in user?
$userCart = new CartModel();
if ($userCart->loadByUser($user)) {
// Do we have a saved cart for client?
$clientCart = new CartModel();
if ($clientCart->loadByClient() === false) {
$clientCart->client = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']);
$clientCart->insert();
}
foreach ($userCart->getItems() as $item) {
/* @var $item Ajde_Shop_Cart_Item */
$clientCart->addItem($item->getEntity(), null, $item->getQty());
}
$userCart->delete();
}
}
}
}