[Rt-commit] rt branch, 4.6/remove-deprecated-code, created. rt-4.4.4-741-g798d91bc26

Jim Brandt jbrandt at bestpractical.com
Fri Feb 7 17:16:42 EST 2020


The branch, 4.6/remove-deprecated-code has been created
        at  798d91bc263f873e29990bcde58a0014e250734b (commit)

- Log -----------------------------------------------------------------
commit 89404b4bfd4782111cb4b4c62d8bf095efc21b8d
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri Jan 24 05:45:03 2020 +0800

    Bump to RT 5
    
    This includes the following changes:
    
    * DB name is set to rt5
    * Installation path is set to /opt/rt5
    * RT 4.6 is renamed to RT 5.0

diff --git a/README b/README
index 6ec2810146..2f417b8fe8 100644
--- a/README
+++ b/README
@@ -59,10 +59,10 @@ GENERAL INSTALLATION
 
     Peruse the options, then rerun ./configure with the flags you want.
 
-    RT defaults to installing in /opt/rt4 with MySQL as its database. It
+    RT defaults to installing in /opt/rt5 with MySQL as its database. It
     tries to guess which of www-data, www, apache or nobody your
     webserver will run as, but you can override that behavior.  Note
-    that the default install directory in /opt/rt4 does not work under
+    that the default install directory in /opt/rt5 does not work under
     SELinux's default configuration.
 
     If you are upgrading from a previous version of RT, please review
@@ -115,7 +115,7 @@ GENERAL INSTALLATION
 
       To configure RT with the web installer, run:
 
-          /opt/rt4/sbin/rt-server
+          /opt/rt5/sbin/rt-server
 
       and follow the instructions.  Once completed, you should now have a
       working RT instance running with the standalone rt-server.  Press
@@ -180,7 +180,7 @@ GENERAL INSTALLATION
     logout for inactive sessions. For more information about how to do
     that, run:
 
-        perldoc /opt/rt4/sbin/rt-clean-sessions
+        perldoc /opt/rt5/sbin/rt-clean-sessions
 
  8) Set up users, groups, queues, scrips and access control.
 
@@ -199,10 +199,10 @@ GENERAL INSTALLATION
     If your task scheduler is cron, you can configure it by
     adding the following lines as /etc/cron.d/rt:
 
-        0 0 * * * root /opt/rt4/sbin/rt-email-digest -m daily
-        0 0 * * 0 root /opt/rt4/sbin/rt-email-digest -m weekly
-        0 * * * * root /opt/rt4/sbin/rt-email-dashboards
-        0 0 * * * root /opt/rt4/sbin/rt-externalize-attachments
+        0 0 * * * root /opt/rt5/sbin/rt-email-digest -m daily
+        0 0 * * 0 root /opt/rt5/sbin/rt-email-digest -m weekly
+        0 * * * * root /opt/rt5/sbin/rt-email-dashboards
+        0 0 * * * root /opt/rt5/sbin/rt-externalize-attachments
 
 10) Configure the RT email gateway.  To let email flow to your RT
     server, you need to add a few lines of configuration to your mail
@@ -212,14 +212,14 @@ GENERAL INSTALLATION
     Add the following lines to /etc/aliases (or your local equivalent)
     on your mail server:
 
-        rt:         "|/opt/rt4/bin/rt-mailgate --queue general --action correspond --url http://rt.example.com/"
-        rt-comment: "|/opt/rt4/bin/rt-mailgate --queue general --action comment --url http://rt.example.com/"
+        rt:         "|/opt/rt5/bin/rt-mailgate --queue general --action correspond --url http://rt.example.com/"
+        rt-comment: "|/opt/rt5/bin/rt-mailgate --queue general --action comment --url http://rt.example.com/"
 
     You'll need to add similar lines for each queue you want to be able to
     send email to. To find out more about how to configure RT's email
     gateway, type:
 
-           perldoc /opt/rt4/bin/rt-mailgate
+           perldoc /opt/rt5/bin/rt-mailgate
 
 11) Set up full text search
 
diff --git a/config.layout b/config.layout
index 15fcf0833d..f8eb9dd33e 100644
--- a/config.layout
+++ b/config.layout
@@ -5,7 +5,7 @@
 ##  - layouts can be loaded with configure's --enable-layout=ID option
 ##  - when no --enable-layout option is given, the default layout is `RT'
 ##  - a trailing plus character (`+') on paths is replaced with a
-##    `/<target>' suffix where <target> is currently hardcoded to 'rt3'.
+##    `/<target>' suffix where <target> is currently hardcoded to 'rt5'.
 ##    (This may become a configurable parameter at some point.)
 ##
 ##  The following variables must _all_ be set:
@@ -15,9 +15,9 @@
 ##  (This can be seen in m4/rt_layout.m4.)
 ##
 
-#   Default RT3 path layout.
-<Layout RT3>
-  prefix:		/opt/rt4
+#   Default RT5 path layout.
+<Layout RT5>
+  prefix:		/opt/rt5
   exec_prefix:		${prefix}
   bindir:		${exec_prefix}/bin
   sbindir:		${exec_prefix}/sbin
@@ -161,7 +161,7 @@
 
 
 <Layout relative>
-  prefix:		/opt/rt4
+  prefix:		/opt/rt5
   exec_prefix:		${prefix}
   bindir:		bin
   sbindir:		sbin
@@ -188,7 +188,7 @@
   customplugindir:  ${customdir}/plugins
 </Layout>
 <Layout vessel>
-  prefix:		/opt/rt4
+  prefix:		/opt/rt5
   exec_prefix:		${prefix}
   bindir:		bin
   sbindir:		sbin
diff --git a/configure.ac b/configure.ac
index e10ccf199a..69f6d0dbc3 100755
--- a/configure.ac
+++ b/configure.ac
@@ -61,7 +61,7 @@ fi
 AC_SUBST(WEB_HANDLER)
 
 dnl Defaults paths for installation
-AC_PREFIX_DEFAULT([/opt/rt4])
+AC_PREFIX_DEFAULT([/opt/rt5])
 RT_ENABLE_LAYOUT
 
 
@@ -175,9 +175,9 @@ AC_SUBST(DB_DBA)
 dnl DB_DATABASE
 AC_ARG_WITH(db-database,
 	    AC_HELP_STRING([--with-db-database=DBNAME],
-	    		   [name of the database to use (default: rt4)]),
+	    		   [name of the database to use (default: rt5)]),
             DB_DATABASE=$withval,
-            DB_DATABASE=rt4)
+            DB_DATABASE=rt5)
 AC_SUBST(DB_DATABASE)
 
 dnl DB_RT_USER
diff --git a/devel/docs/UPGRADING-4.6 b/devel/docs/UPGRADING-5.0
similarity index 93%
rename from devel/docs/UPGRADING-4.6
rename to devel/docs/UPGRADING-5.0
index 2b25f206ed..eec63f0ef0 100644
--- a/devel/docs/UPGRADING-4.6
+++ b/devel/docs/UPGRADING-5.0
@@ -1,6 +1,6 @@
 =head1 UPGRADING FROM RT 4.4.0 and greater
 
-This documentation notes internals changes between the 4.4 and 4.6
+This documentation notes internals changes between the 4.4 and 5.0
 series that are primarily of interest to developers writing extensions
 or local customizations.  It is not an exhaustive list.
 
