[Rt-commit] rt branch, 4.4/remove-4.2-deprecations, created. rt-4.2.0-38-gb2d3f0b

Alex Vandiver alexmv at bestpractical.com
Thu Dec 5 15:06:44 EST 2013


The branch, 4.4/remove-4.2-deprecations has been created
        at  b2d3f0b6a23827b480d042b80aa072c305bb7ebf (commit)

- Log -----------------------------------------------------------------
commit 497e000ac57123e931eba236fcf6c4171f94ea8f
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 5 13:46:36 2013 -0500

    Drop configuration options deprecated in 4.2

diff --git a/lib/RT/Config.pm b/lib/RT/Config.pm
index 7ea5433..a260000 100644
--- a/lib/RT/Config.pm
+++ b/lib/RT/Config.pm
@@ -383,23 +383,6 @@ our %META;
         },
 
     },
-    PlainTextPre => {
-        PostSet => sub {
-            my $self  = shift;
-            my $value = shift;
-            $self->SetFromConfig(
-                Option => \'PlainTextMono',
-                Value  => [$value],
-                %{$self->Meta('PlainTextPre')->{'Source'}}
-            );
-        },
-        PostLoadCheck => sub {
-            my $self = shift;
-            # XXX: deprecated, remove in 4.4
-            $RT::Logger->info("You set \$PlainTextPre in your config, which has been removed in favor of \$PlainTextMono.  Please update your config.")
-                if $self->Meta('PlainTextPre')->{'Source'}{'Package'};
-        },
-    },
     PlainTextMono => {
         Section         => 'Ticket display',
         Overridable     => 1,
@@ -879,18 +862,6 @@ our %META;
             }
         },
     },
