From 288be2c599f753431bddbb749d37642b16e7ca1d Mon Sep 17 00:00:00 2001 From: Roy Johnson Date: Fri, 16 Jun 2006 14:37:28 +0000 Subject: [PATCH] fix: 6.99rc0 - shippingOptions not serialized --- docs/changelog/6.x.x.txt | 2 ++ docs/upgrades/upgrade_6.99.3-6.99.4.pl | 8 ++++++++ lib/WebGUI/Commerce/Transaction.pm | 13 +++++++------ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/docs/changelog/6.x.x.txt b/docs/changelog/6.x.x.txt index df1a872eb..718820ae0 100644 --- a/docs/changelog/6.x.x.txt +++ b/docs/changelog/6.x.x.txt @@ -61,8 +61,10 @@ - Added new template vars to DataForm - fix: op=editSubscription causes fatal - fix: Commerce and groups + - fix: 6.99rc0 - shippingOptions not serialized - fix: Orphaned asset data (modified test to fix bug in test) + 6.99.3 - Someone removed the status from the submission templates. That has been fixed. diff --git a/docs/upgrades/upgrade_6.99.3-6.99.4.pl b/docs/upgrades/upgrade_6.99.3-6.99.4.pl index 76c875ee1..339319147 100644 --- a/docs/upgrades/upgrade_6.99.3-6.99.4.pl +++ b/docs/upgrades/upgrade_6.99.3-6.99.4.pl @@ -26,9 +26,16 @@ fixSurvey($session); fixEditWorkflow($session); fixOrphans(); updateHttpProxy(); +fixShippingOptions(); finish($session); # this line required +#------------------------------------------------- +sub fixShippingOptions { + print "\tRemoving unserialized shipping options data from the transaction table.\n"; + $session->db->write("update transaction set shippingOptions = null where shippingOptions like '%HASH%'"); +} + #------------------------------------------------- sub updateHttpProxy { print "\tAllowing HTTP Proxy to use ampersands in addition to semicolons in URLs.\n" unless ($quiet); @@ -64,6 +71,7 @@ sub fixSurvey{ } } +#-------------------------------------------------- sub fixEditWorkflow { my @goodPlugins; my $session = shift; diff --git a/lib/WebGUI/Commerce/Transaction.pm b/lib/WebGUI/Commerce/Transaction.pm index ecd98ffd0..337fdd629 100644 --- a/lib/WebGUI/Commerce/Transaction.pm +++ b/lib/WebGUI/Commerce/Transaction.pm @@ -18,6 +18,7 @@ package WebGUI::Commerce::Transaction; use strict; use WebGUI::SQL; use WebGUI::Commerce::Payment; +use JSON; #------------------------------------------------------------------- @@ -553,8 +554,8 @@ Returns the shipping options for this transaction. If options is supplied the sh be set to it. =head3 options -If supplied the shipping options of the transaction will be set to this value. This should probably -be some serialized datastructure. +If supplied the shipping options of the transaction will be set to this value. The value passed will +be serialized/un-serialized for you. =cut @@ -563,12 +564,12 @@ sub shippingOptions { $self = shift; $shippingOptions = shift; - if ($shippingOptions) { - $self->{_properties}{shippingOptions} = $shippingOptions; - $self->session->db->write("update transaction set shippingOptions=".$self->session->db->quote($shippingOptions)." where transactionId=".$self->session->db->quote($self->{_transactionId})); + if (scalar (keys %{$shippingOptions})) { + $self->{_properties}{shippingOptions} = objToJson($shippingOptions); + $self->session->db->write("update transaction set shippingOptions=? where transactionId=?",[$self->{_properties}{shippingOptions},$self->{_transactionId}]); } - return $self->{_properties}{shippingOptions}; + return jsonToObj($self->{_properties}{shippingOptions}); } #-------------------------------------------------------------------