part_pkg caching should speedup display of lots of packages, RT#5083
authorivan <ivan>
Mon, 30 Mar 2009 00:32:03 +0000 (00:32 +0000)
committerivan <ivan>
Mon, 30 Mar 2009 00:32:03 +0000 (00:32 +0000)
FS/FS/cust_pkg.pm
httemplate/view/cust_main/packages.html

index f2e0005..44e1210 100644 (file)
@@ -1220,8 +1220,10 @@ L<FS::part_pkg>).
 
 =cut
 
+use Carp qw(cluck);
 sub part_pkg {
   my $self = shift;
+  cluck "part_pkg called" if $DEBUG > 1 && ! $self->{'_pkgpart'};
   #exists( $self->{'_pkgpart'} )
   $self->{'_pkgpart'}
     ? $self->{'_pkgpart'}
index 7643e3e..9b1d5b3 100755 (executable)
@@ -76,6 +76,7 @@ Current packages
   <TH CLASS="grid" BGCOLOR="#cccccc">Services</TH>
 </TR>
 
+% my %part_pkg = ();
 % foreach my $cust_pkg (@$packages) {
 %
 %   if ( $bgcolor eq $bgcolor1 ) {
@@ -84,12 +85,18 @@ Current packages
 %     $bgcolor = $bgcolor1;
 %   }
 %
+%   $part_pkg{$cust_pkg->pkgpart} ||= $cust_pkg->part_pkg;
+%   $cust_pkg->{'_pkgpart'} ||= $part_pkg{$cust_pkg->pkgpart}; #XXX cache kludge
+%
 %   my %iopt = (
 %     'bgcolor'  => $bgcolor,
 %     'cust_pkg' => $cust_pkg,
-%     'part_pkg' => $cust_pkg->part_pkg,
+%     'part_pkg' => $part_pkg{$cust_pkg->pkgpart},
 %     %conf_opt,
 %   );
+%
+%   my $oldDEBUG = $FS::cust_pkg::DEBUG;
+%   $FS::cust_pkg::DEBUG = 2;
 
     <!--pkgnum: <% $cust_pkg->pkgnum %>-->
     <TR>
@@ -101,6 +108,8 @@ Current packages
       <% include('packages/services.html', %iopt) %>
     </TR>
 
+%   $FS::cust_pkg::DEBUG = $oldDEBUG;
+
 % }
 
 </TABLE>