diff --git a/devel/tools/rt-apache b/devel/tools/rt-apache
index 1bc0761e1d..bdf05e5304 100755
--- a/devel/tools/rt-apache
+++ b/devel/tools/rt-apache
@@ -56,7 +56,7 @@ use Pod::Usage;
 use File::Spec::Functions qw(rel2abs);
 
 my %opt = (
-    root => ($ENV{RTHOME} || "/opt/rt4"),
+    root => ($ENV{RTHOME} || "/opt/rt5"),
 
     fcgid   => 0,
     fastcgi => 0,
@@ -239,7 +239,7 @@ C<WebPort> configuration, and adjust its defaults accordingly.
 =item --root B<path>
 
 The path to the RT install to serve.  This defaults to the C<RTHOME>
-environment variable, or C</opt/rt4>.
+environment variable, or C</opt/rt5>.
 
 =item --fastcgi, --fcgid, --perl
 
diff --git a/docs/UPGRADING-3.8 b/docs/UPGRADING-3.8
index f6df1984d3..9d22711e03 100644
--- a/docs/UPGRADING-3.8
+++ b/docs/UPGRADING-3.8
@@ -7,13 +7,13 @@ authentication itself, it may still store these weak password hashes -- using
 ExternalAuth does not guarantee that you are not vulnerable!  To upgrade
 stored passwords to a stronger hash, run:
 
-    /opt/rt4/etc/upgrade/vulnerable-passwords
+    /opt/rt5/etc/upgrade/vulnerable-passwords
 
 We have also proved that it's possible to delete a notable set of records from
 Transactions table without losing functionality. To delete these records, run
 the following script:
 
-    /opt/rt4/etc/upgrade/shrink-transactions-table
+    /opt/rt5/etc/upgrade/shrink-transactions-table
 
 If you chose not to run the shrink_cgm_table.pl script when you upgraded to
 3.8, you should read more about it below and run it at this point.
@@ -129,7 +129,7 @@ CachedGroupMembers table without losing functionality; in fact, failing to do
 so may result in occasional problems where RT miscounts users, particularly in
 the chart functionality.  To delete these records run the following script:
 
-    /opt/rt4/etc/upgrade/shrink-cgm-table
+    /opt/rt5/etc/upgrade/shrink-cgm-table
 
 After you run this, you will have significantly reduced the number of records
 in your CachedGroupMembers table, and may need to tell your database to
@@ -165,7 +165,7 @@ RT::Action::LinearEscalate extension has been integrated into core, so you
 MUST uninstall it before upgrading.
 
 RT::Extension::iCal has been integrated into core, so you MUST uninstall it
-before upgrading. In addition, you must run /opt/rt4/etc/upgrade/3.8-ical-extension
+before upgrading. In addition, you must run /opt/rt5/etc/upgrade/3.8-ical-extension
 script to convert old data.
 
 
diff --git a/docs/UPGRADING-4.0 b/docs/UPGRADING-4.0
index 0a3249c3ff..e19bb4f7be 100644
--- a/docs/UPGRADING-4.0
+++ b/docs/UPGRADING-4.0
@@ -5,17 +5,17 @@ extension writers.  The following is tailored to RT administrators:
 
 =head2 Common issues
 
-RT now defaults to a database name of rt4 and an installation root of
-/opt/rt4.
+RT now defaults to a database name of rt5 and an installation root of
+/opt/rt5.
 
 If you are upgrading, you will likely want to specify that your database is
-still named rt3 (or import a backup of your database as rt4 so that you can
+still named rt3 (or import a backup of your database as rt5 so that you can
 feel more confident making the upgrade).
 
-You really shouldn't install RT4 into your RT3 source tree (/opt/rt3) and
+You really shouldn't install RT5 into your RT3 source tree (/opt/rt3) and
 instead should be using make install to set up a clean environment.  This will
 allow you to evaluate your local modifications and configuration changes as
-you migrate to 4.0.
+you migrate to 4.0 or 5.0.
 
 If you choose to force RT to install into /opt/rt3, or another existing RT 3.x
 install location, you will encounter issues because we removed the _Overlay
@@ -37,7 +37,7 @@ new configuration.
 
 RT::Extension::CustomField::Checkbox has been integrated into core, so you
 MUST uninstall it before upgrading. In addition, you must run
-/opt/rt4/etc/upgrade/4.0-customfield-checkbox-extension script to convert old
+/opt/rt5/etc/upgrade/4.0-customfield-checkbox-extension script to convert old
 data.
 
 =head2 RT_SiteConfig.pm
@@ -62,29 +62,29 @@ the new schema.
 
 =head2 Upgrading from installs with RTFM
 
-RT4 now includes an Articles functionality, merged from RTFM.  You should not
+RT5 now includes an Articles functionality, merged from RTFM.  You should not
 install and enable the RT::FM plugin separately on RT 4.  If you have existing
-data in RTFM, you can use the /opt/rt4/etc/upgrade/upgrade-articles script to upgrade
+data in RTFM, you can use the /opt/rt5/etc/upgrade/upgrade-articles script to upgrade
 that data.
 
 When running normal upgrade scripts, RT will warn if it finds existing RTFM
 tables that contain data and point you to the upgrade-articles script.
 
 This script should be run from your RT tarball.  It will immediately begin
-populating your new RT4 tables with data from RTFM.  If you have browsed in
-the RT4 UI and created new classes and articles, this script will fail
+populating your new RT5 tables with data from RTFM.  If you have browsed in
+the RT5 UI and created new classes and articles, this script will fail
 spectacularly.  Do *not* run this except on a fresh upgrade of RT.
 
 You can run this as
 
-  /opt/rt4/etc/upgrade/upgrade-articles
+  /opt/rt5/etc/upgrade/upgrade-articles
 
 It will ouput a lot of data about what it is changing.  You should review this
 for errors.
 
 If you are running RTFM 2.0 with a release of RT, there isn't currently an
 upgrade script that can port RTFM's internal CustomField and Transaction data
-to RT4.
+to RT5.
 
 You must also remove RT::FM from your @Plugins line in RT_SiteConfig.pm.
 
@@ -113,7 +113,7 @@ duplicate names.  Although the groups will still function, some parts of the
 interface (rights management, subgroup membership) may not work as expected
 with duplicate names.  Running
 
-    /opt/rt4/sbin/rt-validator --check
+    /opt/rt5/sbin/rt-validator --check
 
 will report duplicate group names, and running it with --resolve will fix
 duplicates by appending the group id to the name.
@@ -241,7 +241,7 @@ version of DBD::Pg RT will stop the upgrade during the 3.9.8 step and
 remind you to upgrade DBD::Pg.  If this happens, you can re-start your
 upgrade by running:
 
-   /opt/rt4/sbin/rt-setup-database --action insert --datadir etc/upgrade/3.9.8/
+   /opt/rt5/sbin/rt-setup-database --action insert --datadir etc/upgrade/3.9.8/
 
 Followed by re-running make upgrade-database and answering 3.9.8 when
 prompted for which RT version you're upgrading from.
diff --git a/docs/UPGRADING-4.2 b/docs/UPGRADING-4.2
index 45a000e876..dae2024a05 100644
--- a/docs/UPGRADING-4.2
+++ b/docs/UPGRADING-4.2
@@ -107,7 +107,7 @@ extra transactions, and keeping the summed time spent consistent.
 In order to fix the history records of old ticket you can run the following
 command:
 
-    /opt/rt4/etc/upgrade/time-worked-history
+    /opt/rt5/etc/upgrade/time-worked-history
 
 This command deletes records from the Transactions table. This script can only fix
 TimeWorked mismatches, but not TimeLeft or TimeEstimated.
@@ -130,11 +130,11 @@ existing installs.  While new installs use the HTML templates by default,
 upgrades from older versions don't automatically switch to the HTML versions.
 To switch existing scrips, run:
 
-    /opt/rt4/etc/upgrade/switch-templates-to html
+    /opt/rt5/etc/upgrade/switch-templates-to html
 
 To switch from HTML back to text, run:
 
-    /opt/rt4/etc/upgrade/switch-templates-to text
+    /opt/rt5/etc/upgrade/switch-templates-to text
 
 =item *
 
diff --git a/docs/UPGRADING-4.4 b/docs/UPGRADING-4.4
index 1fc0fe1339..723478adb9 100644
--- a/docs/UPGRADING-4.4
+++ b/docs/UPGRADING-4.4
@@ -515,7 +515,7 @@ declared, so you may remove Set($ExternalAuth, 1); from your config.
 =item *
 
 We've deprecated the /Admin/CustomFields/Modify.html callback named
-AfterUpdateCustomFieldValue. It will be removed in RT 4.6.
+AfterUpdateCustomFieldValue. It will be removed in RT 5.0.
 
 =back
 
diff --git a/docs/authentication.pod b/docs/authentication.pod
index 433d8b9207..f6c6af5257 100644
--- a/docs/authentication.pod
+++ b/docs/authentication.pod
@@ -101,7 +101,7 @@ An example of using LDAP authentication and HTTP Basic auth:
 All of the following options control the behavior of RT's built-in external
 authentication which relies on the web server.  They are documented in detail
 under the "Authorization and user configuration" section of L<RT_Config>
-and you can read the documentation by running C<perldoc /opt/rt4/etc/RT_Config.pm>.
+and you can read the documentation by running C<perldoc /opt/rt5/etc/RT_Config.pm>.
 
 The list below is meant to make you aware of what's available.  You should read
 the full documentation as described above.
diff --git a/docs/automating_rt.pod b/docs/automating_rt.pod
index 11960c38bd..c6380331ce 100644
--- a/docs/automating_rt.pod
+++ b/docs/automating_rt.pod
@@ -15,7 +15,7 @@ different ways you can automate tasks.
 
 All of the options for L<rt-crontool> are documented with the tool itself:
 
-    $ perldoc /opt/rt4/bin/rt-crontool
+    $ perldoc /opt/rt5/bin/rt-crontool
 
 and on the Best Practical web site.
 
@@ -62,7 +62,7 @@ Starting with a simple example, this command performs a search and
 displays output, but doesn't do anything to the returned tickets.
 This can be useful for safely testing search criteria.
 
-    /opt/rt4/bin/rt-crontool --search RT::Search::FromSQL \
+    /opt/rt5/bin/rt-crontool --search RT::Search::FromSQL \
         --search-arg "Owner = 'root'" \
         --action RT::Action \
         --verbose \
@@ -84,7 +84,7 @@ You can auto-set status based on any criteria you can define in
 a TicketSQL statement. For example, this command will resolve all
 active tickets that haven't been acted on in a month or more:
 
-    /opt/rt4/bin/rt-crontool --search RT::Search::FromSQL \
+    /opt/rt5/bin/rt-crontool --search RT::Search::FromSQL \
         --search-arg "(Status != 'resolved' AND Status != 'rejected') \
                        AND LastUpdated <= '1 month ago'" \
         --action RT::Action::SetStatus \
@@ -114,7 +114,7 @@ the selected tickets, and the transition must be allowed.
 The following command records a comment on all tickets returned from the
 query -- in this case, tickets that are new and unowned after 3 days.
 
-    /opt/rt4/bin/rt-crontool --search RT::Search::FromSQL \
+    /opt/rt5/bin/rt-crontool --search RT::Search::FromSQL \
         --search-arg "Owner = 'Nobody' AND Status = 'new' \
                       AND Created < '3 days ago'" \
         --action RT::Action::RecordComment \
@@ -138,7 +138,7 @@ using the L<RT::Action::RecordCorrespondence> module.
 While the example above sends notifications as a side-effect of recording
 a comment, you can also send notifications directly.
 
-    /opt/rt4/bin/rt-crontool --search RT::Search::FromSQL \
+    /opt/rt5/bin/rt-crontool --search RT::Search::FromSQL \
         --search-arg "(Status != 'resolved' AND Status != 'rejected') \
                       AND Queue = 'Project Work'" \
         --condition RT::Condition::Overdue \
@@ -178,7 +178,7 @@ date and are still not resolved have priority escalated automatically.
 
 This command escalates tickets in a designated queue:
 
-    /opt/rt4/bin/rt-crontool --search RT::Search::ActiveTicketsInQueue \
+    /opt/rt5/bin/rt-crontool --search RT::Search::ActiveTicketsInQueue \
         --search-arg "General" \
         --action RT::Action::EscalatePriority
 
@@ -186,7 +186,7 @@ The C<--search-arg> is the name of the queue in which to escalate tickets.
 As shown in previous examples, you can also set your criteria using a
 TicketSQL query as well:
 
-    /opt/rt4/bin/rt-crontool --search RT::Search::FromSQL \
+    /opt/rt5/bin/rt-crontool --search RT::Search::FromSQL \
         --search-arg "(Status='new' OR Status='open') AND Due > 'Jan 1, 1970'" \
         --action RT::Action::EscalatePriority
 
@@ -224,7 +224,7 @@ appropriate transaction object for your conditions and actions. For
 example, if you had an action you wanted to perform based on the content
 of the last reply on stalled tickets, you could do something like:
 
-    /opt/rt4/bin/rt-crontool --search RT::Search::FromSQL \
+    /opt/rt5/bin/rt-crontool --search RT::Search::FromSQL \
         --search-arg "Status = 'stalled' AND Queue = 'General'" \
         --action RT::Action::CheckLastCorrespond \
         --transaction last \
diff --git a/docs/backups.pod b/docs/backups.pod
index 0f9507e304..88e0e63022 100644
--- a/docs/backups.pod
+++ b/docs/backups.pod
@@ -32,15 +32,15 @@ the C<sessions> schema, however.
 
 Database specific notes and example backup commands for each database are
 below.  Adjust the commands as necessary for connection details such as
-database name (C<rt4> is the placeholder below), user, password, host, etc.
+database name (C<rt5> is the placeholder below), user, password, host, etc.
 You should put the example commands into a shell script for backup and setup a
 cronjob.  Make sure output from cron goes to someone who reads mail!  (Or into
 RT. :)
 
 =head3 MySQL and MariaDB
 
-    ( mysqldump rt4 --tables sessions --no-data --single-transaction; \
-      mysqldump rt4 --ignore-table rt4.sessions --single-transaction ) \
+    ( mysqldump rt5 --tables sessions --no-data --single-transaction; \
+      mysqldump rt5 --ignore-table rt5.sessions --single-transaction ) \
         | gzip > rt-`date +%Y%m%d`.sql.gz
 
 The dump will be much faster if you can connect to the MySQL or
@@ -68,14 +68,14 @@ one no longer works or because you want to set up a dev machine to
 test on) you will need to create a fresh database and database user
 for RT to use.  RT can do that for you using:
 
-    /opt/rt4/sbin/rt-setup-database --action create,acl
+    /opt/rt5/sbin/rt-setup-database --action create,acl
 
-By default, this will create an rt4 database and an rt_user user.  If
+By default, this will create an rt5 database and an rt_user user.  If
 you've specified a custom password in RT_SiteConfig.pm, RT will use
 that.  Once the database and user exist, you can restore from your
 backup using:
 
-    gunzip -c rt-20141014.sql.gz | mysql -uroot -p rt4
+    gunzip -c rt-20141014.sql.gz | mysql -uroot -p rt5
 
 Changing -uroot -p as needed to access the database as a user with
 enough rights to handle creating tables.
@@ -86,19 +86,19 @@ If something terrible happened this morning and you want to roll back to
 your backups, or if you want to update a dev server using your backups,
 this is straightforward on MySQL and MariaDB.
 
-    gunzip -c rt-20141014.sql.gz | mysql -uroot -p rt4
+    gunzip -c rt-20141014.sql.gz | mysql -uroot -p rt5
 
 MySQL and MariaDB will drop any existing tables before recreating and
 repopulating them.  It will leave the database and the rt_user
 untouched.  This is not suitable for restoring on a fresh database
-install since there will be no rt4 database or rt_user user.
+install since there will be no rt5 database or rt_user user.
 
 =back
 
 =head3 PostgreSQL
 
-    ( pg_dump rt4 --table=sessions --schema-only; \
-      pg_dump rt4 --exclude-table=sessions ) \
+    ( pg_dump rt5 --table=sessions --schema-only; \
+      pg_dump rt5 --exclude-table=sessions ) \
         | gzip > rt-`date +%Y%m%d`.sql.gz
 
 =head4 Restoring from backups
@@ -112,7 +112,7 @@ one no longer works or because you want to set up a dev machine to
 test on) you will need to create a fresh database and database user
 for RT to use.  RT can do part of that for you using:
 
