/** * @singleton method used to instantiate class object * @access public * @return class instance */ public static function instance(EE_Line_Item $grand_total = NULL) { // check if class object is instantiated if (!self::$_instance instanceof EE_Cart) { //try getting the cart out of the session $saved_cart = empty($grand_total) ? EE_Registry::instance()->SSN->get_session_data('cart') : NULL; self::$_instance = $saved_cart instanceof EE_Cart ? $saved_cart : new self($grand_total); unset($saved_cart); } // once everything is all said and done, save the cart to the EE_Session add_action('shutdown', array(self::$_instance, 'save_cart'), 90); return self::$_instance; }
/** * Resets the cart completely (whereas empty_cart * @param EE_Line_Item $grand_total * @return EE_Cart */ public static function reset(EE_Line_Item $grand_total = NULL) { remove_action('shutdown', array(self::$_instance, 'save_cart'), 90); EE_Registry::instance()->SSN->reset_cart(); self::$_instance = NULL; return self::instance($grand_total); }
/** * Resets the cart completely (whereas empty_cart * @param EE_Line_Item $grand_total * @param EE_Session $session * @return EE_Cart */ public static function reset(EE_Line_Item $grand_total = null, EE_Session $session = null) { remove_action('shutdown', array(self::$_instance, 'save_cart'), 90); if ($session instanceof EE_Session) { $session->reset_cart(); } self::$_instance = null; return self::instance($grand_total, $session); }