]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 344527: Old Charts are broken using mod_perl
authormkanat%bugzilla.org <>
Tue, 25 Jul 2006 04:43:35 +0000 (04:43 +0000)
committermkanat%bugzilla.org <>
Tue, 25 Jul 2006 04:43:35 +0000 (04:43 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=justdave

Bugzilla/Util.pm
reports.cgi

index c5cfc0444282469a377ed6ff08a4b707c3703d87..24debb1d6214b65c9939e3ed5f33519ddfc8ec15 100644 (file)
@@ -34,7 +34,7 @@ use base qw(Exporter);
                              detaint_signed
                              html_quote url_quote value_quote xml_quote
                              css_class_quote
-                             i_am_cgi get_netaddr
+                             i_am_cgi get_netaddr correct_urlbase
                              lsearch
                              diff_arrays diff_strings
                              trim wrap_comment find_wrap_point
@@ -146,6 +146,22 @@ sub i_am_cgi {
     return exists $ENV{'SERVER_SOFTWARE'} ? 1 : 0;
 }
 
+sub correct_urlbase {
+    my $ssl = Bugzilla->params->{'ssl'};
+    return Bugzilla->params->{'urlbase'} if $ssl eq 'never';
+
+    my $sslbase = Bugzilla->params->{'sslbase'};
+    if ($sslbase) {
+        return $sslbase if $ssl eq 'always';
+        # Authenticated Sessions
+        return $sslbase if Bugzilla->user->id;
+    }
+
+    # Set to "authenticated sessions" but nobody's logged in, or
+    # sslbase isn't set.
+    return Bugzilla->params->{'urlbase'};
+}
+
 sub lsearch {
     my ($list,$item) = (@_);
     my $count = 0;
@@ -429,8 +445,9 @@ Bugzilla::Util - Generic utility functions for bugzilla
   $rv = url_decode($var);
 
   # Functions that tell you about your environment
-  my $is_cgi = i_am_cgi();
-  $net_addr = get_netaddr($ip_addr);
+  my $is_cgi   = i_am_cgi();
+  my $net_addr = get_netaddr($ip_addr);
+  my $urlbase  = correct_urlbase();
 
   # Functions for searching
   $loc = lsearch(\@arr, $val);
@@ -565,6 +582,11 @@ C<Bugzilla->params->{'loginnetmask'}> as the netmask. This can be used
 to obtain data in order to restrict weak authentication methods (such as
 cookies) to only some addresses.
 
+=item C<correct_urlbase()>
+
+Returns either the C<sslbase> or C<urlbase> parameter, depending on the
+current setting for the C<ssl> parameter.
+
 =back
 
 =head2 Searching
index e0ef55dafed2eb02be9961b670025d24078003bd..0f5842d0babe899de868f3e409d5de3d5ffd95cb 100755 (executable)
@@ -47,8 +47,9 @@ $@ && ThrowCodeError("gd_not_installed");
 eval "use Chart::Lines";
 $@ && ThrowCodeError("chart_lines_not_installed");
 
-local our $dir = bz_locations()->{'datadir'} . "/mining";
-local our $graph_dir = bz_locations()->{'libpath'} . "/graphs";
+local our $dir       = bz_locations()->{'datadir'} . "/mining";
+local our $graph_url = 'graphs';
+local our $graph_dir = bz_locations()->{'libpath'} . '/' .$graph_url;
 
 # If we're using bug groups for products, we should apply those restrictions
 # to viewing reports, as well.  Time to check the login in that case.
@@ -198,7 +199,8 @@ FIN
     my $type = chart_image_type();
     my $data_file = daily_stats_filename($product);
     my $image_file = chart_image_name($data_file, $type, $datasets);
-    my $url_image = "$graph_dir/" . url_quote($image_file);
+    my $url_image = correct_urlbase() . "$graph_url/" 
+                    . url_quote($image_file);
 
     if (! -e "$graph_dir/$image_file") {
         generate_chart("$dir/$data_file", "$graph_dir/$image_file", $type,