[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