/** * * Retrieves or creates DJCatalog2HelperCart object * @param bool $from_storage * @param array $cart_items * @return DJCatalog2HelperCart */ public static function getInstance($from_storage = true, $cart_items = array()) { $app = JFactory::getApplication(); if ($from_storage) { $stored_items = $app->getUserState('com_djcatalog2.cart.items', array()); if (empty($cart_items) && !empty($stored_items)) { $cart_items = $stored_items; } } $hash = md5(serialize($cart_items)); if (isset(self::$baskets[$hash])) { return self::$baskets[$hash]; } $basket = new Djcatalog2HelperCart(); if (!empty($cart_items)) { JModelLegacy::addIncludePath(JPATH_BASE . DS . 'components' . DS . 'com_djcatalog2' . DS . 'models', 'DJCatalog2Model'); $model = JModelLegacy::getInstance('Items', 'Djcatalog2Model', array('ignore_request' => true)); $state = $model->getState(); $model->setState('list.start', 0); $model->setState('list.limit', 0); $user = Djcatalog2Helper::getUserProfile(); if (isset($user->user_group_id)) { $model->setState('filter.customergroup', $user->user_group_id); } $model->setState('filter.catalogue', false); $model->setState('list.ordering', 'i.name'); $model->setState('list.direction', 'asc'); $model->setState('filter.parent', '*'); $model->setState('filter.state', '3'); $item_ids = array_keys($cart_items); $model->setState('filter.item_ids', $item_ids); $basket->items = $model->getItems(); $basket->quantities = $cart_items; } $basket->recalculate(); self::$baskets[$hash] = $basket; return self::$baskets[$hash]; }