-    /opt/rt4/sbin/rt-setup-database --action create
+    /opt/rt5/sbin/rt-setup-database --action create
 
 You will need to create the rt_user separately.
 
@@ -126,7 +126,7 @@ Once the database and user exist, you can restore from your backup which
 will create tables, insert data and configure rights for your rt_user
 user.
 
-    gunzip -c rt-20141014.sql.gz | psql rt4
+    gunzip -c rt-20141014.sql.gz | psql rt5
 
 This may need to be run as the postgres user or some other admin level
 user who can create tables.
@@ -138,15 +138,15 @@ your backups, or if you want to update a dev server using your backups,
 you will need to drop your database and recreate a fresh one to restore
 into.  RT can drop and recreate the database for you using:
 
-    /opt/rt4/sbin/rt-setup-database --action drop
-    /opt/rt4/sbin/rt-setup-database --action create
+    /opt/rt5/sbin/rt-setup-database --action drop
+    /opt/rt5/sbin/rt-setup-database --action create
 
 Remember that this will completely destroy the existing data and create
 a fresh database.  Your rt_user user will remain untouched.  Once this
 is complete, you can restore from your backup which will create tables
 and insert data and configure rights for the rt_user.
 
-    gunzip -c rt-20141014.sql.gz | psql rt4
+    gunzip -c rt-20141014.sql.gz | psql rt5
 
 =item After Restoring
 
@@ -163,7 +163,7 @@ You will want to back up, at the very least, the following directories and files
 
 =over 4
 
-=item /opt/rt4
+=item /opt/rt5
 
 RT's source code, configuration, GPG data, and plugins.  Your install location
 may be different, of course.
@@ -216,7 +216,7 @@ regarding backups.
 
 Simply saving a tarball should be sufficient, with something like:
 
-    tar czvpf rt-backup-`date +%Y%m%d`.tar.gz /opt/rt4 /etc/aliases /etc/httpd ...
+    tar czvpf rt-backup-`date +%Y%m%d`.tar.gz /opt/rt5 /etc/aliases /etc/httpd ...
 
 Be sure to include all the directories and files you enumerated above!
 
diff --git a/docs/charts.pod b/docs/charts.pod
index 7e2bb0fb54..30b9ba69a5 100644
--- a/docs/charts.pod
+++ b/docs/charts.pod
@@ -33,7 +33,7 @@ In your C<RT_SiteConfig.pm> set C<$DisableGD> to 0:
 
 Run the RT dependency checker:
 
-    $ /opt/rt4/sbin/rt-test-dependencies --with-gd --verbose
+    $ /opt/rt5/sbin/rt-test-dependencies --with-gd --verbose
 
 =item 3
 
@@ -49,7 +49,7 @@ C<gd-devel>, C<gd2-dev>, or something similar.
 
 Install Perl GD modules:
 
