From 1f55efc92d34e601e970c8cbea0298870668c32e Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 13 Jan 2006 23:33:48 +0000 Subject: [PATCH] finished session changes to Commerce --- lib/WebGUI/Commerce/Item/Subscription.pm | 5 ++- lib/WebGUI/Commerce/Payment/ITransact.pm | 2 +- lib/WebGUI/Commerce/Shipping/ByPrice.pm | 3 +- lib/WebGUI/Commerce/Shipping/ByWeight.pm | 3 +- .../Commerce/Shipping/PerTransaction.pm | 3 +- lib/WebGUI/Commerce/Transaction.pm | 41 +++++++++++++------ lib/WebGUI/Operation/Commerce.pm | 10 ++--- lib/WebGUI/Operation/TransactionLog.pm | 6 +-- 8 files changed, 46 insertions(+), 27 deletions(-) diff --git a/lib/WebGUI/Commerce/Item/Subscription.pm b/lib/WebGUI/Commerce/Item/Subscription.pm index 230f1b9b9..66d333a25 100644 --- a/lib/WebGUI/Commerce/Item/Subscription.pm +++ b/lib/WebGUI/Commerce/Item/Subscription.pm @@ -38,12 +38,13 @@ sub name { #------------------------------------------------------------------- sub new { - my ($class, $subscriptionId, $type, $subscription); + my ($class, $session, $subscriptionId, $type, $subscription); $class = shift; + $session = shift; $subscriptionId = shift; $type = shift; - $subscription = WebGUI::Subscription->new($self->session,$subscriptionId); + $subscription = WebGUI::Subscription->new($session,$subscriptionId); bless {_subscription => $subscription, _subscriptionId => $subscriptionId}, $class; } diff --git a/lib/WebGUI/Commerce/Payment/ITransact.pm b/lib/WebGUI/Commerce/Payment/ITransact.pm index f4d23c9ad..a5c564148 100644 --- a/lib/WebGUI/Commerce/Payment/ITransact.pm +++ b/lib/WebGUI/Commerce/Payment/ITransact.pm @@ -711,7 +711,7 @@ my %transactionData = %{$self->{_transactionParams}}; \n"; - $items = WebGUI::Commerce::Transaction->new($transactionData{ORGID})->getItems; + $items = WebGUI::Commerce::Transaction->new($self->session, $transactionData{ORGID})->getItems; foreach (@{$items}) { $xml .= " diff --git a/lib/WebGUI/Commerce/Shipping/ByPrice.pm b/lib/WebGUI/Commerce/Shipping/ByPrice.pm index a9bc15693..cff01f915 100644 --- a/lib/WebGUI/Commerce/Shipping/ByPrice.pm +++ b/lib/WebGUI/Commerce/Shipping/ByPrice.pm @@ -46,7 +46,8 @@ sub init { #------------------------------------------------------------------- sub name { - my $i18n = WebGUI::International->new($self->session, 'CommerceShippingByPrice'); + my ($session) = @_; + my $i18n = WebGUI::International->new($session, 'CommerceShippingByPrice'); return $i18n->get('title'); } diff --git a/lib/WebGUI/Commerce/Shipping/ByWeight.pm b/lib/WebGUI/Commerce/Shipping/ByWeight.pm index cdd5b2d62..668a01572 100644 --- a/lib/WebGUI/Commerce/Shipping/ByWeight.pm +++ b/lib/WebGUI/Commerce/Shipping/ByWeight.pm @@ -46,7 +46,8 @@ sub init { #------------------------------------------------------------------- sub name { - my $i18n = WebGUI::International->new($self->session, 'CommerceShippingByWeight'); + my ($session) = @_; + my $i18n = WebGUI::International->new($session, 'CommerceShippingByWeight'); return $i18n->get('title'); } diff --git a/lib/WebGUI/Commerce/Shipping/PerTransaction.pm b/lib/WebGUI/Commerce/Shipping/PerTransaction.pm index b90bca052..e5f31ada5 100644 --- a/lib/WebGUI/Commerce/Shipping/PerTransaction.pm +++ b/lib/WebGUI/Commerce/Shipping/PerTransaction.pm @@ -42,7 +42,8 @@ sub init { #------------------------------------------------------------------- sub name { - my $i18n = WebGUI::International->new($self->session, 'CommerceShippingPerTransaction'); + my ($session) = @_; + my $i18n = WebGUI::International->new($session, 'CommerceShippingPerTransaction'); return $i18n->get('title'); } diff --git a/lib/WebGUI/Commerce/Transaction.pm b/lib/WebGUI/Commerce/Transaction.pm index f4b8ea6ca..5fb8d0779 100644 --- a/lib/WebGUI/Commerce/Transaction.pm +++ b/lib/WebGUI/Commerce/Transaction.pm @@ -264,7 +264,7 @@ sub getByGatewayId { ($transactionId) = $self->session->db->quickArray("select transactionId from transaction where gatewayId=".$self->session->db->quote($gatewayId). " and gateway=".$self->session->db->quote($paymentGateway)); - return WebGUI::Commerce::Transaction->new($transactionId) if $transactionId; + return WebGUI::Commerce::Transaction->new($self->session, $transactionId) if $transactionId; return undef; } @@ -331,7 +331,7 @@ sub getTransactions { @transactionIds = $self->session->db->buildArray($sql); foreach (@transactionIds) { - push(@transactions, WebGUI::Commerce::Transaction->new($_)); + push(@transactions, WebGUI::Commerce::Transaction->new($self->session, $_)); } return @transactions; @@ -414,25 +414,26 @@ sub new { my ($class, $transactionId, $gatewayId, $userId, $properties, $sth, $row, @items); $class = shift; + my $session = shift; $transactionId = shift; $gatewayId = shift; - $userId = shift || $self->session->user->profileField("userId"); + $userId = shift || $session->user->profileField("userId"); if ($transactionId eq 'new') { - $transactionId = $self->session->id->generate; + $transactionId = $session->id->generate; - $self->session->db->write("insert into transaction ". + $session->db->write("insert into transaction ". "(transactionId, userId, amount, gatewayId, initDate, completionDate, status) values ". - "(".$self->session->db->quote($transactionId).",".$self->session->db->quote($userId).",0,".$self->session->db->quote($gatewayId).",".$self->session->db->quote(time).",NULL,'Pending')"); + "(".$session->db->quote($transactionId).",".$session->db->quote($userId).",0,".$session->db->quote($gatewayId).",".$session->db->quote(time).",NULL,'Pending')"); } - $properties = $self->session->db->quickHashRef("select * from transaction where transactionId=".$self->session->db->quote($transactionId)); - $sth = $self->session->db->read("select * from transactionItem where transactionId=".$self->session->db->quote($transactionId)); + $properties = $session->db->quickHashRef("select * from transaction where transactionId=".$session->db->quote($transactionId)); + $sth = $session->db->read("select * from transactionItem where transactionId=".$session->db->quote($transactionId)); while ($row = $sth->hashRef) { push(@items, $row); } - bless {_transactionId => $transactionId, _properties => $properties, _items => \@items}, $class; + bless {_session => $session, _transactionId => $transactionId, _properties => $properties, _items => \@items}, $class; } #------------------------------------------------------------------- @@ -445,10 +446,11 @@ Returns a reference to an array which contains transaction objects of all pendin sub pendingTransactions { my (@transactionIds, @transactions); - @transactionIds = $self->session->db->buildArray("select transactionId from transaction where status = 'Pending'"); + my ($session) = @_; + @transactionIds = $session->db->buildArray("select transactionId from transaction where status = 'Pending'"); foreach (@transactionIds) { - push(@transactions, WebGUI::Commerce::Transaction->new($_)); + push(@transactions, WebGUI::Commerce::Transaction->new($session, $_)); } return \@transactions; @@ -456,6 +458,19 @@ sub pendingTransactions { #------------------------------------------------------------------- +=head2 session + +Returns the cached, local session variable. + +=cut + +sub session { + my ($self) = @_; + return $self->{_session}; +} + +#------------------------------------------------------------------- + =head2 shippingCost ( [amount] ) Returns the shipping cost for this transaction. If amount is supplied the sipping cost will @@ -632,13 +647,13 @@ The ID of the user you want the transaction of. =cut sub transactionsByUser { - my ($self, @transactionIds, @transactions, $userId); + my (@transactionIds, @transactions); my $self = shift; my $userId = shift; @transactionIds = $self->session->db->buildArray("select transactionId from transaction where userId =".$self->session->db->quote($userId)); foreach (@transactionIds) { - push (@transactions, WebGUI::Commerce::Transaction->new($_)); + push (@transactions, WebGUI::Commerce::Transaction->new($self->session, $_)); } return \@transactions; diff --git a/lib/WebGUI/Operation/Commerce.pm b/lib/WebGUI/Operation/Commerce.pm index aff386a59..f181dd6e4 100644 --- a/lib/WebGUI/Operation/Commerce.pm +++ b/lib/WebGUI/Operation/Commerce.pm @@ -92,7 +92,7 @@ sub www_cancelTransaction { my $session = shift; my ($transaction, %var); - $transaction = WebGUI::Commerce::Transaction->new($session->form->process("tid")); + $transaction = WebGUI::Commerce::Transaction->new($session, $session->form->process("tid")); unless ($transaction->status eq 'Completed') { $transaction->cancelTransaction; } @@ -249,7 +249,7 @@ sub www_checkoutSubmit { $plugin->shippingDescription($shippingDescription); # Write transaction to the log with status pending - $transaction = WebGUI::Commerce::Transaction->new('new'); + $transaction = WebGUI::Commerce::Transaction->new($session, 'new'); foreach (@{$currentPurchase->{items}}) { $transaction->addItem($_->{item}, $_->{quantity}); $amount += ($_->{item}->price * $_->{quantity}); @@ -329,7 +329,7 @@ sub www_completePendingTransaction { my $session = shift; return $session->privilege->adminOnly() unless ($session->user->isInGroup(3)); - WebGUI::Commerce::Transaction->new($session->form->process("tid"))->completeTransaction; + WebGUI::Commerce::Transaction->new($session, $session->form->process("tid"))->completeTransaction; return WebGUI::Operation::execute('listPendingTransactions'); } @@ -352,7 +352,7 @@ sub www_confirmTransaction { $plugin = WebGUI::Commerce::Payment->load($session, $session->form->process("pg")); if ($plugin->confirmTransaction) { - WebGUI::Commerce::Transaction->new($plugin->getTransactionId)->completeTransaction; + WebGUI::Commerce::Transaction->new($session, $plugin->getTransactionId)->completeTransaction; } } @@ -540,7 +540,7 @@ sub www_listPendingTransactions { $i18n = WebGUI::International->new($session, "Commerce"); $p = WebGUI::Paginator->new($session,$session->url->page('op=listPendingTransactions')); - $p->setDataByArrayRef(WebGUI::Commerce::Transaction->pendingTransactions); + $p->setDataByArrayRef(WebGUI::Commerce::Transaction->pendingTransactions($session)); $transactions = $p->getPageData; diff --git a/lib/WebGUI/Operation/TransactionLog.pm b/lib/WebGUI/Operation/TransactionLog.pm index b39266d8e..68a40a72a 100644 --- a/lib/WebGUI/Operation/TransactionLog.pm +++ b/lib/WebGUI/Operation/TransactionLog.pm @@ -68,7 +68,7 @@ sub www_cancelRecurringTransaction { my $i18n = WebGUI::International->new($session, "TransactionLog"); - $transaction = WebGUI::Commerce::Transaction->new($session->form->process("tid")); + $transaction = WebGUI::Commerce::Transaction->new($session, $session->form->process("tid")); if ($transaction->isRecurring) { $error = $transaction->cancelTransaction; $message = $i18n->get('cancel error').$error if ($error); @@ -96,7 +96,7 @@ sub www_deleteTransaction { $transactionId = $session->form->process("tid"); - WebGUI::Commerce::Transaction->new($transactionId)->delete; + WebGUI::Commerce::Transaction->new($session, $transactionId)->delete; return WebGUI::Operation::execute('listTransactions'); } @@ -106,7 +106,7 @@ sub www_deleteTransactionItem { my $session = shift; return $session->privilege->insufficient unless ($session->user->isInGroup(3)); - WebGUI::Commerce::Transaction->new($session->form->process("tid"))->deleteItem($session->form->process("iid"), $session->form->process("itype")); + WebGUI::Commerce::Transaction->new($session, $session->form->process("tid"))->deleteItem($session->form->process("iid"), $session->form->process("itype")); return WebGUI::Operation::execute('listTransactions'); }