[wellwell-devel] [wellwell/zoom] Add [cart-clear] tag.
Stefan Hornburg
wellwell-devel at rt.icdevgroup.org
Wed Sep 15 10:47:20 UTC 2010
commit f199e5abc9f8d3fbe69467f064c3f29526f4557d
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