-    $ /opt/rt4/sbin/rt-test-dependencies --with-gd --install --verbose
+    $ /opt/rt5/sbin/rt-test-dependencies --with-gd --install --verbose
 
 
 =back
diff --git a/docs/customizing/scrip_conditions_and_action.pod b/docs/customizing/scrip_conditions_and_action.pod
index b4c6257b08..2e7de72111 100644
--- a/docs/customizing/scrip_conditions_and_action.pod
+++ b/docs/customizing/scrip_conditions_and_action.pod
@@ -52,7 +52,7 @@ the configuration at Admin > Global > Conditions and click on 'On Resolve'.
 The condition has a Name, which is displayed in the Condition dropdown when
 you create a scrip, and a Description to identify it. The Condition Module is
 the RT module that executes the condition, in this case C<StatusChange>. You
-can find the code in C</opt/rt4/lib/RT/Condition/StatusChange.pm> and view
+can find the code in C</opt/rt5/lib/RT/Condition/StatusChange.pm> and view
 the documentation at L<RT::Condition::StatusChange>.
 
 Parameters to Pass shows the actual parameter that is passed to the module
@@ -82,7 +82,7 @@ Now assume we have an additional requirement to check if a custom field value
 we'll need to write some code. To start, create a new file for your new
 SpecialReviewNeeded module here:
 
-    /opt/rt4/local/lib/RT/Condition/SpecialReviewNeeded.pm
+    /opt/rt5/local/lib/RT/Condition/SpecialReviewNeeded.pm
 
 Creating it in the C<local> directory will keep it safe when you apply
 RT upgrades in the future.
@@ -150,7 +150,7 @@ existing actions on the action display page at Admin > Global > Actions.
 You find Notify AdminCcs, which might be close. Taking
 a quick look you see it has a Name and Description, like conditions, and
 the module it calls is C<Notify>, which can be found at
-C</opt/rt4/lib/RT/Action/Notify.pm>.
+C</opt/rt5/lib/RT/Action/Notify.pm>.
 
 The Parameter to Pass is AdminCc, and if you look at other notification
 actions you'll see many use Notify and just pass a different ticket role.
diff --git a/docs/customizing/styling_rt.pod b/docs/customizing/styling_rt.pod
index 2d8fd24fdc..590019d030 100644
--- a/docs/customizing/styling_rt.pod
+++ b/docs/customizing/styling_rt.pod
@@ -18,11 +18,11 @@ RT comes with the following themes:
 
 =item elevator-light
 
-The default light theme for RT 4.6
+The default light theme for RT 5.0
 
 =item elevator-dark
 
-The dark theme for RT 4.6
+The dark theme for RT 5.0
 
 =back
 
@@ -145,7 +145,7 @@ this case, you'll want to create your own CSS directory.
 
 As shown above, the C<local> directory is the place to put
 local modifications to RT. Run the following commands in your
-C</opt/rt4> directory (or wherever your RT is installed) to get
+C</opt/rt5> directory (or wherever your RT is installed) to get
 started:
 
     $ mkdir -p local/static/css/localstyle
@@ -156,7 +156,7 @@ started:
 
 You can call your "localstyle" directory whatever you want and you don't
 have to copy the elevator-light theme to start from, but it's a good place
-to start off for RT4.
+to start off for RT 5.
 
 Now set C<$WebDefaultStylesheet> in RT_SiteConfig.pm to the new directory
 name you selected, for example:
diff --git a/docs/extending/clickable_links.pod b/docs/extending/clickable_links.pod
index d52ea59965..15fefb5e05 100644
--- a/docs/extending/clickable_links.pod
+++ b/docs/extending/clickable_links.pod
@@ -130,7 +130,7 @@ groups of your regexps are passed to action.
 
 =head2 Custom MakeClicky action example
 
-Create a new file F</opt/rt4/local/html/Callbacks/MyCallbacks/Elements/MakeClicky/Default>
+Create a new file F</opt/rt5/local/html/Callbacks/MyCallbacks/Elements/MakeClicky/Default>
 with the content:
 
   <%ARGS>
diff --git a/docs/extending/external_custom_fields.pod b/docs/extending/external_custom_fields.pod
index 5e70d3e408..85758796ef 100644
--- a/docs/extending/external_custom_fields.pod
+++ b/docs/extending/external_custom_fields.pod
@@ -10,13 +10,13 @@ data from the external source.
 =head2 Introduction into writing source of values
 
 For each type of data source that you want, you'll need to put a file in
-F</opt/rt4/local/lib/RT/CustomFieldValues/> (or equivalent if you
-installed RT into someplace other than F</opt/rt4>). To get a sense of
+F</opt/rt5/local/lib/RT/CustomFieldValues/> (or equivalent if you
+installed RT into someplace other than F</opt/rt5>). To get a sense of
 the code that you'll need to write, take a look at the code in
-F</opt/rt4/lib/RT/CustomFieldValues/Groups.pm> for a simple example
+F</opt/rt5/lib/RT/CustomFieldValues/Groups.pm> for a simple example
 which just uses RT's API to pull in a list of RT's groups.
 
-Running C<perldoc /opt/rt4/lib/RT/CustomFieldValues/External.pm> will
+Running C<perldoc /opt/rt5/lib/RT/CustomFieldValues/External.pm> will
 show you the documentation for the API that needs to be fulfilled;
 copying and editing the C<Groups> example is probably a fine place to
 start.
diff --git a/docs/extensions.pod b/docs/extensions.pod
index 0dde5f8eb2..251b196463 100644
--- a/docs/extensions.pod
+++ b/docs/extensions.pod
@@ -29,7 +29,7 @@ as follows:
 
 B<Run C<perl Makefile.PL>> to check for dependencies, and minimum
 versions of RT.  If your RT is in an unusual location (not
-C</opt/rt4/>), you may need to set the C<RTHOME> environment variable to
+C</opt/rt5/>), you may need to set the C<RTHOME> environment variable to
 the root of your RT location.
 
 =item 2.
@@ -76,9 +76,9 @@ documentation carefully.
 Next, B<clear the cache>.  RT caches the files it serves, and installing
 a plugin requires clearing this cache to ensure that the changes are
 served.  This is done by removing files in the
-F</opt/rt4/var/mason_data/obj> directory:
+F</opt/rt5/var/mason_data/obj> directory:
 
-   rm -rf /opt/rt4/var/mason_data/obj
+   rm -rf /opt/rt5/var/mason_data/obj
 
 This step may not be necessary if the extension does not affect RT's
 display.
diff --git a/docs/full_text_indexing.pod b/docs/full_text_indexing.pod
index 5b94399ebc..614e89f47f 100644
--- a/docs/full_text_indexing.pod
+++ b/docs/full_text_indexing.pod
@@ -21,12 +21,12 @@ Postgres 8.3 and above support full-text searching natively; to set up
 the required C<ts_vector> column, and create either a C<GiN> or C<GiST>
 index on it, run:
 
-    /opt/rt4/sbin/rt-setup-fulltext-index
+    /opt/rt5/sbin/rt-setup-fulltext-index
 
 If you have a non-standard database administrator username or password,
 you may need to pass the C<--dba> or C<--dba-password> options:
 
-    /opt/rt4/sbin/rt-setup-fulltext-index --dba postgres --dba-password secret
+    /opt/rt5/sbin/rt-setup-fulltext-index --dba postgres --dba-password secret
 
 This will then tokenize and index all existing attachments in your
 database; it may take quite a while if your database already has a large
@@ -41,7 +41,7 @@ webserver after making these changes.
 
 To keep the index up-to-date, you will need to run:
 
-    /opt/rt4/sbin/rt-fulltext-indexer
+    /opt/rt5/sbin/rt-fulltext-indexer
 
 ...at regular intervals.  By default, this will only tokenize up to 200
 tickets at a time; you can adjust this upwards by passing C<--limit
@@ -54,7 +54,7 @@ and end those processes normally (with exit code 0) using the C<--quiet>
 option; this is particularly useful when running the command via
 C<cron>:
 
-    /opt/rt4/sbin/rt-fulltext-indexer --quiet
+    /opt/rt5/sbin/rt-fulltext-indexer --quiet
 
 =head1 MYSQL and MariaDB
 
@@ -72,12 +72,12 @@ index this content without creating an additional table.  To create
 the required table (which is InnoDB on versions of MySQL and MariaDB
 which support it), run:
 
-    /opt/rt4/sbin/rt-setup-fulltext-index
+    /opt/rt5/sbin/rt-setup-fulltext-index
 
 If you have a non-standard database administrator username or password,
 you may need to pass the C<--dba> or C<--dba-password> options:
 
-    /opt/rt4/sbin/rt-setup-fulltext-index --dba root --dba-password secret
+    /opt/rt5/sbin/rt-setup-fulltext-index --dba root --dba-password secret
 
 This will then tokenize and index all existing attachments in your
 database; it may take quite a while if your database already has a large
