Commit be1c9700 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 496855: Hooks for sanitycheck.cgi

Patch by Bradley Baetz <bbaetz@acm.org> r=mkanat, a=mkanat
parent 3e0d373b
......@@ -556,6 +556,34 @@ Params:
=back
=head2 sanitycheck-check
This hook allows for extra sanity checks to be added, for use by
F<sanitycheck.cgi>.
Params:
=over
=item C<status> - a CODEREF that allows status messages to be displayed
to the user. (F<sanitycheck.cgi>'s C<Status>)
=back
=head2 sanitycheck-repair
This hook allows for extra sanity check repairs to be made, for use by
F<sanitycheck.cgi>.
Params:
=over
=item C<status> - a CODEREF that allows status messages to be displayed
to the user. (F<sanitycheck.cgi>'s C<Status>)
=back
=head2 webservice
This hook allows you to add your own modules to the WebService. (See
......
# -*- 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 Example Plugin.
#
# The Initial Developer of the Original Code is ITA Softwware.
# Portions created by the Initial Developer are Copyright (C) 2009
# the Initial Developer. All Rights Reserved.
#
# Contributor(s): Bradley Baetz <bbaetz@everythingsolved.com>
use strict;
my $dbh = Bugzilla->dbh;
my $sth;
my $status = Bugzilla->hook_args->{'status'};
# Check that all users are Australian
$status->('example_check_au_user');
my $sth = $dbh->prepare("SELECT userid, login_name
FROM profiles
WHERE login_name NOT LIKE '%.au'");
$sth->execute;
my $seen_nonau = 0;
while (my ($userid, $login, $numgroups) = $sth->fetchrow_array) {
$status->('example_check_au_user_alert',
{ userid => $userid, login => $login },
'alert');
$seen_nonau = 1;
}
$status->('example_check_au_user_prompt') if $seen_nonau;
# -*- 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 Example Plugin.
#
# The Initial Developer of the Original Code is ITA Software.
# Portions created by the Initial Developer are Copyright (C) 2009
# the Initial Developer. All Rights Reserved.
#
# Contributor(s): Bradley Baetz <bbaetz@everythingsolved.com>
use strict;
use Bugzilla;
my $cgi = Bugzilla->cgi;
my $dbh = Bugzilla->dbh;
my $status = Bugzilla->hook_args->{'status'};
if ($cgi->param('example_repair_au_user')) {
$status->('example_repair_au_user_start');
#$dbh->do("UPDATE profiles
# SET login_name = CONCAT(login_name, '.au')
# WHERE login_name NOT LIKE '%.au'");
$status->('example_repair_au_user_end');
}
[%# -*- 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 Example Plugin.
#
# The Initial Developer of the Original Code is ITA Software
# Portions created by the Initial Developer are Copyright (C) 2009
# the Initial Developer. All Rights Reserved.
#
# Contributor(s): Bradley Baetz <bbaetz@everythingsolved.com>
#%]
[% IF san_tag == "example_check_au_user" %]
<em>EXAMPLE PLUGIN</em> - Checking for non-Australian users.
[% ELSIF san_tag == "example_check_au_user_alert" %]
User &lt;[% login FILTER html %]&gt; isn't Australian.
[% IF user.in_group('editusers') %]
<a href="editusers.cgi?id=[% userid FILTER none %]">Edit this user</a>.
[% END %]
[% ELSIF san_tag == "example_check_au_user_prompt" %]
<a href="sanitycheck.cgi?example_repair_au_user=1">Fix these users</a>.
[% ELSIF san_tag == "example_repair_au_user_start" %]
<em>EXAMPLE PLUGIN</em> - OK, would now make users Australian.
[% ELSIF san_tag == "example_repair_au_user_end" %]
<em>EXAMPLE PLUGIN</em> - Users would now be Australian.
[% END %]
......@@ -31,8 +31,9 @@ use lib qw(. lib);
use Bugzilla;
use Bugzilla::Bug;
use Bugzilla::Constants;
use Bugzilla::Util;
use Bugzilla::Error;
use Bugzilla::Hook;
use Bugzilla::Util;
use Bugzilla::Status;
###########################################################################
......@@ -383,6 +384,15 @@ if ($cgi->param('remove_old_whine_targets')) {
Status('whines_obsolete_target_deletion_end');
}
###########################################################################
# Repair hook
###########################################################################
Bugzilla::Hook::process("sanitycheck-repair", { status => \&Status });
###########################################################################
# Checks
###########################################################################
Status('checks_start');
###########################################################################
......@@ -1062,6 +1072,12 @@ foreach my $target (['groups', 'id', MAILTO_GROUP],
Status('whines_obsolete_target_fix') if $display_repair_whines_link;
###########################################################################
# Check hook
###########################################################################
Bugzilla::Hook::process("sanitycheck-check", { status => \&Status });
###########################################################################
# End
###########################################################################
......
......@@ -313,6 +313,17 @@
<a href="sanitycheck.cgi?remove_old_whine_targets=1">Click here to
remove old users/groups</a>
[% ELSE %]
[% message = Hook.process("statuses") %]
[% IF message %]
[% message FILTER none %]
[% ELSE %]
The status message string <code>[% san_tag FILTER html %]</code>
was not found. Please send email to [% Param("maintainer") %] describing
the steps taken to obtain this message.
[% END %]
[% END %]
[% END %]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment