Upgrade bugs.webkit.org to Bugzilla 4.2
<http://webkit.org/b/55882>

Upgrade to Bugzilla 4.2.1.

Conflicts:
    .htaccess
    Bugzilla.pm
    Bugzilla/Auth.pm
    Bugzilla/Auth/Login/CGI.pm
    Bugzilla/Auth/Persist/Cookie.pm
    Bugzilla/Bug.pm
    Bugzilla/BugMail.pm
    Bugzilla/CGI.pm
    Bugzilla/Config/Attachment.pm
    Bugzilla/Config/Common.pm
    Bugzilla/Config/General.pm
    Bugzilla/Constants.pm
    Bugzilla/DB/Mysql.pm
    Bugzilla/DB/Oracle.pm
    Bugzilla/DB/Schema.pm
    Bugzilla/DB/Schema/Oracle.pm
    Bugzilla/Error.pm
    Bugzilla/Flag.pm
    Bugzilla/FlagType.pm
    Bugzilla/Hook.pm
    Bugzilla/Install/DB.pm
    Bugzilla/Install/Filesystem.pm
    Bugzilla/Install/Localconfig.pm
    Bugzilla/Install/Requirements.pm
    Bugzilla/Install/Util.pm
    Bugzilla/Mailer.pm
    Bugzilla/Product.pm
    Bugzilla/Search.pm
    Bugzilla/Search/Quicksearch.pm
    Bugzilla/Search/Saved.pm
    Bugzilla/Series.pm
    Bugzilla/Template.pm
    Bugzilla/Template/Plugin/Hook.pm
    Bugzilla/Token.pm
    Bugzilla/User.pm
    Bugzilla/Util.pm
    Bugzilla/WebService.pm
    Bugzilla/WebService/Bug.pm
    Bugzilla/WebService/Bugzilla.pm
    Bugzilla/WebService/Constants.pm
    Bugzilla/WebService/Product.pm
    Bugzilla/WebService/User.pm
    attachment.cgi
    buglist.cgi
    checksetup.pl
    colchange.cgi
    collectstats.pl
    contrib/bugzilla_ldapsync.rb
    contrib/bzdbcopy.pl
    contrib/gnats2bz.pl
    contrib/recode.pl
    contrib/sendbugmail.pl
    contrib/yp_nomail.sh
    docs/en/xml/Bugzilla-Guide.xml
    docs/en/xml/about.xml
    docs/en/xml/installation.xml
    docs/en/xml/security.xml
    docs/en/xml/troubleshooting.xml
    editflagtypes.cgi
    editparams.cgi
    editproducts.cgi
    editvalues.cgi
    editwhines.cgi
    email_in.pl
    enter_bug.cgi
    extensions/BmpConvert/Config.pm
    extensions/OldBugMove/template/en/default/admin/params/oldbugmove.html.tmpl
    extensions/Voting/template/en/default/hook/bug/process/header-title.html.tmpl
    extensions/Voting/template/en/default/hook/search/search-report-select-rep_fields.html.tmpl
    extensions/example/code/webservice-error_codes.pl
    extensions/example/version.pl
    images/favicon.ico
    importxml.pl
    index.cgi
    install-module.pl
    js/field.js
    js/util.js
    long_list.cgi
    mod_perl.pl
    post_bug.cgi
    process_bug.cgi
    quips.cgi
    sanitycheck.cgi
    show_bug.cgi
    showattachment.cgi
    sidebar.cgi
    skins/contrib/Dusk/global.css
    skins/contrib/Dusk/index.css
    skins/standard/global.css
    skins/standard/show_bug.css
    t/008filter.t
    template/en/custom/attachment/review.html.tmpl
    template/en/default/account/prefs/saved-searches.html.tmpl
    template/en/default/admin/classifications/delete.html.tmpl
    template/en/default/admin/classifications/edit-common.html.tmpl
    template/en/default/admin/classifications/footer.html.tmpl
    template/en/default/admin/components/create.html.tmpl
    template/en/default/admin/components/edit.html.tmpl
    template/en/default/admin/params/attachment.html.tmpl
    template/en/default/admin/sanitycheck/messages.html.tmpl
    template/en/default/admin/users/confirm-delete.html.tmpl
    template/en/default/admin/workflow/edit.html.tmpl
    template/en/default/attachment/created.html.tmpl
    template/en/default/attachment/diff-header.html.tmpl
    template/en/default/attachment/edit.html.tmpl
    template/en/default/attachment/list.html.tmpl
    template/en/default/attachment/updated.html.tmpl
    template/en/default/bug/comments.html.tmpl
    template/en/default/bug/create/create-guided.html.tmpl
    template/en/default/bug/create/create.html.tmpl
    template/en/default/bug/create/created.html.tmpl
    template/en/default/bug/edit.html.tmpl
    template/en/default/bug/field.html.tmpl
    template/en/default/bug/process/header.html.tmpl
    template/en/default/bug/show.html.tmpl
    template/en/default/bug/show.xml.tmpl
    template/en/default/config.rdf.tmpl
    template/en/default/email/whine.txt.tmpl
    template/en/default/filterexceptions.pl
    template/en/default/flag/list.html.tmpl
    template/en/default/global/common-links.html.tmpl
    template/en/default/global/confirm-action.html.tmpl
    template/en/default/global/field-descs.none.tmpl
    template/en/default/global/footer.html.tmpl
    template/en/default/global/header.html.tmpl
    template/en/default/global/user-error.html.tmpl
    template/en/default/global/userselect.html.tmpl
    template/en/default/list/edit-multiple.html.tmpl
    template/en/default/list/list.html.tmpl
    template/en/default/pages/fields.html.tmpl
    template/en/default/pages/release-notes.html.tmpl
    template/en/default/search/boolean-charts.html.tmpl
    template/en/default/search/form.html.tmpl
    template/en/default/search/search-report-graph.html.tmpl
    template/en/default/search/search-report-table.html.tmpl
    template/en/default/setup/strings.txt.pl
    token.cgi
    userprefs.cgi
    xml.cgi
    xmlrpc.cgi

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@174764 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Websites/bugs.webkit.org/Bugzilla/Template/Context.pm b/Websites/bugs.webkit.org/Bugzilla/Template/Context.pm
new file mode 100644
index 0000000..7923603
--- /dev/null
+++ b/Websites/bugs.webkit.org/Bugzilla/Template/Context.pm
@@ -0,0 +1,104 @@
+# -*- 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.
+#
+# 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):
+#   Max Kanat-Alexander <mkanat@bugzilla.org>
+
+# This exists to implement the template-before_process hook.
+package Bugzilla::Template::Context;
+use strict;
+use base qw(Template::Context);
+
+use Bugzilla::Hook;
+use Scalar::Util qw(blessed);
+
+sub process {
+    my $self = shift;
+    # We don't want to run the template_before_process hook for
+    # template hooks (but we do want it to run if a hook calls
+    # PROCESS inside itself). The problem is that the {component}->{name} of
+    # hooks is unreliable--sometimes it starts with ./ and it's the
+    # full path to the hook template, and sometimes it's just the relative
+    # name (like hook/global/field-descs-end.none.tmpl). Also, calling
+    # template_before_process for hook templates doesn't seem too useful,
+    # because that's already part of the extension and they should be able
+    # to modify their hook if they want (or just modify the variables in the
+    # calling template).
+    if (not delete $self->{bz_in_hook}) {
+        $self->{bz_in_process} = 1;
+    }
+    my $result = $self->SUPER::process(@_);
+    delete $self->{bz_in_process};
+    return $result;
+}
+
+# This method is called by Template-Toolkit exactly once per template or
+# block (look at a compiled template) so this is an ideal place for us to
+# modify the variables before a template or block runs.
+#
+# We don't do it during Context::process because at that time
+# our stash hasn't been set correctly--the parameters we were passed
+# in the PROCESS or INCLUDE directive haven't been set, and if we're
+# in an INCLUDE, the stash is not yet localized during process().
+sub stash {
+    my $self = shift;
+    my $stash = $self->SUPER::stash(@_);
+
+    my $name = $stash->{component}->{name};
+    my $pre_process = $self->config->{PRE_PROCESS};
+
+    # Checking bz_in_process tells us that we were indeed called as part of a
+    # Context::process, and not at some other point. 
+    #
+    # Checking $name makes sure that we're processing a file, and not just a
+    # block, by checking that the name has a period in it. We don't allow
+    # blocks because their names are too unreliable--an extension could have
+    # a block with the same name, or multiple files could have a same-named
+    # block, and then your extension would malfunction.
+    #
+    # We also make sure that we don't run, ever, during the PRE_PROCESS
+    # templates, because if somebody calls Throw*Error globally inside of
+    # template_before_process, that causes an infinite recursion into
+    # the PRE_PROCESS templates (because Bugzilla, while inside 
+    # global/intialize.none.tmpl, loads the template again to create the
+    # template object for Throw*Error).
+    #
+    # Checking Bugzilla::Hook::in prevents infinite recursion on this hook.
+    if ($self->{bz_in_process} and $name =~ /\./
+        and !grep($_ eq $name, @$pre_process)
+        and !Bugzilla::Hook::in('template_before_process'))
+    {
+        Bugzilla::Hook::process("template_before_process",
+                                { vars => $stash, context => $self,
+                                  file => $name });
+    }
+
+    # This prevents other calls to stash() that might somehow happen
+    # later in the file from also triggering the hook.
+    delete $self->{bz_in_process};
+
+    return $stash;
+}
+
+# We need a DESTROY sub for the same reason that Bugzilla::CGI does.
+sub DESTROY {
+    my $self = shift;
+    $self->SUPER::DESTROY(@_);
+};
+
+1;