@@ -92,7 +92,7 @@ webserver after making these changes.
 
 To keep the index up-to-date, you will need to run:
 
-    /opt/rt4/sbin/rt-fulltext-indexer
+    /opt/rt5/sbin/rt-fulltext-indexer
 
 ...at regular intervals.  By default, this will only tokenize up to 200
 tickets at a time; you can adjust this upwards by passing C<--limit
@@ -105,7 +105,7 @@ and end those processes normally (with exit code 0) using the C<--quiet>
 option; this is particularly useful when running the command via
 C<cron>:
 
-    /opt/rt4/sbin/rt-fulltext-indexer --quiet
+    /opt/rt5/sbin/rt-fulltext-indexer --quiet
 
 =head3 Caveats
 
@@ -151,12 +151,12 @@ L<http://sphinxsearch.com/docs/current.html#sphinxse-mysql51>.
 Once MySQL has been recompiled with SphinxSE, and Sphinx itself is
 installed, you may create the required SphinxSE communication table via:
 
-    /opt/rt4/sbin/rt-setup-fulltext-index
+    /opt/rt5/sbin/rt-setup-fulltext-index
 
 If you have a non-standard database administrator username or password,
 you may need to pass the C<--dba> or C<--dba-password> options:
 
-    /opt/rt4/sbin/rt-setup-fulltext-index --dba root --dba-password secret
+    /opt/rt5/sbin/rt-setup-fulltext-index --dba root --dba-password secret
 
 This will also provide you with the appropriate C<%FullTextSearch>
 configuration to add to your F<RT_SiteConfig.pm>; you will need to
@@ -219,12 +219,12 @@ C<RT_SiteConfig.pm> must be updated.
 Oracle supports full-text indexing natively using the Oracle Text
 package.  Once Oracle Text is installed and configured, run:
 
-    /opt/rt4/sbin/rt-setup-fulltext-index
+    /opt/rt5/sbin/rt-setup-fulltext-index
 
 If you have a non-standard database administrator username or password,
 you may need to pass the C<--dba> or C<--dba-password> options:
 
-    /opt/rt4/sbin/rt-setup-fulltext-index --dba sysdba --dba-password secret
+    /opt/rt5/sbin/rt-setup-fulltext-index --dba sysdba --dba-password secret
 
 This will create an Oracle CONTEXT index on the Content column in the
 Attachments table, as well as several preferences, functions and
@@ -237,7 +237,7 @@ F<RT_SiteConfig>.
 To update the index, you will need to run the following at regular
 intervals:
 
-    /opt/rt4/sbin/rt-fulltext-indexer
+    /opt/rt5/sbin/rt-fulltext-indexer
 
 This, in effect, simply runs:
 
@@ -248,7 +248,7 @@ This, in effect, simply runs:
 The amount of memory used for the sync can be controlled with the
 C<--memory> option:
 
-    /opt/rt4/sbin/rt-fulltext-indexer --memory 10M
+    /opt/rt5/sbin/rt-fulltext-indexer --memory 10M
 
 If there is already an instance of C<rt-fulltext-indexer> running, new
 ones will exit abnormally (with exit code 1) and the error message
@@ -257,7 +257,7 @@ and end those processes normally (with exit code 0) using the C<--quiet>
 option; this is particularly useful when running the command via
 C<cron>:
 
-    /opt/rt4/sbin/rt-fulltext-indexer --quiet
+    /opt/rt5/sbin/rt-fulltext-indexer --quiet
 
 Instead of being run via C<cron>, this may instead be run via a
 DBMS_JOB; read the B<Managing DML Operations for a CONTEXT Index>
diff --git a/docs/images/quote-selection-ticket-update.png b/docs/images/quote-selection-ticket-update.png
index 326115d6c1..94c697400b 100644
Binary files a/docs/images/quote-selection-ticket-update.png and b/docs/images/quote-selection-ticket-update.png differ
diff --git a/docs/incremental-export/README b/docs/incremental-export/README
index 14716bcc5a..21c2c6f57f 100644
--- a/docs/incremental-export/README
+++ b/docs/incremental-export/README
@@ -23,7 +23,7 @@ For additional information on the following steps, please review
 rt-importer --help and rt-serializer --help
 
 During your final cutover, you will bring down the production web and mail servers for the final time.
-Run /opt/rt4/sbin/rt-serializer --incremental
+Run /opt/rt5/sbin/rt-serializer --incremental
 This will create a directory named $Organization:date
 Once this has completed, you will copy this directory to the new server.
-On the new server, run /opt/rt4/sbin/rt-importer $Organization:date
+On the new server, run /opt/rt5/sbin/rt-importer $Organization:date
diff --git a/docs/initialdata.pod b/docs/initialdata.pod
index f862fde79c..7a58fbb21d 100644
--- a/docs/initialdata.pod
+++ b/docs/initialdata.pod
@@ -513,7 +513,7 @@ to easily create B<Classes>, B<Topics>, or B<Articles> from initialdata files.
 
 =head1 Running an initialdata file
 
-    /opt/rt4/sbin/rt-setup-database --action insert --datafile /path/to/your/initialdata
+    /opt/rt5/sbin/rt-setup-database --action insert --datafile /path/to/your/initialdata
 
 This may prompt you for a database password.
 
diff --git a/docs/reminders.pod b/docs/reminders.pod
index e3af881332..da91a8a1fe 100644
--- a/docs/reminders.pod
+++ b/docs/reminders.pod
@@ -41,7 +41,7 @@ C<rt-crontool> utility to schedule a job to send these emails for you.
 
 To schedule the reminders, add a line like the following to your RT crontab:
 
-    0 6 * * * root /opt/rt4/bin/rt-crontool \
+    0 6 * * * root /opt/rt5/bin/rt-crontool \
                    --search RT::Search::FromSQL \
                    --search-arg 'Type = "reminder" and (Status = "open" or Status = "new")' \
                    --condition RT::Condition::BeforeDue \
diff --git a/docs/rt_perl.pod b/docs/rt_perl.pod
index 513bb596f7..e624091813 100644
--- a/docs/rt_perl.pod
+++ b/docs/rt_perl.pod
@@ -58,7 +58,7 @@ a bug. You can then test just RT and not worry about possible side-effects
 on your system.
 
 You can install this Perl in an alternate location like C</opt/perl>, or
-to make it clear it's for RT, even C</opt/rt4/perl>. To make future
+to make it clear it's for RT, even C</opt/rt5/perl>. To make future
 upgrades easier, install in a version-specific directory like
 C</opt/perl-5.14.2>, then symlink C</opt/perl> to that directory. This
 makes it easy to switch to a newer version of Perl later by installing
diff --git a/docs/web_deployment.pod b/docs/web_deployment.pod
index a6cba442b4..010e4af34f 100644
--- a/docs/web_deployment.pod
+++ b/docs/web_deployment.pod
@@ -15,12 +15,12 @@ because that requires root-level privileges and may conflict with any existing
 listeners. So choose a high port (for example 8080) and start the standalone
 server with:
 
-    /opt/rt4/sbin/rt-server --port 8080
+    /opt/rt5/sbin/rt-server --port 8080
 
 You can also run C<rt-server> with any other PSGI server, for example,
 to use L<Starman>, a high performance preforking server:
 
-    /opt/rt4/sbin/rt-server --server Starman --port 8080
+    /opt/rt5/sbin/rt-server --server Starman --port 8080
 
 =head2 Apache
 
@@ -38,20 +38,20 @@ use Apache to provide authentication.
     # be necessary if your distribution doesn't already set it
     #FastCgiIpcDir /tmp
 
-    FastCgiServer /opt/rt4/sbin/rt-server.fcgi -processes 5 -idle-timeout 300
+    FastCgiServer /opt/rt5/sbin/rt-server.fcgi -processes 5 -idle-timeout 300
 
     <VirtualHost rt.example.com>
         ### Optional apache logs for RT
         # Ensure that your log rotation scripts know about these files
-        # ErrorLog /opt/rt4/var/log/apache2.error
-        # TransferLog /opt/rt4/var/log/apache2.access
+        # ErrorLog /opt/rt5/var/log/apache2.error
+        # TransferLog /opt/rt5/var/log/apache2.access
         # LogLevel debug
 
         AddDefaultCharset UTF-8
 
-        ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
+        ScriptAlias / /opt/rt5/sbin/rt-server.fcgi/
 
-        DocumentRoot "/opt/rt4/share/html"
+        DocumentRoot "/opt/rt5/share/html"
         <Location />
             <IfVersion >= 2.4> # For Apache 2.4
                 Require all granted
@@ -84,15 +84,15 @@ to return to the old default.
     <VirtualHost rt.example.com>
         ### Optional apache logs for RT
         # Ensure that your log rotation scripts know about these files
