示例#1
0
 /**
  * 
  * 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];
 }