diff options
author | Perl Tidy <perltidy@bugzilla.org> | 2018-12-05 21:38:52 +0100 |
---|---|---|
committer | Dylan William Hardison <dylan@hardison.net> | 2018-12-05 23:49:08 +0100 |
commit | 8ec8da0491ad89604700b3e29a227966f6d84ba1 (patch) | |
tree | 9d270f173330ca19700e0ba9f2ee931300646de1 /extensions/SiteMapIndex | |
parent | a7bb5a65b71644d9efce5fed783ed545b9336548 (diff) | |
download | bugzilla-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.pm | 10 | ||||
-rw-r--r-- | extensions/SiteMapIndex/Extension.pm | 116 | ||||
-rw-r--r-- | extensions/SiteMapIndex/lib/Constants.pm | 8 | ||||
-rw-r--r-- | extensions/SiteMapIndex/lib/Util.pm | 207 |
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; |