-        # ErrorLog /opt/rt4/var/log/apache2.error
-        # TransferLog /opt/rt4/var/log/apache2.access
+        # ErrorLog /opt/rt5/var/log/apache2.error
+        # TransferLog /opt/rt5/var/log/apache2.access
         # LogLevel debug
 
         AddDefaultCharset UTF-8
 
-        ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
+        ScriptAlias / /opt/rt5/sbin/rt-server.fcgi/
 
-        DocumentRoot "/opt/rt4/share/html"
+        DocumentRoot "/opt/rt5/share/html"
         <Location />
             <IfVersion >= 2.4> # For Apache 2.4
                 Require all granted
@@ -125,13 +125,13 @@ C<SetHandler modperl>, as the example below uses.
 
     <VirtualHost rt.example.com>
         ### Optional apache logs for RT
-        # ErrorLog /opt/rt4/var/log/apache2.error
-        # TransferLog /opt/rt4/var/log/apache2.access
+        # ErrorLog /opt/rt5/var/log/apache2.error
+        # TransferLog /opt/rt5/var/log/apache2.access
         # LogLevel debug
 
         AddDefaultCharset UTF-8
 
-        DocumentRoot "/opt/rt4/share/html"
+        DocumentRoot "/opt/rt5/share/html"
         <Location />
             <IfVersion >= 2.4> # For Apache 2.4
                 Require all granted
@@ -143,11 +143,11 @@ C<SetHandler modperl>, as the example below uses.
 
             SetHandler modperl
             PerlResponseHandler Plack::Handler::Apache2
-            PerlSetVar psgi_app /opt/rt4/sbin/rt-server
+            PerlSetVar psgi_app /opt/rt5/sbin/rt-server
         </Location>
         <Perl>
             use Plack::Handler::Apache2;
-            Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");
+            Plack::Handler::Apache2->preload("/opt/rt5/sbin/rt-server");
         </Perl>
     </VirtualHost>
 
@@ -165,7 +165,7 @@ C<nginx> requires that you start RT's fastcgi process externally, for
 example using C<spawn-fcgi>:
 
     spawn-fcgi -u www-data -g www-data -a 127.0.0.1 -p 9000 \
-        -- /opt/rt4/sbin/rt-server.fcgi
+        -- /opt/rt5/sbin/rt-server.fcgi
 
 With the nginx configuration:
 