-    LogToScreen => {
-        Deprecated => {
-            Instead => 'LogToSTDERR',
-            Remove  => '4.4',
-        },
-    },
-    UserAutocompleteFields => {
-        Deprecated => {
-            Instead => 'UserSearchFields',
-            Remove  => '4.4',
-        },
-    },
     CustomFieldGroupings => {
         Type            => 'HASH',
         PostLoadCheck   => sub {
@@ -933,12 +904,6 @@ our %META;
     ChartColors => {
         Type    => 'ARRAY',
     },
-    WebExternalAuth           => { Deprecated => { Instead => 'WebRemoteUserAuth',             Remove => '4.4' }},
-    WebExternalAuthContinuous => { Deprecated => { Instead => 'WebRemoteUserContinuous',       Remove => '4.4' }},
-    WebFallbackToInternalAuth => { Deprecated => { Instead => 'WebFallbackToRTLogin',          Remove => '4.4' }},
-    WebExternalGecos          => { Deprecated => { Instead => 'WebRemoteUserGecos',            Remove => '4.4' }},
-    WebExternalAuto           => { Deprecated => { Instead => 'WebRemoteUserAutocreate',       Remove => '4.4' }},
-    AutoCreate                => { Deprecated => { Instead => 'UserAutocreateDefaultsOnLogin', Remove => '4.4' }},
 );
 my %OPTIONS = ();
 my @LOADED_CONFIGS = ();

commit c35c79099f68e301f4ab65fe0a0a9ba0c0d9b11d
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 5 15:04:33 2013 -0500

    Replace remaining locations which use ObjectId with id

diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
index 2bec67b..209f29b 100644
--- a/lib/RT/Group.pm
+++ b/lib/RT/Group.pm
@@ -401,9 +401,7 @@ sub _Create {
     my $principal    = RT::Principal->new( $self->CurrentUser );
     my $principal_id = $principal->Create(
         PrincipalType => 'Group',
-        ObjectId      => '0'
     );
-    $principal->__Set(Field => 'ObjectId', Value => $principal_id);
 
     $self->SUPER::Create(
         id          => $principal_id,
@@ -1691,15 +1689,9 @@ sub PreInflate {
     my ($id) = $principal->Create(
         PrincipalType => 'Group',
         Disabled => $disabled,
-        ObjectId => 0,
     );
     $importer->Resolve( $principal_uid => ref($principal), $id );
-
-    $importer->Postpone(
-        for => $uid,
-        uid => $principal_uid,
-        column => "ObjectId",
-    );
+    $data->{id} = $id;
 
     return 1;
 }
diff --git a/lib/RT/User.pm b/lib/RT/User.pm
index 9500aca..d357284 100644
--- a/lib/RT/User.pm
+++ b/lib/RT/User.pm
@@ -182,8 +182,7 @@ sub Create {
     # When creating this user, set up a principal Id for it.
     my $principal = RT::Principal->new($self->CurrentUser);
     my $principal_id = $principal->Create(PrincipalType => 'User',
-                                Disabled => $args{'Disabled'},
-                                ObjectId => '0');
+                                Disabled => $args{'Disabled'});
     # If we couldn't create a principal Id, get the fuck out.
     unless ($principal_id) {
         $RT::Handle->Rollback();
@@ -192,7 +191,6 @@ sub Create {
         return ( 0, $self->loc('Could not create user') );
     }
 
-    $principal->__Set(Field => 'ObjectId', Value => $principal_id);
     delete $args{'Disabled'};
 
     $self->SUPER::Create(id => $principal_id , %args);
@@ -424,8 +422,7 @@ sub _BootstrapCreate {
     # Groups deal with principal ids, rather than user ids.
     # When creating this user, set up a principal Id for it.
     my $principal = RT::Principal->new($self->CurrentUser);
-    my $principal_id = $principal->Create(PrincipalType => 'User', ObjectId => '0');
-    $principal->__Set(Field => 'ObjectId', Value => $principal_id);
+    my $principal_id = $principal->Create(PrincipalType => 'User');
 
     # If we couldn't create a principal Id, get the fuck out.
     unless ($principal_id) {
@@ -2679,17 +2676,11 @@ sub FindDependencies {
     # Memberships in SystemInternal groups
     $objs = RT::GroupMembers->new( $self->CurrentUser );
     $objs->Limit( FIELD => 'MemberId', VALUE => $self->Id );
-    my $principals = $objs->Join(
+    my $groups = $objs->Join(
         ALIAS1 => 'main',
         FIELD1 => 'GroupId',
-        TABLE2 => 'Principals',
-        FIELD2 => 'id',
-    );
-    my $groups = $objs->Join(
-        ALIAS1 => $principals,
-        FIELD1 => 'ObjectId',
         TABLE2 => 'Groups',
-        FIELD2 => 'Id',
+        FIELD2 => 'id',
     );
     $objs->Limit(
         ALIAS => $groups,
@@ -2749,15 +2740,9 @@ sub PreInflate {
     my ($id) = $principal->Create(
         PrincipalType => 'User',
         Disabled => $disabled,
-        ObjectId => 0,
     );
     $importer->Resolve( $principal_uid => ref($principal), $id );
-
-    $importer->Postpone(
-        for => $uid,
-        uid => $principal_uid,
-        column => "ObjectId",
-    );
+    $data->{id} = $id;
 
     return $class->SUPER::PreInflate( $importer, $uid, $data );
 }
diff --git a/sbin/rt-validator.in b/sbin/rt-validator.in
index 6eaac17..cdd3357 100644
--- a/sbin/rt-validator.in
+++ b/sbin/rt-validator.in
@@ -376,7 +376,7 @@ push @CHECKS, 'User Defined Group Name uniqueness' => sub {
         condition       => '.Domain = ?',
         bind_values     => [ 'UserDefined' ],
         extra_tables    => ['Principals sp', 'Principals tp'],
-        extra_condition => join(" and ", map { "$_.id = ${_}p.ObjectId and ${_}p.PrincipalType = ? and ${_}p.Disabled != 1" } qw(s t)),
+        extra_condition => join(" and ", map { "$_.id = ${_}p.id and ${_}p.PrincipalType = ? and ${_}p.Disabled != 1" } qw(s t)),
         extra_values    => ['Group', 'Group'],
         action          => sub {
             return unless prompt(

commit e83ebc3955d7a7bc8cf88bf9e556a4a6fa402053
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 5 13:54:18 2013 -0500

    Drop the deprecated "ObjectId" column from Principals

diff --git a/etc/schema.Oracle b/etc/schema.Oracle
index effefc5..972e8cf 100755
--- a/etc/schema.Oracle
+++ b/etc/schema.Oracle
@@ -67,11 +67,8 @@ CREATE TABLE Principals (
         id              NUMBER(11,0) 
                 CONSTRAINT Principals_Key PRIMARY KEY,
         PrincipalType   VARCHAR2(16),
-        ObjectId        NUMBER(11,0),
         Disabled        NUMBER(11,0) DEFAULT 0 NOT NULL
 );
-CREATE UNIQUE  INDEX Principals2 ON Principals (ObjectId);
-
 
 CREATE SEQUENCE GROUPS_seq;
 CREATE TABLE Groups (
diff --git a/etc/schema.Pg b/etc/schema.Pg
index e5e2a04..bd991bf 100755
--- a/etc/schema.Pg
+++ b/etc/schema.Pg
@@ -109,14 +109,11 @@ CREATE SEQUENCE principals_id_seq;
 CREATE TABLE Principals (
         id INTEGER DEFAULT nextval('principals_id_seq') not null,
         PrincipalType VARCHAR(16) not null,
-        ObjectId integer, 
         Disabled integer NOT NULL DEFAULT 0 ,
         PRIMARY KEY (id)
 
 );
 
-CREATE INDEX Principals2 ON Principals (ObjectId);
-
 
 
 
diff --git a/etc/schema.SQLite b/etc/schema.SQLite
index c50e5b1..ab33651 100755
--- a/etc/schema.SQLite
+++ b/etc/schema.SQLite
@@ -69,7 +69,6 @@ CREATE INDEX Links4 ON Links(Type,LocalBase);
 CREATE TABLE Principals (
         id INTEGER PRIMARY KEY,
         PrincipalType VARCHAR(16) collate NOCASE not null,
-        ObjectId integer,
         Disabled int2 NOT NULL DEFAULT 0 
         
 ) ;
diff --git a/etc/schema.mysql b/etc/schema.mysql
index 3669fb3..64f79e0 100755
--- a/etc/schema.mysql
+++ b/etc/schema.mysql
@@ -65,14 +65,10 @@ CREATE INDEX Links4 ON Links (Type,LocalBase);
 CREATE TABLE Principals (
         id INTEGER  AUTO_INCREMENT not null,
         PrincipalType VARCHAR(16) not null,
-        ObjectId integer, # foreign key to Users or Groups, depending
         Disabled int2 NOT NULL DEFAULT 0 ,
         PRIMARY KEY (id)
 ) ENGINE=InnoDB CHARACTER SET ascii;
 
-CREATE INDEX Principals2 ON Principals (ObjectId);
-
-
 
 CREATE TABLE Groups (
   id INTEGER NOT NULL  AUTO_INCREMENT,
diff --git a/etc/upgrade/4.3.0/schema.Oracle b/etc/upgrade/4.3.0/schema.Oracle
new file mode 100644
index 0000000..d905690
--- /dev/null
+++ b/etc/upgrade/4.3.0/schema.Oracle
@@ -0,0 +1 @@
+ALTER TABLE Principals DROP COLUMN ObjectId;
diff --git a/etc/upgrade/4.3.0/schema.Pg b/etc/upgrade/4.3.0/schema.Pg
new file mode 100644
index 0000000..d905690
--- /dev/null
+++ b/etc/upgrade/4.3.0/schema.Pg
@@ -0,0 +1 @@
+ALTER TABLE Principals DROP COLUMN ObjectId;
diff --git a/etc/upgrade/4.3.0/schema.SQLite b/etc/upgrade/4.3.0/schema.SQLite
new file mode 100644
index 0000000..7ed6f3d
--- /dev/null
+++ b/etc/upgrade/4.3.0/schema.SQLite
@@ -0,0 +1 @@
+-- There is no "drop column" in SQLite
diff --git a/etc/upgrade/4.3.0/schema.mysql b/etc/upgrade/4.3.0/schema.mysql
new file mode 100644
index 0000000..d905690
--- /dev/null
+++ b/etc/upgrade/4.3.0/schema.mysql
@@ -0,0 +1 @@
+ALTER TABLE Principals DROP COLUMN ObjectId;
diff --git a/lib/RT/Principal.pm b/lib/RT/Principal.pm
index d2a31d8..ca0b12d 100644
--- a/lib/RT/Principal.pm
+++ b/lib/RT/Principal.pm
@@ -729,18 +729,9 @@ sub _ReferenceId {
     }
 }
 
-sub ObjectId {
-    my $self = shift;
-    RT->Deprecated( Instead => 'id', Remove => '4.4' );
-    return $self->_Value('ObjectId');
-}
-
 sub LoadByCols {
     my $self = shift;
     my %args = @_;
-    if ( exists $args{'ObjectId'} ) {
-        RT->Deprecated( Arguments => 'ObjectId', Instead => 'id', Remove => '4.4' );
-    }
     return $self->SUPER::LoadByCols( %args );
 }
 
@@ -774,24 +765,6 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =cut
 
 
-=head2 ObjectId
-
-Returns the current value of ObjectId.
-(In the database, ObjectId is stored as int(11).)
-
-
-
-=head2 SetObjectId VALUE
-
-
-Set ObjectId to VALUE.
-Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, ObjectId will be stored as a int(11).)
-
-
-=cut
-
-
 =head2 Disabled
 
 Returns the current value of Disabled.
@@ -818,8 +791,6 @@ sub _CoreAccessible {
                 {read => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         PrincipalType =>
                 {read => 1, write => 1, sql_type => 12, length => 16,  is_blob => 0,  is_numeric => 0,  type => 'varchar(16)', default => ''},
-        ObjectId =>
-                {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         Disabled =>
                 {read => 1, write => 1, sql_type => 5, length => 6,  is_blob => 0,  is_numeric => 1,  type => 'smallint(6)', default => '0'},
 
diff --git a/lib/RT/SearchBuilder.pm b/lib/RT/SearchBuilder.pm
index aae88b1..2b0c106 100644
--- a/lib/RT/SearchBuilder.pm
+++ b/lib/RT/SearchBuilder.pm
@@ -878,7 +878,6 @@ my %deprecated = (
     groups => {
         type => 'Name',
     },
-    principals => { objectid => 'id' },
 );
 
 sub Limit {

commit afccf63165de6bdd9ecdd353dc07dd35d2e05796
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 5 15:06:00 2013 -0500

    Replace remaining locations which use Type with Name

diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
index 209f29b..e290690 100644
--- a/lib/RT/Group.pm
+++ b/lib/RT/Group.pm
@@ -407,7 +407,6 @@ sub _Create {
         id          => $principal_id,
         Name        => $args{'Name'},
         Description => $args{'Description'},
-        Type        => $args{'Type'},
         Domain      => $args{'Domain'},
         Instance    => ($args{'Instance'} || '0')
     );
@@ -670,12 +669,12 @@ registered role on the specified Domain.  Otherwise returns false.
 sub ValidateRoleGroup {
     my $self = shift;
     my %args = (@_);
-    return 0 unless $args{Domain} and ($args{Type} or $args{'Name'});
+    return 0 unless $args{Domain} and $args{'Name'};
 
     my $class = $self->RoleClass($args{Domain});
     return 0 unless $class;
 
-    return $class->HasRole($args{Type}||$args{'Name'});
+    return $class->HasRole($args{'Name'});
 }
 
 =head2 SingleMemberRoleGroup
@@ -727,11 +726,6 @@ sub SetName {
     my ($status, $msg) = $self->_Set( Field => 'Name', Value => $value );
     return ($status, $msg) unless $status;
 
-    {
-        my ($status, $msg) = $self->__Set( Field => 'Type', Value => $value );
-        RT->Logger->error("Couldn't set Type: $msg") unless $status;
-    }
-
     return ($status, $msg);
 }
 
@@ -1678,10 +1672,10 @@ sub PreInflate {
             return $duplicated->();
         }
     } elsif ($data->{Domain} =~ /^(SystemInternal|RT::System-Role)$/) {
-        $obj->LoadByCols( Domain => $data->{Domain}, Type => $data->{Type} );
+        $obj->LoadByCols( Domain => $data->{Domain}, Name => $data->{Name} );
         return $duplicated->() if $obj->Id;
     } elsif ($data->{Domain} eq "RT::Queue-Role") {
-        $obj->LoadQueueRoleGroup( Queue => $data->{Instance}, Type => $data->{Type} );
+        $obj->LoadQueueRoleGroup( Queue => $data->{Instance}, Name => $data->{Name} );
         return $duplicated->() if $obj->Id;
     }
 
diff --git a/lib/RT/Principal.pm b/lib/RT/Principal.pm
index ca0b12d..a8a621c 100644
--- a/lib/RT/Principal.pm
+++ b/lib/RT/Principal.pm
@@ -407,7 +407,7 @@ sub HasRights {
     my $roles;
     {
         my $query
-            = "SELECT DISTINCT Groups.Type "
+            = "SELECT DISTINCT Groups.Name "
             . $self->_HasRoleRightQuery(
                 EquivObjects => $args{'EquivObjects'}
             );
diff --git a/sbin/rt-validator.in b/sbin/rt-validator.in
index cdd3357..d9b5a40 100644
--- a/sbin/rt-validator.in
+++ b/sbin/rt-validator.in
@@ -257,7 +257,7 @@ push @CHECKS, 'User <-> ACL equivalence group' => sub {
     # from user to group
     $res *= check_integrity(
         'Users', 'id' => 'Groups', 'Instance',
-        join_condition   => 't.Domain = ? AND t.Type = ?',
+        join_condition   => 't.Domain = ? AND t.Name = ?',
         bind_values => [ 'ACLEquivalence',  'UserEquiv' ],
         action => sub {
             my $id = shift;
@@ -266,14 +266,14 @@ push @CHECKS, 'User <-> ACL equivalence group' => sub {
             );
 
             my $gid = create_record( 'Groups',
-                Domain => 'ACLEquivalence', Type => 'UserEquiv', Instance => $id,
+                Domain => 'ACLEquivalence', Name => 'UserEquiv', Instance => $id,
             );
         },
     );
     # from group to user
     $res *= check_integrity(
         'Groups', 'Instance' => 'Users', 'id',
-        condition   => 's.Domain = ? AND s.Type = ?',
+        condition   => 's.Domain = ? AND s.Name = ?',
         bind_values => [ 'ACLEquivalence',  'UserEquiv' ],
         action => sub {
             my $id = shift;
@@ -288,7 +288,7 @@ push @CHECKS, 'User <-> ACL equivalence group' => sub {
     $res *= check_uniqueness(
         'Groups',
         columns     => ['Instance'],
-        condition   => '.Domain = ? AND .Type = ?',
+        condition   => '.Domain = ? AND .Name = ?',
         bind_values => [ 'ACLEquivalence',  'UserEquiv' ],
     );
     return $res;
@@ -349,11 +349,11 @@ push @CHECKS, 'Tickets <-> Role Groups' => sub {
 };
 
 # additional CHECKS on groups
-push @CHECKS, 'Role Groups (Instance, Type) uniqueness' => sub {
-    # Check that Domain, Instance and Type are unique
+push @CHECKS, 'Role Groups (Instance, Name) uniqueness' => sub {
+    # Check that Domain, Instance and Name are unique
     return check_uniqueness(
         'Groups',
-        columns     => ['Domain', 'Instance', 'Type'],
+        columns     => ['Domain', 'Instance', 'Name'],
         condition   => '.Domain LIKE ?',
         bind_values => [ '%-Role' ],
     );
@@ -362,7 +362,7 @@ push @CHECKS, 'Role Groups (Instance, Type) uniqueness' => sub {
 push @CHECKS, 'System internal group uniqueness' => sub {
     return check_uniqueness(
         'Groups',
-        columns     => ['Instance', 'Type'],
+        columns     => ['Instance', 'Name'],
         condition   => '.Domain = ?',
         bind_values => [ 'SystemInternal' ],
     );
@@ -851,7 +851,7 @@ FROM
     Groups g JOIN $table m ON g.id = m.$column
 WHERE
     g.Domain = ?
-    AND g.Type = ?
+    AND g.Name = ?
 END
             my $action = sub {
                 my ($gid, $uid) = @_;

commit 64ad12dcf2bf6b07bed7f36ef2c9a7d7bd06e350
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 5 13:57:28 2013 -0500

    Drop deprecated "Type" column on groups

diff --git a/etc/schema.Oracle b/etc/schema.Oracle
index 972e8cf..faa2ecd 100755
--- a/etc/schema.Oracle
+++ b/etc/schema.Oracle
@@ -77,7 +77,6 @@ CREATE TABLE Groups (
         Name            VARCHAR2(200),
         Description     VARCHAR2(255),
         Domain          VARCHAR2(64),
-        Type            VARCHAR2(64),
         Instance        NUMBER(11,0) DEFAULT 0, -- NOT NULL
         Creator         NUMBER(11,0) DEFAULT 0 NOT NULL,
         Created         DATE,
@@ -85,7 +84,6 @@ CREATE TABLE Groups (
         LastUpdated     DATE
 --      Instance        VARCHAR2(64)
 );
-CREATE INDEX Groups1 ON Groups (LOWER(Domain), LOWER(Type), Instance);
 CREATE INDEX Groups2 ON Groups (LOWER(Domain), LOWER(Name), Instance);
 CREATE INDEX Groups3 ON Groups (Instance);
 
diff --git a/etc/schema.Pg b/etc/schema.Pg
index bd991bf..c3a69fe 100755
--- a/etc/schema.Pg
+++ b/etc/schema.Pg
@@ -132,7 +132,6 @@ CREATE TABLE Groups (
   Name varchar(200) NULL  ,
   Description varchar(255) NULL  ,
   Domain varchar(64),
-  Type varchar(64),
   Instance integer,
   Creator integer NOT NULL DEFAULT 0  ,
   Created TIMESTAMP NULL  ,
@@ -141,7 +140,6 @@ CREATE TABLE Groups (
   PRIMARY KEY (id)
 
 );
-CREATE INDEX Groups1 ON Groups (LOWER(Domain), LOWER(Type), Instance);
 CREATE INDEX Groups2 ON Groups (LOWER(Domain), LOWER(Name), Instance);
 CREATE INDEX Groups3 On Groups (Instance);
 
diff --git a/etc/schema.SQLite b/etc/schema.SQLite
index ab33651..e246b82 100755
--- a/etc/schema.SQLite
+++ b/etc/schema.SQLite
@@ -82,7 +82,6 @@ CREATE TABLE Groups (
   Name varchar(200) collate NOCASE NULL  ,
   Description varchar(255) collate NOCASE NULL  ,
   Domain varchar(64) collate NOCASE,
-  Type varchar(64) collate NOCASE,
   Instance integer,
   Creator integer NOT NULL DEFAULT 0  ,
   Created DATETIME NULL  ,
@@ -91,7 +90,6 @@ CREATE TABLE Groups (
   
 ) ;
 
-CREATE INDEX Groups1 ON Groups (Domain,Type,Instance);
 CREATE INDEX Groups2 ON Groups (Domain,Name,Instance);
 CREATE INDEX Groups3 ON Groups (Instance);
 
diff --git a/etc/schema.mysql b/etc/schema.mysql
index 64f79e0..ca6f93d 100755
--- a/etc/schema.mysql
+++ b/etc/schema.mysql
@@ -75,7 +75,6 @@ CREATE TABLE Groups (
   Name varchar(200) NULL  ,
   Description varchar(255) NULL  ,
   Domain varchar(64) CHARACTER SET ascii NULL,
-  Type varchar(64) CHARACTER SET ascii NULL,
   Instance integer,
   Creator integer NOT NULL DEFAULT 0  ,
   Created DATETIME NULL  ,
@@ -84,7 +83,6 @@ CREATE TABLE Groups (
   PRIMARY KEY (id)
 ) ENGINE=InnoDB CHARACTER SET utf8;
 
-CREATE INDEX Groups1 ON Groups (Domain, Type, Instance);
 CREATE INDEX Groups2 ON Groups (Domain, Name, Instance);
 CREATE INDEX Groups3 On Groups (Instance);
 
diff --git a/etc/upgrade/4.3.0/schema.Oracle b/etc/upgrade/4.3.0/schema.Oracle
index d905690..53f3039 100644
--- a/etc/upgrade/4.3.0/schema.Oracle
+++ b/etc/upgrade/4.3.0/schema.Oracle
@@ -1 +1,2 @@
+ALTER TABLE Groups DROP COLUMN Type;
 ALTER TABLE Principals DROP COLUMN ObjectId;
diff --git a/etc/upgrade/4.3.0/schema.Pg b/etc/upgrade/4.3.0/schema.Pg
index d905690..53f3039 100644
--- a/etc/upgrade/4.3.0/schema.Pg
+++ b/etc/upgrade/4.3.0/schema.Pg
@@ -1 +1,2 @@
+ALTER TABLE Groups DROP COLUMN Type;
 ALTER TABLE Principals DROP COLUMN ObjectId;
diff --git a/etc/upgrade/4.3.0/schema.mysql b/etc/upgrade/4.3.0/schema.mysql
index d905690..53f3039 100644
--- a/etc/upgrade/4.3.0/schema.mysql
+++ b/etc/upgrade/4.3.0/schema.mysql
@@ -1 +1,2 @@
+ALTER TABLE Groups DROP COLUMN Type;
 ALTER TABLE Principals DROP COLUMN ObjectId;
diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
index e290690..d3a8b89 100644
--- a/lib/RT/Group.pm
+++ b/lib/RT/Group.pm
@@ -279,7 +279,6 @@ sub LoadTicketRoleGroup {
         Instead => "RT::Group->LoadRoleGroup or RT::Ticket->RoleGroup",
         Remove => "4.4",
     );
-    $args{'Name'} = $args{'Type'} if exists $args{'Type'};
     $self->LoadByCols(
         Domain   => 'RT::Ticket-Role',
         Instance => $args{'Ticket'},
@@ -306,7 +305,6 @@ sub LoadQueueRoleGroup {
         Instead => "RT::Group->LoadRoleGroup or RT::Queue->RoleGroup",
         Remove => "4.4",
     );
-    $args{'Name'} = $args{'Type'} if exists $args{'Type'};
     $self->LoadByCols(
         Domain   => 'RT::Queue-Role',
         Instance => $args{'Queue'},
@@ -336,18 +334,6 @@ sub LoadSystemRoleGroup {
     );
 }
 
-sub LoadByCols {
-    my $self = shift;
-    my %args = ( @_ );
-    if ( exists $args{'Type'} ) {
-        RT->Deprecated( Instead => 'Name', Arguments => 'Type', Remove => '4.4' );
-        $args{'Name'} = $args{'Type'};
-    }
-    return $self->SUPER::LoadByCols( %args );
-}
-
-
-
 =head2 Create
 
 You need to specify what sort of group you're creating by calling one of the other
@@ -382,12 +368,6 @@ sub _Create {
         _RecordTransaction => 1,
         @_
     );
-    if ( $args{'Type'} ) {
-        RT->Deprecated( Instead => 'Name', Arguments => 'Type', Remove => '4.4' );
-        $args{'Name'} = $args{'Type'};
-    } else {
-        $args{'Type'} = $args{'Name'};
-    }
 
     # Enforce uniqueness on user defined group names
     if ($args{'Domain'} and $args{'Domain'} eq 'UserDefined') {
@@ -620,11 +600,6 @@ sub CreateRoleGroup {
         return ( 0, $self->loc("Invalid Group Name and Domain") );
     }
 
-    if ( exists $args{'Type'} ) {
-        RT->Deprecated( Instead => 'Name', Arguments => 'Type', Remove => '4.4' );
-        $args{'Name'} = $args{'Type'};
-    }
-
     my %create = map { $_ => $args{$_} } qw(Domain Instance Name);
 
     my $duplicate = RT::Group->new( RT->SystemUser );
@@ -707,18 +682,6 @@ sub RoleGroupObject {
     return $obj;
 }
 
-sub Type {
-    my $self = shift;
-    RT->Deprecated( Instead => 'Name', Remove => '4.4' );
-    return $self->_Value('Type', @_);
-}
-
-sub SetType {
-    my $self = shift;
-    RT->Deprecated( Instead => 'Name', Remove => '4.4' );
-    return $self->SetName(@_);
-}
-
 sub SetName {
     my $self = shift;
     my $value = shift;
@@ -1495,25 +1458,6 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =cut
 
 
-=head2 Type
-
-Returns the current value of Type.
-(In the database, Type is stored as varchar(64).)
-
-Deprecated, use Name instead, will be removed in 4.4.
-
-=head2 SetType VALUE
-
-
-Set Type to VALUE.
-Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Type will be stored as a varchar(64).)
-
-Deprecated, use SetName instead, will be removed in 4.4.
-
-=cut
-
-
 =head2 Instance
 
 Returns the current value of Instance.
@@ -1580,8 +1524,6 @@ sub _CoreAccessible {
                 {read => 1, write => 1, sql_type => 12, length => 255,  is_blob => 0,  is_numeric => 0,  type => 'varchar(255)', default => ''},
         Domain =>
                 {read => 1, write => 1, sql_type => 12, length => 64,  is_blob => 0,  is_numeric => 0,  type => 'varchar(64)', default => ''},
-        Type =>
-                {read => 1, write => 1, sql_type => 12, length => 64,  is_blob => 0,  is_numeric => 0,  type => 'varchar(64)', default => ''},
         Instance =>
                 {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         Creator =>
diff --git a/lib/RT/SearchBuilder.pm b/lib/RT/SearchBuilder.pm
index 2b0c106..caa684a 100644
--- a/lib/RT/SearchBuilder.pm
+++ b/lib/RT/SearchBuilder.pm
@@ -875,9 +875,6 @@ my %check_case_sensitivity = (
 );
 
 my %deprecated = (
-    groups => {
-        type => 'Name',
-    },
 );
 
 sub Limit {
diff --git a/lib/RT/SearchBuilder/Role/Roles.pm b/lib/RT/SearchBuilder/Role/Roles.pm
index eeabbfc..59cc62e 100644
--- a/lib/RT/SearchBuilder/Role/Roles.pm
+++ b/lib/RT/SearchBuilder/Role/Roles.pm
@@ -102,10 +102,6 @@ sub _RoleGroupsJoin {
     $args{'Class'} ||= $self->_RoleGroupClass;
 
     my $name = $args{'Name'};
-    if ( exists $args{'Type'} ) {
-        RT->Deprecated( Arguments => 'Type', Instead => 'Name', Remove => '4.4' );
-        $name = $args{'Type'};
-    }
 
     return $self->{'_sql_role_group_aliases'}{ $args{'Class'} .'-'. $name }
         if $self->{'_sql_role_group_aliases'}{ $args{'Class'} .'-'. $name }

commit f4ce163680dd0a37965ce5bb61921b8afa1a35d2
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 5 14:00:33 2013 -0500

    Remove methods deprecated in 4.4

diff --git a/lib/RT/CustomField.pm b/lib/RT/CustomField.pm
index da6e16a..2544d1e 100644
--- a/lib/RT/CustomField.pm
+++ b/lib/RT/CustomField.pm
@@ -704,14 +704,6 @@ sub ValidateType {
     my $self = shift;
     my $type = shift;
 
-    if ( $type =~ s/(?:Single|Multiple)$// ) {
-        RT->Deprecated(
-            Arguments => "suffix 'Single' or 'Multiple'",
-            Instead   => "MaxValues",
-            Remove    => "4.4",
-        );
-    }
-
     if ( $FieldTypes{$type} ) {
         return 1;
     }
@@ -724,14 +716,6 @@ sub ValidateType {
 sub SetType {
     my $self = shift;
     my $type = shift;
-    if ($type =~ s/(?:(Single)|Multiple)$//) {
-        RT->Deprecated(
-            Arguments => "suffix 'Single' or 'Multiple'",
-            Instead   => "MaxValues",
-            Remove    => "4.4",
-        );
-        $self->SetMaxValues($1 ? 1 : 0);
-    }
     $self->_Set(Field => 'Type', Value =>$type);
 }
 
@@ -1349,13 +1333,6 @@ sub IsOnlyGlobal {
     return ($self->LookupType =~ /^RT::(?:Group|User)/io);
 
 }
-sub ApplyGlobally {
-    RT->Deprecated(
-        Instead   => "IsOnlyGlobal",
-        Remove    => "4.4",
-    );
-    return shift->IsOnlyGlobal(@_);
-}
 
 =head1 AddedTo
 
@@ -1372,13 +1349,6 @@ sub AddedTo {
     return RT::ObjectCustomField->new( $self->CurrentUser )
         ->AddedTo( CustomField => $self );
 }
-sub AppliedTo {
-    RT->Deprecated(
-        Instead   => "AddedTo",
-        Remove    => "4.4",
-    );
-    shift->AddedTo(@_);
-};
 
 =head1 NotAddedTo
 
@@ -1395,13 +1365,6 @@ sub NotAddedTo {
     return RT::ObjectCustomField->new( $self->CurrentUser )
         ->NotAddedTo( CustomField => $self );
 }
-sub NotAppliedTo {
-    RT->Deprecated(
-        Instead   => "NotAddedTo",
-        Remove    => "4.4",
-    );
-    shift->NotAddedTo(@_)
-};
 
 =head2 IsAdded
 
@@ -1419,13 +1382,6 @@ sub IsAdded {
     return undef unless $ocf->id;
     return $ocf;
 }
-sub IsApplied {
-    RT->Deprecated(
-        Instead   => "IsAdded",
-        Remove    => "4.4",
-    );
-    shift->IsAdded(@_);
-};
 
 sub IsGlobal { return shift->IsAdded(0) }
 
@@ -1759,16 +1715,6 @@ sub RegisterLookupType {
     $FRIENDLY_LOOKUP_TYPES{$path} = $friendly_name;
 }
 
-sub _ForObjectType {
-    RT->Deprecated(
-        Instead => 'RegisterLookupType',
-        Remove  => '4.4',
-    );
-    my $self = shift;
-    $self->RegisterLookupType(@_);
-}
-
-
 =head2 IncludeContentForValue [VALUE] (and SetIncludeContentForValue)
 
 Gets or sets the  C<IncludeContentForValue> for this custom field. RT
diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
index d3a8b89..1859681 100644
--- a/lib/RT/Group.pm
+++ b/lib/RT/Group.pm
@@ -261,79 +261,6 @@ sub LoadRoleGroup {
     return $self->LoadByCols(%args);
 }
 
-
-=head2 LoadTicketRoleGroup  { Ticket => TICKET_ID, Name => TYPE }
-
-Deprecated in favor of L</LoadRoleGroup> or L<RT::Record/RoleGroup>.
-
-=cut
-
-sub LoadTicketRoleGroup {
-    my $self = shift;
-    my %args = (
-        Ticket => '0',
-        Name => undef,
-        @_,
-    );
-    RT->Deprecated(
-        Instead => "RT::Group->LoadRoleGroup or RT::Ticket->RoleGroup",
-        Remove => "4.4",
-    );
-    $self->LoadByCols(
-        Domain   => 'RT::Ticket-Role',
-        Instance => $args{'Ticket'},
-        Name     => $args{'Name'},
-    );
-}
-
-
-
-=head2 LoadQueueRoleGroup  { Queue => Queue_ID, Type => TYPE }
-
-Deprecated in favor of L</LoadRoleGroup> or L<RT::Record/RoleGroup>.
-
-=cut
-
-sub LoadQueueRoleGroup {
-    my $self = shift;
-    my %args = (
-        Queue => undef,
-        Name => undef,
-        @_,
-    );
-    RT->Deprecated(
-        Instead => "RT::Group->LoadRoleGroup or RT::Queue->RoleGroup",
-        Remove => "4.4",
-    );
-    $self->LoadByCols(
-        Domain   => 'RT::Queue-Role',
-        Instance => $args{'Queue'},
-        Name     => $args{'Name'},
-    );
-}
-
-
-
-=head2 LoadSystemRoleGroup  Name
-
-Deprecated in favor of L</LoadRoleGroup> or L<RT::Record/RoleGroup>.
-
-=cut
-
-sub LoadSystemRoleGroup {
-    my $self = shift;
-    my $type = shift;
-    RT->Deprecated(
-        Instead => "RT::Group->LoadRoleGroup or RT::System->RoleGroup",
-        Remove => "4.4",
-    );
-    $self->LoadByCols(
-        Domain   => 'RT::System-Role',
-        Instance => RT::System->Id,
-        Name     => $type
-    );
-}
-
 =head2 Create
 
 You need to specify what sort of group you're creating by calling one of the other
diff --git a/lib/RT/Groups.pm b/lib/RT/Groups.pm
index cc1e8e0..6f9aa37 100644
--- a/lib/RT/Groups.pm
+++ b/lib/RT/Groups.pm
@@ -182,67 +182,6 @@ sub LimitToRolesForObject {
     $self->Limit(FIELD => 'Instance', OPERATOR => '=', VALUE => $object->id);
 }
 
-=head2 LimitToRolesForQueue QUEUE_ID
-
-B<DEPRECATED>. Use L</LimitToRolesForObject> instead.
-
-Limits the set of groups found to role groups for queue QUEUE_ID
-
-=cut
-
-sub LimitToRolesForQueue {
-    my $self = shift;
-    my $queue = shift;
-    RT->Deprecated(
-        Instead => "LimitToRolesForObject",
-        Remove => "4.4",
-    );
-    $self->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'RT::Queue-Role', CASESENSITIVE => 0 );
-    $self->Limit(FIELD => 'Instance', OPERATOR => '=', VALUE => $queue);
-}
-
-
-
-=head2 LimitToRolesForTicket Ticket_ID
-
-B<DEPRECATED>. Use L</LimitToRolesForObject> instead.
-
-Limits the set of groups found to role groups for Ticket Ticket_ID
-
-=cut
-
-sub LimitToRolesForTicket {
-    my $self = shift;
-    my $Ticket = shift;
-    RT->Deprecated(
-        Instead => "LimitToRolesForObject",
-        Remove => "4.4",
-    );
-    $self->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'RT::Ticket-Role', CASESENSITIVE => 0 );
-    $self->Limit(FIELD => 'Instance', OPERATOR => '=', VALUE => $Ticket);
-}
-
-
-
-=head2 LimitToRolesForSystem System_ID
-
-B<DEPRECATED>. Use L</LimitToRolesForObject> instead.
-
-Limits the set of groups found to role groups for System System_ID
-
-=cut
-
-sub LimitToRolesForSystem {
-    my $self = shift;
-    RT->Deprecated(
-        Instead => "LimitToRolesForObject",
-        Remove => "4.4",
-    );
-    $self->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'RT::System-Role', CASESENSITIVE => 0 );
-    $self->Limit(FIELD => 'Instance', OPERATOR => '=', VALUE => RT::System->Id );
-}
-
-
 =head2 WithMember {PrincipalId => PRINCIPAL_ID, Recursively => undef}
 
 Limits the set of groups returned to groups which have
diff --git a/lib/RT/Interface/Web.pm b/lib/RT/Interface/Web.pm
index 2d5b5d4..fb4f1dd 100644
--- a/lib/RT/Interface/Web.pm
+++ b/lib/RT/Interface/Web.pm
@@ -161,16 +161,6 @@ sub EscapeHTML {
     $$ref =~ s/'/'/g;
 }
 
-# Back-compat
-# XXX: Remove in 4.4
-sub EscapeUTF8 {
-    RT->Deprecated(
-        Instead => "EscapeHTML",
-        Remove => "4.4",
-    );
-    EscapeHTML(@_);
-}
-
 =head2 EscapeURI SCALARREF
 
 Escapes URI component according to RFC2396
diff --git a/lib/RT/Queue.pm b/lib/RT/Queue.pm
index 02f66cf..767a4e7 100644
--- a/lib/RT/Queue.pm
+++ b/lib/RT/Queue.pm
@@ -496,45 +496,6 @@ sub TicketTransactionCustomFields {
     return ($cfs);
 }
 
-
-
-
-
-=head2 AllRoleGroupTypes
-
-B<DEPRECATED> and will be removed in a future release. Use L</Roles>
-instead.
-
-Returns a list of the names of the various role group types for Queues,
-including roles used only for ACLs like Requestor and Owner. If you don't want
-them, see L</ManageableRoleGroupTypes>.
-
-=cut
-
-sub AllRoleGroupTypes {
-    RT->Deprecated(
-        Remove => "4.4",
-        Instead => "RT::Queue->Roles",
-    );
-    shift->Roles;
-}
-
-=head2 IsRoleGroupType
-
-B<DEPRECATED> and will be removed in a future release. Use L</HasRole> instead.
-
-Returns whether the passed-in type is a role group type.
-
-=cut
-
-sub IsRoleGroupType {
-    RT->Deprecated(
-        Remove => "4.4",
-        Instead => "RT::Queue->HasRole",
-    );
-    shift->HasRole(@_);
-}
-
 =head2 ManageableRoleGroupTypes
 
 Returns a list of the names of the various role group types for Queues,
diff --git a/lib/RT/Record.pm b/lib/RT/Record.pm
index 4a2b40f..6102dfa 100644
--- a/lib/RT/Record.pm
+++ b/lib/RT/Record.pm
@@ -143,28 +143,6 @@ sub RecordType {
     return $res;
 }
 
-=head2 ObjectTypeStr
-
-DEPRECATED. Stays here for backwards. Returns localized L</RecordType>.
-
-=cut
-
-# we deprecate because of:
-# * ObjectType is used in several classes with ObjectId to store
-#   records of different types, for example transactions use those
-#   and it's unclear what this method should return 'Transaction'
-#   or type of referenced record
-# * returning localized thing is not good idea
-
-sub ObjectTypeStr {
-    my $self = shift;
-    RT->Deprecated(
-        Remove => "4.4",
-        Instead => "RecordType",
-    );
-    return $self->loc( $self->RecordType( @_ ) );
-}
-
 =head2 Attributes
 
 Return this object's attributes as an RT::Attributes object
@@ -442,31 +420,6 @@ sub CreatedObj {
     return $obj;
 }
 
-
-# B<DEPRECATED> and will be removed in 4.4
-sub AgeAsString {
-    my $self = shift;
-    RT->Deprecated(
-        Remove => "4.4",
-        Instead => "->CreatedObj->AgeAsString",
-    );
-    return ( $self->CreatedObj->AgeAsString() );
-}
-
-# B<DEPRECATED> and will be removed in 4.4
-sub LongSinceUpdateAsString {
-    my $self = shift;
-    RT->Deprecated(
-        Remove => "4.4",
-        Instead => "->LastUpdatedObj->AgeAsString",
-    );
-    if ( $self->LastUpdated ) {
-        return ( $self->LastUpdatedObj->AgeAsString() );
-    } else {
-        return "never";
-    }
-}
-
 sub LastUpdatedAsString {
     my $self = shift;
     if ( $self->LastUpdated ) {
diff --git a/lib/RT/ScripAction.pm b/lib/RT/ScripAction.pm
index 901266c..3a3fe4e 100644
--- a/lib/RT/ScripAction.pm
+++ b/lib/RT/ScripAction.pm
@@ -130,14 +130,6 @@ sub Load  {
         ($ok, $msg) = $self->LoadByCol('Name', $identifier);
     }
 
-    if (@_) {
-        RT->Deprecated(
-            Arguments => "Template as second argument",
-            Remove    => "4.4",
-        );
-        $self->{'Template'} = shift;
-    }
-
     return wantarray ? ($ok, $msg) : $ok;
 }
 
@@ -180,42 +172,6 @@ sub LoadAction  {
     );
 }
 
-
-=head2 TemplateObj
-
-Return this action's template object.  Deprecated.
-
-=cut
-
-sub TemplateObj {
-    my $self = shift;
-    RT->Deprecated(
-        Remove => "4.4",
-    );
-
-    return undef unless $self->{Template};
-    if ( !$self->{'TemplateObj'} ) {
-        $self->{'TemplateObj'} = RT::Template->new( $self->CurrentUser );
-        $self->{'TemplateObj'}->Load( $self->{'Template'} );
-
-        if ( ( $self->{'TemplateObj'}->__Value('Queue') == 0 )
-            && $self->{'_TicketObj'} ) {
-            my $tmptemplate = RT::Template->new( $self->CurrentUser );
-            my ( $ok, $err ) = $tmptemplate->LoadQueueTemplate(
-                Queue => $self->{'_TicketObj'}->QueueObj->id,
-                Name  => $self->{'TemplateObj'}->Name);
-
-            if ( $tmptemplate->id ) {
-                # found the queue-specific template with the same name
-                $self->{'TemplateObj'} = $tmptemplate;
-            }
-        }
-
-    }
-
-    return ( $self->{'TemplateObj'} );
-}
-
 sub Prepare  {
     my $self = shift;
     $self->{_Message_ID} = 0;
diff --git a/lib/RT/Ticket.pm b/lib/RT/Ticket.pm
index 36abca2..a4d5931 100644
--- a/lib/RT/Ticket.pm
+++ b/lib/RT/Ticket.pm
@@ -1180,28 +1180,6 @@ sub DueObj {
     return $time;
 }
 
-
-
-=head2 DueAsString
-
-Returns this ticket's due date as a human readable string.
-
-B<DEPRECATED> and will be removed in 4.4; use C<<
-$ticket->DueObj->AsString >> instead.
-
-=cut
-
-sub DueAsString {
-    my $self = shift;
-    RT->Deprecated(
-        Instead => "->DueObj->AsString",
-        Remove => "4.4",
-    );
-    return $self->DueObj->AsString();
-}
-
-
-
 =head2 ResolvedObj
 
   Returns an RT::Date object of this ticket's 'resolved' time.
@@ -1347,33 +1325,6 @@ sub ToldObj {
     return $time;
 }
 
-
-
-=head2 ToldAsString
-
-A convenience method that returns ToldObj->AsString
-
-B<DEPRECATED> and will be removed in 4.4; use C<<
-$ticket->ToldObj->AsString >> instead.
-
-=cut
-
-sub ToldAsString {
-    my $self = shift;
-    RT->Deprecated(
-        Instead => "->ToldObj->AsString",
-        Remove => "4.4",
-    );
-    if ( $self->Told ) {
-        return $self->ToldObj->AsString();
-    }
-    else {
-        return ("Never");
-    }
-}
-
-
-
 sub _DurationAsString {
     my $self = shift;
     my $value = shift;
diff --git a/lib/RT/Tickets.pm b/lib/RT/Tickets.pm
index 6400267..4d13952 100644
--- a/lib/RT/Tickets.pm
+++ b/lib/RT/Tickets.pm
@@ -1305,17 +1305,6 @@ sub OrderByCols {
     return $self->SUPER::OrderByCols(@res);
 }
 
-sub _SQLLimit {
-    my $self = shift;
-    RT->Deprecated( Remove => "4.4", Instead => "Limit" );
-    $self->Limit(@_);
-}
-sub _SQLJoin {
-    my $self = shift;
-    RT->Deprecated( Remove => "4.4", Instead => "Join" );
-    $self->Join(@_);
-}
-
 sub _OpenParen {
     $_[0]->SUPER::_OpenParen( $_[1] || 'ticketsql' );
 }
diff --git a/lib/RT/Transaction.pm b/lib/RT/Transaction.pm
index 3fade0d..4724a77 100644
--- a/lib/RT/Transaction.pm
+++ b/lib/RT/Transaction.pm
@@ -1365,25 +1365,13 @@ sub UpdateCustomFields {
     my $self = shift;
     my %args = (@_);
 
-    # This method used to have an API that took a hash of a single
-    # value "ARGSRef", which was a reference to a hash of arguments.
-    # This was insane. The next few lines of code preserve that API
-    # while giving us something saner.
-    my $args;
-    if ($args{'ARGSRef'}) {
-        RT->Deprecated( Arguments => "ARGSRef", Remove => "4.4" );
-        $args = $args{ARGSRef};
-    } else {
-        $args = \%args;
-    }
-
-    foreach my $arg ( keys %$args ) {
+    foreach my $arg ( keys %args ) {
         next
           unless ( $arg =~
             /^(?:Object-RT::Transaction--)?CustomField-(\d+)/ );
         next if $arg =~ /-Magic$/;
         my $cfid   = $1;
-        my $values = $args->{$arg};
+        my $values = $args{$arg};
         foreach
           my $value ( UNIVERSAL::isa( $values, 'ARRAY' ) ? @$values : $values )
         {
diff --git a/t/api/customfield.t b/t/api/customfield.t
index 6be50bb..4f91846 100644
--- a/t/api/customfield.t
+++ b/t/api/customfield.t
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 use RT;
-use RT::Test nodata => 1, tests => 29;
+use RT::Test nodata => 1, tests => 22;
 use Test::Warn;
 
 
@@ -51,23 +51,3 @@ ok ($delval,"Deleting a cf value: $delmsg");
 
 
 }
-
-{
-
-ok(my $cf = RT::CustomField->new(RT->SystemUser));
-
-warning_like {
-ok($cf->ValidateType('SelectSingle'));
-} qr/deprecated/;
-
-warning_like {
-ok($cf->ValidateType('SelectMultiple'));
-} qr/deprecated/;
-
-warning_like {
-ok(!$cf->ValidateType('SelectFooMultiple'));
-} qr/deprecated/;
-
-
-}
-

commit 8feb73b1a8ac4d72962b6c4ec5bdd15bc27468f1
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 5 14:01:02 2013 -0500

    Remove Mason components deprecated in 4.4

diff --git a/share/html/Elements/Callback b/share/html/Elements/Callback
deleted file mode 100644
index be1468f..0000000
--- a/share/html/Elements/Callback
+++ /dev/null
@@ -1,56 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2013 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 }}}
-<%INIT>
-$ARGS{'CallbackPage'} = delete $ARGS{'Page'} || $m->callers(1)->path;
-$ARGS{'CallbackName'} = delete $ARGS{'_CallbackName'};
-RT->Deprecated(
-    Instead => '$m->callback',
-    Remove => "4.4",
-);
-return $m->callback( %ARGS );
-</%INIT>
diff --git a/share/html/Elements/TicketList b/share/html/Elements/TicketList
deleted file mode 100644
index f91b9ef..0000000
--- a/share/html/Elements/TicketList
+++ /dev/null
@@ -1,74 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2013 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 }}}
-<%INIT>
-RT->Deprecated(
-    Remove => "4.4",
-    Instead => "/Elements/CollectionList",
-);
-$m->comp(
-         '/Elements/CollectionList',
-         %ARGS,
-         Class => 'RT::Tickets'
-        );
-</%INIT>
-<%ARGS>
-$Collection => undef
-$Query => undef
-$Format => RT->Config->Get('DefaultSearchResultFormat')
-$DisplayFormat => undef
-$Order => undef
-$OrderBy => undef
-$Rows => 50
-$Page => 1
-$Title => loc('Ticket Search')
-$BaseURL => undef
-$AllowSorting => undef
-$ShowNavigation => 1
-$ShowHeader => 1
-$ShowEmpty => 0
-</%ARGS>
diff --git a/share/html/Elements/TitleBox b/share/html/Elements/TitleBox
deleted file mode 100644
index 2aadeb2..0000000
--- a/share/html/Elements/TitleBox
+++ /dev/null
@@ -1,52 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2013 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 }}}
-<%init>
-# For compatibility with 3.4
-RT->Deprecated( Remove => 4.4, Instead => "/Widgets/TitleBox" );
-$m->comp('/Widgets/TitleBox', %ARGS );
-</%init>
diff --git a/share/html/Elements/TitleBoxEnd b/share/html/Elements/TitleBoxEnd
deleted file mode 100644
index b8f215b..0000000
--- a/share/html/Elements/TitleBoxEnd
+++ /dev/null
@@ -1,52 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2013 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 }}}
-<%init>
-# For compatibility with 3.4
-RT->Deprecated( Remove => 4.4, Instead => "/Widgets/TitleBoxEnd" );
-$m->comp('/Widgets/TitleBoxEnd', %ARGS );
-</%init>
diff --git a/share/html/Elements/TitleBoxStart b/share/html/Elements/TitleBoxStart
deleted file mode 100644
index 120022c..0000000
--- a/share/html/Elements/TitleBoxStart
+++ /dev/null
@@ -1,52 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2013 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 }}}
-<%init>
-# For compatibility with 3.4
-RT->Deprecated( Remove => 4.4, Instead => "/Widgets/TitleBoxStart" );
-$m->comp('/Widgets/TitleBoxStart', %ARGS );
-</%init>
diff --git a/share/html/Ticket/Elements/EditCustomFields b/share/html/Ticket/Elements/EditCustomFields
deleted file mode 100644
index c050ab1..0000000
--- a/share/html/Ticket/Elements/EditCustomFields
+++ /dev/null
@@ -1,70 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2013 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 }}}
-<%INIT>
-RT->Deprecated( Remove => "4.4", Instead => "/Elements/EditCustomFields" );
-
-my $CustomFields;
-if ($TicketObj && !$OnCreate) {
-    $CustomFields = $TicketObj->CustomFields;
-} else {
-    $CustomFields = $QueueObj->TicketCustomFields;
-}
-$m->callback( %ARGS, CallbackName => 'MassageCustomFields', CustomFields => $CustomFields );
-
-return $m->comp('/Elements/EditCustomFields',
-    %ARGS,
-    Object => $TicketObj || RT::Ticket->new( $session{'CurrentUser'} ),
-    CustomFields => $CustomFields,
-);
-
-</%INIT>
-<%ARGS>
-$TicketObj => undef
-$QueueObj => undef
-$OnCreate => undef
-</%ARGS>
diff --git a/share/html/Ticket/Elements/LoadTextAttachments b/share/html/Ticket/Elements/LoadTextAttachments
deleted file mode 100644
index 23ea09b..0000000
--- a/share/html/Ticket/Elements/LoadTextAttachments
+++ /dev/null
@@ -1,54 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2013 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 }}}
-<%INIT>
-RT->Deprecated( Remove => "4.4", Instead => "RT::Ticket->TextAttachments" );
-return $Ticket->TextAttachments;
-</%INIT>
-<%ARGS>
-$Ticket
-</%ARGS>

commit 3c965a7183c8738857147ed6cd2e47155dbb40c9
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 5 14:01:21 2013 -0500

    Remove __Bookmarks__ syntax deprecated in 4.2

diff --git a/share/html/Elements/ShowSearch b/share/html/Elements/ShowSearch
index 75a621b..8207ef3 100644
--- a/share/html/Elements/ShowSearch
+++ b/share/html/Elements/ShowSearch
@@ -125,21 +125,6 @@ foreach ( $SearchArg, $ProcessedSearchArg ) {
 
     # extract-message-catalog would "$1", so we avoid quotes for loc calls
     $_->{'Format'} =~ s/__loc\(["']?(\w+)["']?\)__/my $f = "$1"; loc($f)/ge;
-    if ( $_->{'Query'} =~ /__Bookmarks__/ ) {
-        $_->{'Rows'} = 999;
-
-        # DEPRECATED: will be here for a while up to 4.4
-        RT->Deprecated(
-            Remove  => "4.4",
-            Instead => "id = '__Bookmarked__'",
-            Message => "The __Bookmarks__ query syntax is deprecated",
-            Object  => $search,
-        );
-
-        my @bookmarks = $session{'CurrentUser'}->UserObj->Bookmarks;
-        my $query = join(" OR ", map " id = '$_' ", @bookmarks ) || 'id=0';
-        $_->{'Query'} =~ s/__Bookmarks__/( $query )/g;
-    }
 }
 
 my $QueryString = '?' . $m->comp( '/Elements/QueryString', %$SearchArg );
diff --git a/share/html/m/tickets/search b/share/html/m/tickets/search
index e5bf4da..a375af6 100644
--- a/share/html/m/tickets/search
+++ b/share/html/m/tickets/search
@@ -86,24 +86,6 @@ my $search;
         $search_arg = $session{'CurrentUser'}->UserObj->Preferences( $search, $search->Content );
     }
 
-    foreach ($search_arg) {
-        if ( $_->{'Query'} =~ /__Bookmarks__/ ) {
-            $_->{'Rows'} = 999;
-
-            # DEPRECATED: will be here for a while up to 4.4
-            RT->Deprecated(
-                Remove  => "4.4",
-                Instead => "id = '__Bookmarked__'",
-                Message => "The __Bookmarks__ query syntax is deprecated",
-                Object  => $search,
-            );
-
-            my @bookmarks = $session{'CurrentUser'}->UserObj->Bookmarks;
-            my $query = join(" OR ", map " id = '$_' ", @bookmarks ) || 'id=0';
-            $_->{'Query'} =~ s/__Bookmarks__/( $query )/g;
-        }
-    }
-
     $query    = $search_arg->{Query};
     $order_by = $search_arg->{OrderBy};
     $order    = $search_arg->{Order};

commit b2d3f0b6a23827b480d042b80aa072c305bb7ebf
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 5 14:01:53 2013 -0500

    Bump the (now-empty) deprecated columns check to be "remove in 4.6"

diff --git a/lib/RT/SearchBuilder.pm b/lib/RT/SearchBuilder.pm
index caa684a..b218d2a 100644
--- a/lib/RT/SearchBuilder.pm
+++ b/lib/RT/SearchBuilder.pm
@@ -917,7 +917,7 @@ sub Limit {
     if ( $table and $ARGS{FIELD} and my $instead = $deprecated{ lc $table }{ lc $ARGS{'FIELD'} } ) {
         RT->Deprecated(
             Message => "$table.$ARGS{'FIELD'} column is deprecated",
-            Instead => $instead, Remove => '4.4'
+            Instead => $instead, Remove => '4.6'
         );
     }
 

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


More information about the rt-commit mailing list