[wellwell-devel] [SCM] Interchange wellwell catalog branch, master, updated. c741fbd5e80bbc38b0033b8cf5dda0496f429dcf

Stefan Hornburg racke at rt.icdevgroup.org
Tue Jan 26 20:25:49 UTC 2010


       via  c741fbd5e80bbc38b0033b8cf5dda0496f429dcf (commit)
      from  f27dc363903803634d459d0a0253e0487a247495 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit c741fbd5e80bbc38b0033b8cf5dda0496f429dcf
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date:   Tue Jan 26 15:25:10 2010 -0500

    hooks can now deny cart modifications

-----------------------------------------------------------------------

Summary of changes and diff:
 lib/WellWell/Cart.pm |   33 ++++++++++++++++++++++++++++++---
 1 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/lib/WellWell/Cart.pm b/lib/WellWell/Cart.pm
index ab5d262..315dfb8 100644
--- a/lib/WellWell/Cart.pm
+++ b/lib/WellWell/Cart.pm
@@ -79,6 +79,15 @@ sub cart_add {
 	
     WellWell::Core::hooks('run', 'cart_item_add', $itemref);
 
+	if ($itemref->{error}) {
+		# one of the hooks denied the item
+		if ($itemref->{log_error}) {
+			::logError('Adding item %s was denied: %s', $sku, $itemref->{error});
+		}
+		Vend::Tags->error({name => $sku, set => $itemref->{error}, overwrite => 1});
+		return;
+	}
+	
 	# verify that number of items doesn't go out of bounds
 	if ($Vend::Cfg->{OrderLineLimit} && @$Vend::Items >= $Vend::Cfg->{OrderLineLimit}) {
 		::logError('Limit %s for number of items in the cart exceeded.',
@@ -112,9 +121,19 @@ sub cart_refresh {
 		if (defined $quantity) {
 			if ($quantity =~ /^(\d+)$/ && $quantity != $itemref->{quantity}) {
 				if ($quantity == 0) {
-					# deleting the item by omission
-				    WellWell::Core::hooks('run', 'cart_item_delete', $itemref);
-					next;
+					WellWell::Core::hooks('run', 'cart_item_delete', $itemref);
+
+					if ($itemref->{error}) {
+						if ($itemref->{log_error}) {
+							::logError('Removal of item %s was denied: %s', $itemref->{code}, $itemref->{error});
+						}
+						Vend::Tags->error({name => $itemref->{code}, set => $itemref->{error}, overwrite => 1});
+						$quantity = $itemref->{quantity};
+					}
+					else {
+						# deleting the item by omission
+						next;
+					}
 				}
 				$modref->{quantity} = $quantity;
 			}
@@ -131,6 +150,14 @@ sub cart_refresh {
 		if (keys %$modref) {
 		    WellWell::Core::hooks('run', 'cart_item_modify', $itemref, $modref);
 
+			if ($itemref->{error}) {
+				if ($itemref->{log_error}) {
+					::logError('Modification of item %s was denied: %s', $itemref->{code}, $itemref->{error});
+				}
+				Vend::Tags->error({name => $itemref->{code}, set => $itemref->{error}, overwrite => 1});
+				%$modref = ();
+			}
+			
 			for (keys %$modref) {
 				$itemref->{$_} = $modref->{$_};
 			}


hooks/post-receive
-- 
Interchange wellwell catalog



More information about the wellwell-devel mailing list