@@ -207,8 +207,8 @@ With the nginx configuration:
         fastcgi.server = (
             "/" => (
                 "rt" => (
-                    "socket"      => "/opt/rt4/var/socket",
-                    "bin-path"    => "/opt/rt4/sbin/rt-server.fcgi",
+                    "socket"      => "/opt/rt5/var/socket",
+                    "bin-path"    => "/opt/rt5/sbin/rt-server.fcgi",
                     "check-local" => "disable",
                     "fix-root-scriptname" => "enable",
                 )
@@ -229,12 +229,12 @@ F<RT_SiteConfig.pm>:
 Then you need to update your Apache configuration to match.  Prefix any RT
 related C<ScriptAlias> and C<Location> directives with C</rt>.  You
 should also make sure C<DocumentRoot> is B<not> set to
-C</opt/rt4/share/html/>, otherwise RT's source will be served from C</>.
+C</opt/rt5/share/html/>, otherwise RT's source will be served from C</>.
 
 For example: if you're using the sample FastCGI config above, you might change
 the relevant directives to:
 
-    ScriptAlias /rt /opt/rt4/sbin/rt-server.fcgi/
+    ScriptAlias /rt /opt/rt5/sbin/rt-server.fcgi/
 
     # Set DocumentRoot as appropriate for the other content you want to serve
     DocumentRoot /var/www
diff --git a/docs/writing_portlets.pod b/docs/writing_portlets.pod
index d9ab82f319..e82e008db5 100644
--- a/docs/writing_portlets.pod
+++ b/docs/writing_portlets.pod
@@ -13,7 +13,7 @@ There are at least two things you have to do to create a portlet:
 
 =item Create the template
 
-Create a Mason template in C</opt/rt4/local/html/Elements> that defines
+Create a Mason template in C</opt/rt5/local/html/Elements> that defines
 your portlet's behaviour.
 
 =item Set C<$HomepageComponents> config
@@ -37,9 +37,9 @@ the "body" (left) or "summary" (right) columns of the home page.
 They can also appear on the Self-Service interface, but have to be
 hard-coded, because Self-Service users don't have the same preferences
 available to them.  You will have to create your element in
-C</opt/rt4/local/html/SelfService/Elements>, then exend the SelfService
-interface to call it.  Copy C</opt/rt4/share/html/SelfService/index.html> to
-C</opt/rt4/local/html/SelfService/index.html>, then edit it to add:
+C</opt/rt5/local/html/SelfService/Elements>, then exend the SelfService
+interface to call it.  Copy C</opt/rt5/share/html/SelfService/index.html> to
+C</opt/rt5/local/html/SelfService/index.html>, then edit it to add:
 
     <& /SelfService/Elements/MyPortlet &>
 
diff --git a/etc/RT_Config.pm.in b/etc/RT_Config.pm.in
index bc6f947b02..3719b35abc 100644
--- a/etc/RT_Config.pm.in
+++ b/etc/RT_Config.pm.in
@@ -571,7 +571,7 @@ value.
 
 For testing purposes, or to simply disable sending mail out into the
 world, you can set C<$MailCommand> to 'mbox' which logs all mail, in
-mbox format, to files in F</opt/rt4/var/> based in the process start
+mbox format, to files in F</opt/rt5/var/> based in the process start
 time.  The 'testfile' option is similar, but the files that it creates
 (under /tmp) are temporary, and removed upon process completion; the
 format is also not mbox-compatable.
@@ -1637,8 +1637,8 @@ Set($HideOneTimeSuggestions, 0);
 This determines the default stylesheet the RT web interface will use.
 RT ships with several themes by default:
 
-  elevator-light  The default light theme for RT 4.6
-  elevator-dark   The dark theme for RT 4.6
+  elevator-light  The default light theme for RT 5
+  elevator-dark   The dark theme for RT 5
 
 This value actually specifies a directory in F<share/static/css/>
 from which RT will try to load the file main.css (which should @import
@@ -3776,7 +3776,7 @@ and accepts.
 
     Set(%ExternalStorage,
         Type => 'Disk',
-        Path => '/opt/rt4/var/attachments',
+        Path => '/opt/rt5/var/attachments',
     );
 
 =cut
diff --git a/etc/upgrade/3.9.8/content b/etc/upgrade/3.9.8/content
index e9a1a324d1..1a39ce84ee 100644
--- a/etc/upgrade/3.9.8/content
+++ b/etc/upgrade/3.9.8/content
@@ -20,6 +20,6 @@ our @Initial = sub {
     my $result = $dbh->selectall_arrayref("SELECT count(*) AS articlecount FROM FM_Articles", { Slice => {} } );
 
     if ($result->[0]{articlecount} > 0) {
-        RT->Logger->error("You appear to have RTFM Articles.  You can upgrade using the /opt/rt4/etc/upgrade/upgrade-articles script.  Read more about it in docs/UPGRADING-4.0");
+        RT->Logger->error("You appear to have RTFM Articles.  You can upgrade using the /opt/rt5/etc/upgrade/upgrade-articles script.  Read more about it in docs/UPGRADING-4.0");
     }
 };
diff --git a/lib/RT.pm b/lib/RT.pm
index d8116cf04d..6116333a40 100644
--- a/lib/RT.pm
+++ b/lib/RT.pm
@@ -765,8 +765,8 @@ our %CORED_PLUGINS = (
     'RT::Extension::ParentTimeWorked' => '4.4',
     'RT::Extension::FutureMailgate' => '4.4',
     'RT::Extension::AdminConditionsAndActions' => '4.4.2',
-    'RT::Extension::RightsInspector' => '4.6',
-    'RT::Extension::ConfigInDatabase' => '4.6',
+    'RT::Extension::RightsInspector' => '5.0',
+    'RT::Extension::ConfigInDatabase' => '5.0',
 );
 
 sub InitPlugins {
diff --git a/lib/RT/Crypt/GnuPG.pm b/lib/RT/Crypt/GnuPG.pm
index 8ebfbf938e..c78a870b65 100644
--- a/lib/RT/Crypt/GnuPG.pm
+++ b/lib/RT/Crypt/GnuPG.pm
@@ -174,7 +174,7 @@ Common options include:
 =item --homedir
 
 The GnuPG home directory where the keyrings are stored; by default it is
-set to F</opt/rt4/var/data/gpg>.
+set to F</opt/rt5/var/data/gpg>.
 
 You can manage this data with the 'gpg' commandline utility using the
 GNUPGHOME environment variable or C<--homedir> option.  Other utilities may
diff --git a/lib/RT/Crypt/SMIME.pm b/lib/RT/Crypt/SMIME.pm
index 4075b8f95b..70bd1ee84e 100644
--- a/lib/RT/Crypt/SMIME.pm
+++ b/lib/RT/Crypt/SMIME.pm
@@ -75,8 +75,8 @@ You should start from reading L<RT::Crypt>.
     Set( %SMIME,
         Enable => 1,
         OpenSSL => '/usr/bin/openssl',
-        Keyring => '/opt/rt4/var/data/smime',
-        CAPath  => '/opt/rt4/var/data/smime/signing-ca.pem',
+        Keyring => '/opt/rt5/var/data/smime',
+        CAPath  => '/opt/rt5/var/data/smime/signing-ca.pem',
         Passphrase => {
             'queue.address at example.com' => 'passphrase',
             '' => 'fallback',
diff --git a/lib/RT/ExternalStorage.pm b/lib/RT/ExternalStorage.pm
index d2c530a7de..084a2539e3 100644
--- a/lib/RT/ExternalStorage.pm
+++ b/lib/RT/ExternalStorage.pm
@@ -61,7 +61,7 @@ RT::ExternalStorage - Store attachments outside the database
 
     Set(%ExternalStorage,
         Type => 'Disk',
-        Path => '/opt/rt4/var/attachments',
+        Path => '/opt/rt5/var/attachments',
     );
 
 =head1 DESCRIPTION
@@ -84,7 +84,7 @@ takes care of moving attachments out of the database at a later time.
 
 =head1 SETUP
 
-=head2 Edit F</opt/rt4/etc/RT_SiteConfig.pm>
+=head2 Edit F</opt/rt5/etc/RT_SiteConfig.pm>
 
 You will need to configure the C<%ExternalStorage> option,
 depending on how and where you want your data stored.
@@ -121,7 +121,7 @@ cron.  For instance, the following F</etc/cron.d/rt> entry will run it
 daily, which may be good to concentrate network or disk usage to times
 when RT is less in use:
 
-    0 0 * * * root /opt/rt4/sbin/rt-externalize-attachments
+    0 0 * * * root /opt/rt5/sbin/rt-externalize-attachments
 
 =head1 CAVEATS
 
diff --git a/lib/RT/ExternalStorage/Disk.pm b/lib/RT/ExternalStorage/Disk.pm
index fc9905f927..1cfac75cb2 100644
--- a/lib/RT/ExternalStorage/Disk.pm
+++ b/lib/RT/ExternalStorage/Disk.pm
@@ -135,7 +135,7 @@ RT::ExternalStorage::Disk - On-disk storage of attachments
 
     Set(%ExternalStorage,
         Type => 'Disk',
-        Path => '/opt/rt4/var/attachments',
+        Path => '/opt/rt5/var/attachments',
     );
 
 =head1 DESCRIPTION
diff --git a/lib/RT/Interface/CLI.pm b/lib/RT/Interface/CLI.pm
index 2119bca773..5ee6918ee3 100644
--- a/lib/RT/Interface/CLI.pm
+++ b/lib/RT/Interface/CLI.pm
@@ -61,7 +61,7 @@ our @EXPORT_OK = qw(CleanEnv GetCurrentUser debug loc Init);
 
 =head1 SYNOPSIS
 
-  use lib "/opt/rt4/local/lib", "/opt/rt4/lib";
+  use lib "/opt/rt5/local/lib", "/opt/rt5/lib";
 
   use RT::Interface::CLI  qw(GetCurrentUser Init loc);
 
diff --git a/lib/RT/LDAPImport.pm b/lib/RT/LDAPImport.pm
index 0e6d8cf018..e95360e5f0 100644
--- a/lib/RT/LDAPImport.pm
+++ b/lib/RT/LDAPImport.pm
@@ -95,10 +95,10 @@ In C<RT_SiteConfig.pm>:
 Running the import:
 
     # Run a test import
-    /opt/rt4/sbin/rt-ldapimport --verbose > ldapimport.debug 2>&1
+    /opt/rt5/sbin/rt-ldapimport --verbose > ldapimport.debug 2>&1
     
     # Run for real, possibly put in cron
-    /opt/rt4/sbin/rt-ldapimport --import
+    /opt/rt5/sbin/rt-ldapimport --import
 
 =head1 CONFIGURATION
 
diff --git a/lib/RT/Shredder.pm b/lib/RT/Shredder.pm
index a92887b443..065c969748 100644
--- a/lib/RT/Shredder.pm
+++ b/lib/RT/Shredder.pm
@@ -155,7 +155,7 @@ following to your F<RT_SiteConfig.pm>:
 =head2 $ShredderStoragePath
 
 Directory containing Shredder backup dumps; defaults to
-F</opt/rt4/var/data/RT-Shredder> (assuming an /opt/rt4 installation).
+F</opt/rt5/var/data/RT-Shredder> (assuming an /opt/rt5 installation).
 
 To change this (for example, to /some/backup/path) add the following to
 your F<RT_SiteConfig.pm>:
diff --git a/lib/RT/Test.pm b/lib/RT/Test.pm
index a214ae7314..623de96135 100644
--- a/lib/RT/Test.pm
+++ b/lib/RT/Test.pm
@@ -305,7 +305,7 @@ sub bootstrap_config {
     open( my $config, '>', $tmp{'config'}{'RT'} )
         or die "Couldn't open $tmp{'config'}{'RT'}: $!";
 
-    my $dbname = $ENV{RT_TEST_PARALLEL}? "rt4test_$port" : "rt4test";
+    my $dbname = $ENV{RT_TEST_PARALLEL}? "rt5test_$port" : "rt5test";
     print $config qq{
 Set( \$WebDomain, "localhost");
 Set( \$WebPort,   $port);
@@ -502,7 +502,7 @@ sub bootstrap_db {
     my $db_type = RT->Config->Get('DatabaseType');
 
     if ($db_type eq "SQLite") {
-        RT->Config->WriteSet( DatabaseName => File::Spec->catfile( $self->temp_directory, "rt4test" ) );
+        RT->Config->WriteSet( DatabaseName => File::Spec->catfile( $self->temp_directory, "rt5test" ) );
     }
 
     __create_database();
@@ -1096,7 +1096,7 @@ sub add_rights {
 
 =head2 switch_templates_to TYPE
 
-This runs /opt/rt4/etc/upgrade/switch-templates-to in order to change the templates from
+This runs /opt/rt5/etc/upgrade/switch-templates-to in order to change the templates from
 HTML to text or vice versa.  TYPE is the type to switch to, either C<html> or
 C<text>.
 
diff --git a/lib/RT/Test/Shredder.pm b/lib/RT/Test/Shredder.pm
index 13ee80e781..5fe5448f08 100644
--- a/lib/RT/Test/Shredder.pm
+++ b/lib/RT/Test/Shredder.pm
@@ -125,7 +125,7 @@ sub import {
 =head3 db_name
 
 Returns the absolute file path to the current DB.
-It is C<<RT::Test->temp_directory . "rt4test" >>.
+It is C<<RT::Test->temp_directory . "rt5test" >>.
 
 =cut
 
diff --git a/sbin/rt-validate-aliases.in b/sbin/rt-validate-aliases.in
index 7cecd467ec..67a2551b57 100644
--- a/sbin/rt-validate-aliases.in
+++ b/sbin/rt-validate-aliases.in
@@ -275,7 +275,7 @@ sub filter_mailgate {
 
         my @args = Text::ParseWords::shellwords($pipe);
 
-        # We allow "|/random-other-command /opt/rt4/bin/rt-mailgate ...",
+        # We allow "|/random-other-command /opt/rt5/bin/rt-mailgate ...",
         # we just need to strip off enough
         my $index = 0;
         $index++ while $args[$index] !~ m!/rt-mailgate!;
diff --git a/t/web/install.t b/t/web/install.t
index 5acea50ee5..74c9ee7a0d 100644
--- a/t/web/install.t
+++ b/t/web/install.t
@@ -8,7 +8,7 @@ use RT::Test
     nodb      => 1,
     server_ok => 1;
 
-my $dbname     = 'rt4test_install_xxx';
+my $dbname     = 'rt5test_install_xxx';
 my $rtname     = 'rttestname';
 my $domain     = 'rttes.com';
 my $password   = 'newpass';

commit ca1bbbc58a2d14c531fb6ce316f9e1bf89849749
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri Jan 24 06:25:33 2020 +0800

    Remove deprecated code that was marked to be removed in 4.6

diff --git a/lib/RT/Interface/Web.pm b/lib/RT/Interface/Web.pm
index b334f22ae3..d8abe7f279 100644
--- a/lib/RT/Interface/Web.pm
+++ b/lib/RT/Interface/Web.pm
@@ -4449,11 +4449,6 @@ sub SetObjectSessionCache {
             CallbackPage => '/Elements/Quicksearch',
             ARGSRef => \%args, Collection => $collection, ObjectType => $ObjectType );
 
-        # This is included for continuity in the 4.2 series. It will be removed in 4.6.
-        $HTML::Mason::Commands::m->callback( CallbackName => 'SQLFilter',
-            CallbackPage => '/Elements/QueueSummaryByLifecycle', Queues => $collection )
-            if $ObjectType eq "RT::Queue";
-
         $session{$cache_key}{id} = {};
 
         while (my $object = $collection->Next) {
diff --git a/lib/RT/Interface/Web/Request.pm b/lib/RT/Interface/Web/Request.pm
index 6826710c60..f20b5ca606 100644
--- a/lib/RT/Interface/Web/Request.pm
+++ b/lib/RT/Interface/Web/Request.pm
@@ -55,11 +55,7 @@ use HTML::Mason::PSGIHandler;
 use base qw(HTML::Mason::Request::PSGI);
 use Params::Validate qw(:all);
 
-my %deprecated = (
-    '/Admin/CustomFields/Modify.html' => {
-        'AfterUpdateCustomFieldValue' => { Remove => '4.6' },
-    },
-);
+my %deprecated = ();
 
 sub new {
     my $class = shift;
diff --git a/lib/RT/ObjectCustomFieldValues.pm b/lib/RT/ObjectCustomFieldValues.pm
index 1f617633cd..d60219403f 100644
--- a/lib/RT/ObjectCustomFieldValues.pm
+++ b/lib/RT/ObjectCustomFieldValues.pm
@@ -208,28 +208,6 @@ sub HasEntry {
     }
 }
 
-sub _DoSearch {
-    my $self = shift;
-
-    if ( exists $self->{'find_expired_rows'} ) {
-        RT->Deprecated( Arguments => "find_expired_rows", Instead => 'find_disabled_rows', Remove => '4.6' );
-        $self->{'find_disabled_rows'} = $self->{'find_expired_rows'};
-    }
-
-    return $self->SUPER::_DoSearch(@_);
-}
-
-sub _DoCount {
-    my $self = shift;
-
-    if ( exists $self->{'find_expired_rows'} ) {
-        RT->Deprecated( Arguments => "find_expired_rows", Instead => 'find_disabled_rows', Remove => '4.6' );
-        $self->{'find_disabled_rows'} = $self->{'find_expired_rows'};
-    }
-
-    return $self->SUPER::_DoCount(@_);
-}
-
 RT::Base->_ImportOverlays();
 
 # Clear the OCVF cache on exit to release connected RT::Ticket objects.
diff --git a/lib/RT/Queue.pm b/lib/RT/Queue.pm
index dc286a756b..469242aeed 100644
--- a/lib/RT/Queue.pm
+++ b/lib/RT/Queue.pm
@@ -1263,68 +1263,6 @@ sub SetSLA {
     return ($status, $self->loc("Queue's default service level has been changed"));
 }
 
-sub InitialPriority {
-    my $self = shift;
-    RT->Deprecated( Instead => "DefaultValue('InitialPriority')", Remove => '4.6' );
-    return $self->DefaultValue('InitialPriority');
-}
-
-sub FinalPriority {
-    my $self = shift;
-    RT->Deprecated( Instead => "DefaultValue('FinalPriority')", Remove => '4.6' );
-    return $self->DefaultValue('FinalPriority');
-}
-
-sub DefaultDueIn {
-    my $self = shift;
-    RT->Deprecated( Instead => "DefaultValue('Due')", Remove => '4.6' );
-
-    # DefaultDueIn used to be a number of days; so if the DefaultValue is,
-    # say, "3 days" then return 3
-    my $due = $self->DefaultValue('Due');
-    if (defined($due) && $due =~ /^(\d+) days?$/i) {
-        return $1;
-    }
-
-    return $due;
-}
-
-sub SetInitialPriority {
-    my $self = shift;
-    my $value = shift;
-    RT->Deprecated( Instead => "SetDefaultValue", Remove => '4.6' );
-    return $self->SetDefaultValue(
-        Name => 'InitialPriority',
-        Value => $value,
-    );
-}
-
-sub SetFinalPriority {
-    my $self = shift;
-    my $value = shift;
-    RT->Deprecated( Instead => "SetDefaultValue", Remove => '4.6' );
-    return $self->SetDefaultValue(
-        Name => 'FinalPriority',
-        Value => $value,
-    );
-}
-
-sub SetDefaultDueIn {
-    my $self = shift;
-    my $value = shift;
-
-    # DefaultDueIn used to be a number of days; so if we're setting to,
-    # say, "3" then add the word "days" to match the way the new
-    # DefaultValues works
-    $value .= " days" if defined($value) && $value =~ /^\d+$/;
-
-    RT->Deprecated( Instead => "SetDefaultValue", Remove => '4.6' );
-    return $self->SetDefaultValue(
-        Name => 'Due',
-        Value => $value,
-    );
-}
-
 RT::Base->_ImportOverlays();
 
 1;
diff --git a/share/html/Admin/CustomFields/Modify.html b/share/html/Admin/CustomFields/Modify.html
index a2e3935710..ec9352a763 100644
--- a/share/html/Admin/CustomFields/Modify.html
+++ b/share/html/Admin/CustomFields/Modify.html
@@ -451,7 +451,6 @@ if ( $ARGS{'Update'} && $id ne 'new' ) {
             my ($id, $msg) = $value->$mutator( $ARGS{$param} );
             push (@results, $msg);
         }
-        $m->callback(CallbackName => 'AfterUpdateCustomFieldValue', CustomFieldObj => $CustomFieldObj, CustomFieldValueObj => $value, ARGSRef => \%ARGS );
     }
 
 }
diff --git a/share/html/Elements/Quicksearch b/share/html/Elements/Quicksearch
deleted file mode 100644
index 5dbfe9f193..0000000000
--- a/share/html/Elements/Quicksearch
+++ /dev/null
@@ -1,55 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
-%#                                          <sales at bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& QueueList, %ARGS &>
-
-<%INIT>
-RT->Deprecated(
-    Remove => '4.6',
-    Instead => 'QueueList',
-);
-</%INIT>

commit bdc768591e1d24a2aabc5d80ee361c28a017a990
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Fri Feb 7 16:50:00 2020 -0500

    Update UPGRADING references to 5.0

diff --git a/docs/UPGRADING-4.6 b/docs/UPGRADING-5.0
similarity index 90%
rename from docs/UPGRADING-4.6
rename to docs/UPGRADING-5.0
index c357291a4a..535887e4b8 100644
--- a/docs/UPGRADING-4.6
+++ b/docs/UPGRADING-5.0
@@ -1,14 +1,14 @@
 =head1 UPGRADING FROM RT 4.4.0 and greater
 
-The 4.6 release is a major upgrade and as such there are more changes
+The 5.0 release is a major upgrade and as such there are more changes
 than in a minor bugfix release (e.g., 4.4.0 to 4.4.1) and some of these
 changes are backward-incompatible. The following lists some of the notable
 changes, especially those that might require you to change a configuration
 option or other setting due to a change in RT. Read this section carefully
 before you upgrade and look for changes to features you currently use.
 
-See F<devel/docs/UPGRADING-4.6> for internals changes relevant to
-extension writers.
+See F<devel/docs/UPGRADING-5.0> for internals changes relevant to
+extension writers, including deprecated code.
 
 =over
 

commit 798d91bc263f873e29990bcde58a0014e250734b
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Fri Feb 7 17:16:02 2020 -0500

    Document removals

diff --git a/devel/docs/UPGRADING-5.0 b/devel/docs/UPGRADING-5.0
index eec63f0ef0..8d44332fb6 100644
--- a/devel/docs/UPGRADING-5.0
+++ b/devel/docs/UPGRADING-5.0
@@ -22,10 +22,43 @@ ticket listing.
 
 =item *
 
-When we cored RT::Extension::ConfigInDatabase, we renamed table name to
-Configurations and also changed internal implementation to support storing
+When we cored RT::Extension::ConfigInDatabase, we renamed  the table to
+Configurations and also changed the internal implementation to support storing
 regex there.
 
 =back
 
+=head1 DEPRECATED CODE
+
+Code that is no longer used after updates is marked as deprecated so it will log
+a warning for two versions before we remove it. This gives developers time to
+update their code. This section lists code that has been removed after this
+period.
+
+=over
+
+=item *
+
+SQLFilter callback in /Elements/QueueSummaryByLifecycle
+
+=item *
+
+AfterUpdateCustomFieldValue callback in share/html/Admin/CustomFields/Modify.html
+
+=item *
+
+share/html/Elements/Quicksearch, which was renamed to QueueList
+
+=item *
+
+The find_expired_rows setting for ObjectCustomFieldValues is now find_disabled_rows.
+
+=item *
+
+RT::Queue now has a SetDefaultValue method, so individual methods for setting/getting defaults
+are removed: SetInitialPriority, InitialPriority, SetFinalPriority, FinalPriority,
+SetDefaultDueIn, DefaultDueIn.
+
+=back
+
 =cut

-----------------------------------------------------------------------


More information about the rt-commit mailing list