summaryrefslogtreecommitdiffstats
path: root/extensions/SiteMapIndex
diff options
context:
space:
mode:
authorPerl Tidy <perltidy@bugzilla.org>2018-12-05 21:38:52 +0100
committerDylan William Hardison <dylan@hardison.net>2018-12-05 23:49:08 +0100
commit8ec8da0491ad89604700b3e29a227966f6d84ba1 (patch)
tree9d270f173330ca19700e0ba9f2ee931300646de1 /extensions/SiteMapIndex
parenta7bb5a65b71644d9efce5fed783ed545b9336548 (diff)
downloadbugzilla-8ec8da0491ad89604700b3e29a227966f6d84ba1.tar.gz
bugzilla-8ec8da0491ad89604700b3e29a227966f6d84ba1.tar.xz
no bug - reformat all the code using the new perltidy rules
Diffstat (limited to 'extensions/SiteMapIndex')
-rw-r--r--extensions/SiteMapIndex/Config.pm10
-rw-r--r--extensions/SiteMapIndex/Extension.pm116
-rw-r--r--extensions/SiteMapIndex/lib/Constants.pm8
-rw-r--r--extensions/SiteMapIndex/lib/Util.pm207
4 files changed, 172 insertions, 169 deletions
diff --git a/extensions/SiteMapIndex/Config.pm b/extensions/SiteMapIndex/Config.pm
index 980938503..3ff922167 100644
--- a/extensions/SiteMapIndex/Config.pm
+++ b/extensions/SiteMapIndex/Config.pm
@@ -28,12 +28,8 @@ use warnings;
use constant NAME => 'SiteMapIndex';
-use constant REQUIRED_MODULES => [
- {
- package => 'IO-Compress-Gzip',
- module => 'IO::Compress::Gzip',
- version => 0,
- }
-];
+use constant REQUIRED_MODULES =>
+ [{package => 'IO-Compress-Gzip', module => 'IO::Compress::Gzip', version => 0,
+ }];
__PACKAGE__->NAME;
diff --git a/extensions/SiteMapIndex/Extension.pm b/extensions/SiteMapIndex/Extension.pm
index 3d4342e0e..c606702ae 100644
--- a/extensions/SiteMapIndex/Extension.pm
+++ b/extensions/SiteMapIndex/Extension.pm
@@ -46,32 +46,32 @@ use POSIX;
#########
sub template_before_process {
- my ($self, $args) = @_;
- my ($vars, $file) = @$args{qw(vars file)};
-
- return if $file ne 'global/header.html.tmpl';
- return unless (exists $vars->{bug} || exists $vars->{bugs});
- my $bugs = exists $vars->{bugs} ? $vars->{bugs} : [$vars->{bug}];
- return if ref $bugs ne 'ARRAY';
-
- foreach my $bug (@$bugs) {
- if (!bug_is_ok_to_index($bug)) {
- $vars->{sitemap_noindex} = 1;
- last;
- }
+ my ($self, $args) = @_;
+ my ($vars, $file) = @$args{qw(vars file)};
+
+ return if $file ne 'global/header.html.tmpl';
+ return unless (exists $vars->{bug} || exists $vars->{bugs});
+ my $bugs = exists $vars->{bugs} ? $vars->{bugs} : [$vars->{bug}];
+ return if ref $bugs ne 'ARRAY';
+
+ foreach my $bug (@$bugs) {
+ if (!bug_is_ok_to_index($bug)) {
+ $vars->{sitemap_noindex} = 1;
+ last;
}
+ }
}
sub page_before_template {
- my ($self, $args) = @_;
- my $page = $args->{page_id};
-
- if ($page =~ m{^sitemap/sitemap\.}) {
- my $map = generate_sitemap(__PACKAGE__->NAME);
- print Bugzilla->cgi->header('text/xml');
- print $map;
- exit;
- }
+ my ($self, $args) = @_;
+ my $page = $args->{page_id};
+
+ if ($page =~ m{^sitemap/sitemap\.}) {
+ my $map = generate_sitemap(__PACKAGE__->NAME);
+ print Bugzilla->cgi->header('text/xml');
+ print $map;
+ exit;
+ }
}
################
@@ -79,54 +79,54 @@ sub page_before_template {
################
sub install_before_final_checks {
- my ($self) = @_;
- if (!Bugzilla->localconfig->{urlbase}) {
- print STDERR get_text('sitemap_no_urlbase'), "\n";
- return;
- }
- if (Bugzilla->params->{'requirelogin'}) {
- print STDERR get_text('sitemap_requirelogin'), "\n";
- return;
- }
-
- return if (Bugzilla->localconfig->{urlbase} ne 'https://bugzilla.mozilla.org/');
+ my ($self) = @_;
+ if (!Bugzilla->localconfig->{urlbase}) {
+ print STDERR get_text('sitemap_no_urlbase'), "\n";
+ return;
+ }
+ if (Bugzilla->params->{'requirelogin'}) {
+ print STDERR get_text('sitemap_requirelogin'), "\n";
+ return;
+ }
+
+ return if (Bugzilla->localconfig->{urlbase} ne 'https://bugzilla.mozilla.org/');
}
sub install_filesystem {
- my ($self, $args) = @_;
- my $create_dirs = $args->{'create_dirs'};
- my $recurse_dirs = $args->{'recurse_dirs'};
- my $htaccess = $args->{'htaccess'};
-
- # Create the sitemap directory to store the index and sitemap files
- my $sitemap_path = bz_locations->{'datadir'} . "/" . __PACKAGE__->NAME;
-
- $create_dirs->{$sitemap_path} = Bugzilla::Install::Filesystem::DIR_CGI_WRITE
- | Bugzilla::Install::Filesystem::DIR_ALSO_WS_SERVE;
-
- $recurse_dirs->{$sitemap_path} = {
- files => Bugzilla::Install::Filesystem::CGI_WRITE
- | Bugzilla::Install::Filesystem::DIR_ALSO_WS_SERVE,
- dirs => Bugzilla::Install::Filesystem::DIR_CGI_WRITE
- | Bugzilla::Install::Filesystem::DIR_ALSO_WS_SERVE
- };
-
- # Create a htaccess file that allows the sitemap files to be served out
- $htaccess->{"$sitemap_path/.htaccess"} = {
- perms => Bugzilla::Install::Filesystem::WS_SERVE,
- contents => <<EOT
+ my ($self, $args) = @_;
+ my $create_dirs = $args->{'create_dirs'};
+ my $recurse_dirs = $args->{'recurse_dirs'};
+ my $htaccess = $args->{'htaccess'};
+
+ # Create the sitemap directory to store the index and sitemap files
+ my $sitemap_path = bz_locations->{'datadir'} . "/" . __PACKAGE__->NAME;
+
+ $create_dirs->{$sitemap_path} = Bugzilla::Install::Filesystem::DIR_CGI_WRITE
+ | Bugzilla::Install::Filesystem::DIR_ALSO_WS_SERVE;
+
+ $recurse_dirs->{$sitemap_path} = {
+ files => Bugzilla::Install::Filesystem::CGI_WRITE
+ | Bugzilla::Install::Filesystem::DIR_ALSO_WS_SERVE,
+ dirs => Bugzilla::Install::Filesystem::DIR_CGI_WRITE
+ | Bugzilla::Install::Filesystem::DIR_ALSO_WS_SERVE
+ };
+
+ # Create a htaccess file that allows the sitemap files to be served out
+ $htaccess->{"$sitemap_path/.htaccess"} = {
+ perms => Bugzilla::Install::Filesystem::WS_SERVE,
+ contents => <<EOT
# Allow access to sitemap files created by the SiteMapIndex extension
<FilesMatch ^sitemap.*\\.xml(.gz)?\$>
Allow from all
</FilesMatch>
Deny from all
EOT
- };
+ };
}
sub before_robots_txt {
- my ($self, $args) = @_;
- $args->{vars}{SITEMAP_URL} = Bugzilla->localconfig->{urlbase} . SITEMAP_URL;
+ my ($self, $args) = @_;
+ $args->{vars}{SITEMAP_URL} = Bugzilla->localconfig->{urlbase} . SITEMAP_URL;
}
__PACKAGE__->NAME;
diff --git a/extensions/SiteMapIndex/lib/Constants.pm b/extensions/SiteMapIndex/lib/Constants.pm
index 4f404c8b1..bd098d16a 100644
--- a/extensions/SiteMapIndex/lib/Constants.pm
+++ b/extensions/SiteMapIndex/lib/Constants.pm
@@ -27,10 +27,10 @@ use warnings;
use base qw(Exporter);
our @EXPORT = qw(
- SITEMAP_AGE
- SITEMAP_MAX
- SITEMAP_DELAY
- SITEMAP_URL
+ SITEMAP_AGE
+ SITEMAP_MAX
+ SITEMAP_DELAY
+ SITEMAP_URL
);
# This is the amount of hours a sitemap index and it's files are considered
diff --git a/extensions/SiteMapIndex/lib/Util.pm b/extensions/SiteMapIndex/lib/Util.pm
index 4519461b4..fb945e324 100644
--- a/extensions/SiteMapIndex/lib/Util.pm
+++ b/extensions/SiteMapIndex/lib/Util.pm
@@ -28,8 +28,8 @@ use warnings;
use base qw(Exporter);
our @EXPORT = qw(
- generate_sitemap
- bug_is_ok_to_index
+ generate_sitemap
+ bug_is_ok_to_index
);
use Bugzilla::Extension::SiteMapIndex::Constants;
@@ -41,169 +41,176 @@ use Scalar::Util qw(blessed);
use IO::Compress::Gzip qw(gzip $GzipError);
sub too_young_date {
- my $hours_ago = DateTime->now(time_zone => Bugzilla->local_timezone);
- $hours_ago->subtract(hours => SITEMAP_DELAY);
- return $hours_ago;
+ my $hours_ago = DateTime->now(time_zone => Bugzilla->local_timezone);
+ $hours_ago->subtract(hours => SITEMAP_DELAY);
+ return $hours_ago;
}
sub bug_is_ok_to_index {
- my ($bug) = @_;
- return 1 unless blessed($bug) && $bug->isa('Bugzilla::Bug') && !$bug->{error};
- my $creation_ts = datetime_from($bug->creation_ts);
- return ($creation_ts && $creation_ts lt too_young_date()) ? 1 : 0;
+ my ($bug) = @_;
+ return 1 unless blessed($bug) && $bug->isa('Bugzilla::Bug') && !$bug->{error};
+ my $creation_ts = datetime_from($bug->creation_ts);
+ return ($creation_ts && $creation_ts lt too_young_date()) ? 1 : 0;
}
# We put two things in the Sitemap: a list of Browse links for products,
# and links to bugs.
sub generate_sitemap {
- my ($extension_name) = @_;
-
- # If file is less than SITEMAP_AGE hours old, then read in and send to caller.
- # If greater, then regenerate and send the new version.
- my $index_file = bz_locations->{'datadir'} . "/$extension_name/sitemap_index.xml";
- if (-e $index_file) {
- my $index_mtime = (stat($index_file))[9];
- my $index_hours = sprintf("%d", (time() - $index_mtime) / 60 / 60); # in hours
- if ($index_hours < SITEMAP_AGE) {
- my $index_fh = new IO::File($index_file, 'r');
- $index_fh || die "Could not open current sitemap index: $!";
- my $index_xml;
- { local $/; $index_xml = <$index_fh> }
- $index_fh->close() || die "Could not close current sitemap index: $!";
-
- return $index_xml;
- }
+ my ($extension_name) = @_;
+
+ # If file is less than SITEMAP_AGE hours old, then read in and send to caller.
+ # If greater, then regenerate and send the new version.
+ my $index_file
+ = bz_locations->{'datadir'} . "/$extension_name/sitemap_index.xml";
+ if (-e $index_file) {
+ my $index_mtime = (stat($index_file))[9];
+ my $index_hours = sprintf("%d", (time() - $index_mtime) / 60 / 60); # in hours
+ if ($index_hours < SITEMAP_AGE) {
+ my $index_fh = new IO::File($index_file, 'r');
+ $index_fh || die "Could not open current sitemap index: $!";
+ my $index_xml;
+ { local $/; $index_xml = <$index_fh> }
+ $index_fh->close() || die "Could not close current sitemap index: $!";
+
+ return $index_xml;
}
-
- # Set the atime and mtime of the index file to the current time
- # in case another request is made before we finish.
- utime(undef, undef, $index_file);
-
- # Sitemaps must never contain private data.
- Bugzilla->logout_request();
- my $user = Bugzilla->user;
- my $products = $user->get_accessible_products;
-
- my $num_bugs = SITEMAP_MAX - scalar(@$products);
- # We do this date math outside of the database because databases
- # usually do better with a straight comparison value.
- my $hours_ago = too_young_date();
-
- # We don't use Bugzilla::Bug objects, because this could be a tremendous
- # amount of data, and we only want a little. Also, we only display
- # bugs that are not in any group. We show the last $num_bugs
- # most-recently-updated bugs.
- my $dbh = Bugzilla->dbh;
- my $bug_sth = $dbh->prepare(
- 'SELECT bugs.bug_id, bugs.delta_ts
+ }
+
+ # Set the atime and mtime of the index file to the current time
+ # in case another request is made before we finish.
+ utime(undef, undef, $index_file);
+
+ # Sitemaps must never contain private data.
+ Bugzilla->logout_request();
+ my $user = Bugzilla->user;
+ my $products = $user->get_accessible_products;
+
+ my $num_bugs = SITEMAP_MAX - scalar(@$products);
+
+ # We do this date math outside of the database because databases
+ # usually do better with a straight comparison value.
+ my $hours_ago = too_young_date();
+
+ # We don't use Bugzilla::Bug objects, because this could be a tremendous
+ # amount of data, and we only want a little. Also, we only display
+ # bugs that are not in any group. We show the last $num_bugs
+ # most-recently-updated bugs.
+ my $dbh = Bugzilla->dbh;
+ my $bug_sth = $dbh->prepare(
+ 'SELECT bugs.bug_id, bugs.delta_ts
FROM bugs
LEFT JOIN bug_group_map ON bugs.bug_id = bug_group_map.bug_id
WHERE bug_group_map.bug_id IS NULL AND creation_ts < ?
- ' . $dbh->sql_limit($num_bugs, '?'));
+ ' . $dbh->sql_limit($num_bugs, '?')
+ );
- my $filecount = 1;
- my $filelist = [];
- my $offset = 0;
+ my $filecount = 1;
+ my $filelist = [];
+ my $offset = 0;
- while (1) {
- my $bugs = [];
+ while (1) {
+ my $bugs = [];
- $bug_sth->execute($hours_ago, $offset);
+ $bug_sth->execute($hours_ago, $offset);
- while (my ($bug_id, $delta_ts) = $bug_sth->fetchrow_array()) {
- push(@$bugs, { bug_id => $bug_id, delta_ts => $delta_ts });
- }
+ while (my ($bug_id, $delta_ts) = $bug_sth->fetchrow_array()) {
+ push(@$bugs, {bug_id => $bug_id, delta_ts => $delta_ts});
+ }
- last if !@$bugs;
+ last if !@$bugs;
- # We only need the product links in the first sitemap file
- $products = [] if $filecount > 1;
+ # We only need the product links in the first sitemap file
+ $products = [] if $filecount > 1;
- push(@$filelist, _generate_sitemap_file($extension_name, $filecount, $products, $bugs));
+ push(@$filelist,
+ _generate_sitemap_file($extension_name, $filecount, $products, $bugs));
- $filecount++;
- $offset += $num_bugs;
- }
+ $filecount++;
+ $offset += $num_bugs;
+ }
- # Generate index file
- return _generate_sitemap_index($extension_name, $filelist);
+ # Generate index file
+ return _generate_sitemap_index($extension_name, $filelist);
}
sub _generate_sitemap_index {
- my ($extension_name, $filelist) = @_;
+ my ($extension_name, $filelist) = @_;
- my $dbh = Bugzilla->dbh;
- my $timestamp = $dbh->selectrow_array(
- "SELECT " . $dbh->sql_date_format('NOW()', '%Y-%m-%d'));
+ my $dbh = Bugzilla->dbh;
+ my $timestamp = $dbh->selectrow_array(
+ "SELECT " . $dbh->sql_date_format('NOW()', '%Y-%m-%d'));
- my $index_xml = <<END;
+ my $index_xml = <<END;
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
END
- foreach my $filename (@$filelist) {
- $index_xml .= "
+ foreach my $filename (@$filelist) {
+ $index_xml .= "
<sitemap>
- <loc>" . Bugzilla->localconfig->{urlbase} . "data/$extension_name/$filename</loc>
+ <loc>"
+ . Bugzilla->localconfig->{urlbase} . "data/$extension_name/$filename</loc>
<lastmod>$timestamp</lastmod>
</sitemap>
";
- }
+ }
- $index_xml .= <<END;
+ $index_xml .= <<END;
</sitemapindex>
END
- my $index_file = bz_locations->{'datadir'} . "/$extension_name/sitemap_index.xml";
- my $index_fh = new IO::File($index_file, 'w');
- $index_fh || die "Could not open new sitemap index: $!";
- print $index_fh $index_xml;
- $index_fh->close() || die "Could not close new sitemap index: $!";
+ my $index_file
+ = bz_locations->{'datadir'} . "/$extension_name/sitemap_index.xml";
+ my $index_fh = new IO::File($index_file, 'w');
+ $index_fh || die "Could not open new sitemap index: $!";
+ print $index_fh $index_xml;
+ $index_fh->close() || die "Could not close new sitemap index: $!";
- return $index_xml;
+ return $index_xml;
}
sub _generate_sitemap_file {
- my ($extension_name, $filecount, $products, $bugs) = @_;
+ my ($extension_name, $filecount, $products, $bugs) = @_;
- my $bug_url = Bugzilla->localconfig->{urlbase} . 'show_bug.cgi?id=';
- my $product_url = Bugzilla->localconfig->{urlbase} . 'describecomponents.cgi?product=';
+ my $bug_url = Bugzilla->localconfig->{urlbase} . 'show_bug.cgi?id=';
+ my $product_url
+ = Bugzilla->localconfig->{urlbase} . 'describecomponents.cgi?product=';
- my $sitemap_xml = <<END;
+ my $sitemap_xml = <<END;
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
END
- foreach my $product (@$products) {
- $sitemap_xml .= "
+ foreach my $product (@$products) {
+ $sitemap_xml .= "
<url>
<loc>" . $product_url . url_quote($product->name) . "</loc>
<changefreq>daily</changefreq>
<priority>0.4</priority>
</url>
";
- }
+ }
- foreach my $bug (@$bugs) {
- $sitemap_xml .= "
+ foreach my $bug (@$bugs) {
+ $sitemap_xml .= "
<url>
<loc>" . $bug_url . $bug->{bug_id} . "</loc>
<lastmod>" . datetime_from($bug->{delta_ts}, 'UTC')->iso8601 . 'Z' . "</lastmod>
</url>
";
- }
+ }
- $sitemap_xml .= <<END;
+ $sitemap_xml .= <<END;
</urlset>
END
- # Write the compressed sitemap data to a file in the cgi root so that they can
- # be accessed by the search engines.
- my $filename = "sitemap$filecount.xml.gz";
- gzip \$sitemap_xml => bz_locations->{'datadir'} . "/$extension_name/$filename"
- || die "gzip failed: $GzipError\n";
+ # Write the compressed sitemap data to a file in the cgi root so that they can
+ # be accessed by the search engines.
+ my $filename = "sitemap$filecount.xml.gz";
+ gzip \$sitemap_xml => bz_locations->{'datadir'} . "/$extension_name/$filename"
+ || die "gzip failed: $GzipError\n";
- return $filename;
+ return $filename;
}
1;