# -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Mozilla Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is the Bugzilla Bug Tracking System. # # Contributor(s): Marc Schumann # Max Kanat-Alexander # Mads Bondo Dydensborg package Bugzilla::WebService::Bugzilla; use strict; use base qw(Bugzilla::WebService); use Bugzilla::Constants; use Bugzilla::Util qw(datetime_from); use DateTime; # Basic info that is needed before logins use constant LOGIN_EXEMPT => { timezone => 1, version => 1, }; use constant READ_ONLY => qw( extensions timezone time version ); sub version { my $self = shift; return { version => $self->type('string', BUGZILLA_VERSION) }; } sub extensions { my $self = shift; my %retval; foreach my $extension (@{ Bugzilla->extensions }) { my $version = $extension->VERSION || 0; my $name = $extension->NAME; $retval{$name}->{version} = $self->type('string', $version); } return { extensions => \%retval }; } sub timezone { my $self = shift; # All Webservices return times in UTC; Use UTC here for backwards compat. return { timezone => $self->type('string', "+0000") }; } sub time { my ($self) = @_; # All Webservices return times in UTC; Use UTC here for backwards compat. # Hardcode values where appropriate my $dbh = Bugzilla->dbh; my $db_time = $dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)'); $db_time = datetime_from($db_time, 'UTC'); my $now_utc = DateTime->now(); return { db_time => $self->type('dateTime', $db_time), web_time => $self->type('dateTime', $now_utc), web_time_utc => $self->type('dateTime', $now_utc), tz_name => $self->type('string', 'UTC'), tz_offset => $self->type('string', '+0000'), tz_short_name => $self->type('string', 'UTC'), }; } 1; __END__ =head1 NAME Bugzilla::WebService::Bugzilla - Global functions for the webservice interface. =head1 DESCRIPTION This provides functions that tell you about Bugzilla in general. =head1 METHODS See L for a description of how parameters are passed, and what B, B, and B mean. =over =item C B =over =item B Returns the current version of Bugzilla. =item B (none) =item B A hash with a single item, C, that is the version as a string. =item B (none) =back =item C B =over =item B Gets information about the extensions that are currently installed and enabled in this Bugzilla. =item B (none) =item B A hash with a single item, C. This points to a hash. I hash contains the names of extensions as keys, and the values are a hash. That hash contains a single key C, which is the version of the extension, or C<0> if the extension hasn't defined a version. The return value looks something like this: extensions => { Example => { version => '3.6', }, BmpConvert => { version => '1.0', }, } =item B =over =item Added in Bugzilla B<3.2>. =item As of Bugzilla B<3.6>, the names of extensions are canonical names that the extensions define themselves. Before 3.6, the names of the extensions depended on the directory they were in on the Bugzilla server. =back =back =item C B This method may be removed in a future version of Bugzilla. Use L instead. =over =item B Returns the timezone that Bugzilla expects dates and times in. =item B (none) =item B A hash with a single item, C, that is the timezone offset as a string in (+/-)XXXX (RFC 2822) format. =item B =over =item As of Bugzilla B<3.6>, the timezone returned is always C<+0000> (the UTC timezone). =back =back =item C