Committer: ailyin
LJSV-1228 (Shop history page fails to load for people with large numbers of orders)U trunk/cgi-bin/LJ/Pay/Payment.pm U trunk/cgi-bin/LJ/Widget/Shop/History.pm
Modified: trunk/cgi-bin/LJ/Pay/Payment.pm =================================================================== --- trunk/cgi-bin/LJ/Pay/Payment.pm 2010-11-08 09:51:23 UTC (rev 9676) +++ trunk/cgi-bin/LJ/Pay/Payment.pm 2010-11-08 11:49:00 UTC (rev 9677) @@ -2043,20 +2043,29 @@ $userid = LJ::want_userid($userid); my $dbh = LJ::get_db_writer(); - my $payids = $dbh->selectcol_arrayref(qq{ - SELECT payid FROM payments + my $res = $dbh->selectall_arrayref(qq{ + SELECT * FROM payments WHERE userid=? AND (forwhat="cart" OR forwhat="recbill") ORDER BY payid DESC - }, undef, $userid); + }, { 'Slice' => {} }, $userid); my @ret; - foreach my $payid (@$payids) { - my $cart = eval { $class->load('payid' => $payid) }; + if (@$res > 50) { + # less resource-consuming way: show all carts + foreach my $row (@$res) { + push @ret, $class->new_memonly(%$row); + } + } else { + # we can go ahead and load items, so that we can hide + # empty carts, nifty! + foreach my $row (@$res) { + my $cart = eval { $class->load('payid' => $row->{'payid'}) }; - next unless $cart; - next unless $cart->get_items; + next unless $cart; + next unless $cart->get_items; - push @ret, $cart; + push @ret, $cart; + } } return \@ret; Modified: trunk/cgi-bin/LJ/Widget/Shop/History.pm =================================================================== --- trunk/cgi-bin/LJ/Widget/Shop/History.pm 2010-11-08 09:51:23 UTC (rev 9676) +++ trunk/cgi-bin/LJ/Widget/Shop/History.pm 2010-11-08 11:49:00 UTC (rev 9677) @@ -114,7 +114,6 @@ $des = LJ::Lang::ml('wallet.widget.history.des.order', { 'cart_link' => $cart_link, }); - warn $des; } }