[wellwell-devel] [wellwell] Add [cart-clear] tag.

Stefan Hornburg wellwell-devel at rt.icdevgroup.org
Wed Sep 15 10:44:57 UTC 2010


commit 90f38c419062eb308a1572549480b468f87872f9
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date:   Wed Sep 15 12:38:00 2010 +0200

    Add [cart-clear] tag.

 lib/WellWell/Cart.pm |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/lib/WellWell/Cart.pm b/lib/WellWell/Cart.pm
index a76346e..a8f106e 100644
--- a/lib/WellWell/Cart.pm
+++ b/lib/WellWell/Cart.pm
@@ -31,6 +31,9 @@ Vend::Config::parse_tag('UserTag', 'cart_add Order sku quantity');
 Vend::Config::parse_tag('UserTag', 'cart_add AddAttr');
 Vend::Config::parse_tag('UserTag', 'cart_add MapRoutine WellWell::Cart::cart_add');
 
+Vend::Config::parse_tag('UserTag', 'cart_clear AddAttr');
+Vend::Config::parse_tag('UserTag', 'cart_clear MapRoutine WellWell::Cart::cart_clear');
+
 Vend::Config::parse_tag('UserTag', 'cart_item Order sku quantity');
 Vend::Config::parse_tag('UserTag', 'cart_item AddAttr');
 Vend::Config::parse_tag('UserTag', 'cart_item MapRoutine WellWell::Cart::cart_item');
@@ -127,6 +130,37 @@ sub cart_add {
     return $itemref;
 }
 
+# [cart-clear] - clear cart
+
+sub cart_clear {
+	my ($opt) = @_;
+	my (@new_cart, $sku);
+
+	for my $itemref (@$Vend::Items) {
+		$sku = $itemref->{code};
+		WellWell::Core::hooks('run', 'cart', 'delete', 'main', $itemref);
+	
+		if ($itemref->{error}) {
+			# one of the hooks denied the item
+			if ($itemref->{log_error}) {
+				::logError('Removing item %s was denied: %s', $sku, $itemref->{error});
+			}
+			Vend::Tags->error({name => $sku, set => $itemref->{error}, overwrite => 1});
+
+			# prevent error from leaking into subsequent cart actions
+			delete $itemref->{error};
+			
+			push (@new_cart, $itemref);
+		}
+	}
+
+    if (@$Vend::Items = @new_cart) {
+		return 0;
+	}
+
+	return 1;
+}
+
 sub cart_refresh {
 	my ($cart, $new_cart, $quantity, $itemref, $sku, $modifiers);
 



More information about the wellwell-devel mailing list