Don't exit a sub via next

If your lib/ contained anything but .pm files you would get a bunch of
perl warnings about next'ing out of the sub instead of returning.
Allow for an html/ directory

RT doesn't have one (since the 3.8 days) but external extensions use
html not share/html.
Check for the existence of items before tagging

When running this script outside of RT, you often won't have a
devel/tools or a Makefile.in
Error handling for text and HTML quote extraction when displaying attachments

Improves the error message by adding the attachment ID and directs bug
reports to rt-bugs@bestpractical.com.
RT::CurrentUser objects should access Attributes as an RT::User

Otherwise attributes on the user object aren't found when accessed via
an equivalent current user object.

A larger, more invasive 4.2 fix for this should be introducing an
_ObjectType method or similar which is provided by the superclass and
used instead of ref().
Only treat ">" as an email quoting character

All of the other defaults (!, #, %, =, |, :) cause too many false
positives and hardly any true use as a quote character.
return more results when reminders are updated
Escape { and } in regexes when used as literals

Perl 5.17.6 (on the path to 5.18) deprecates and warns quite noisily
about unescaped braces.  RT's dependency chain isn't fully clean of this
warning, however...
File::Temp under 5.18 warns if passed an undefined template

File::Temp does not require that a defined template be provided -- if an
even number of arguments is passed, an undef template is assumed.  This
has been true for all versions of File::Temp, so does not break
backcompat.

Explicitly passing an undef template causes "Use of uninitialized value
$_[0] in string eq" warnings on 5.18, so skip doing so.
Don't force Bookmarks to be unlimited.

This code dates from the original Bookmarks implementation when we just
used '__Bookmarks__' instead of "id = '__Bookmarked__'".

Without this, if you have 20 bookmarks, they all list on your homepage.
After the change, it obeys RowsPerPage.

Bookmarks is a normal search now, so you can always click on the title
to see a 'full' list.

I'm leaving __Bookmarks__ alone because it's the old deprecated code
that we're going to remove in 4.4 anyway.
Create new reminders in the configured "reminder_on_open" status

Otherwise reminders are created in the lifecycle's "on_create" status.
Completing reminders in this case requires a transition between the
"on_create" status (often "new") and the "reminder_on_resolve" status,
which may not be present outside of the stock configuration.

Additionally, creating reminders in a status other than the open status
means reminders start in a state that they can never return to;
re-opening a completed reminder returns to the open status, not the
create state.

Reminders don't need the complexity of a full lifecycle, and a two-state
system of "open"/"complete" is fine.

This does require that the reminder_on_open status is valid at creation
(i.e. can transition from "").  That requirement is less onerous than
requiring a transition directly from a new state to an inactive state.
Allow any provided links in arguments to carry through to ticket creation

Explictly providing locations for SelfService users to add links during
ticket creation is not what most configurations desire; however, there
is value in being able to forge a link that will result in a ticket that
is so linked.  Pass through any linking arguments on the Create page to
the form, where CreateTicket() in SelfService/Display.html will tend to
them appopriately.
Show friendly string instead of "0" for non-ticket "local" links in search results
Note that we no longer list all your Bookmarks in UPGRADING
Move transaction ACLs onto the ticket object's CurrentUserCanSee
Allow transactions of public user attributes to be seen, as a right
Add a tab to view user history from the summary page, if the user has rights
Merge user summary and user admin tabs if the user has rights to both

This reduces confusion caused as the tabs change wildly upon clicking
"edit."
Avoid showing the admin links unless the user has AdminUser

The user is already guaranteed to have ShowConfigTab if in this section,
but complex menu should be hidden onthe user summary pages unless the
user also has AdminUsers.  This is easiest checked by looking for the
top-level admin menu's existance.
Rename "Basics" to "Edit" when approaching from the user summary direction

This clarifies what lies on the page if the user is examining the page
from having looked at the summary, and has not been placed in the
"admin" context via having approached the menus from that side.