Upgrade to 4.2.8
[usit-rt.git] / etc / upgrade / 3.8.8 / content
1 use strict;
2 use warnings;
3
4 our @Initial = (
5     sub {
6         # make sure global CFs are not applied to local objects
7         my $ocfs = RT::ObjectCustomFields->new( RT->SystemUser );
8         $ocfs->Limit( FIELD => 'ObjectId', OPERATOR => '!=', VALUE => 0 );
9         my $alias = $ocfs->Join(
10             FIELD1 => 'CustomField',
11             TABLE2 => 'ObjectCustomFields',
12             FIELD2 => 'CustomField',
13         );
14         $ocfs->Limit( ALIAS => $alias, FIELD => 'ObjectId', VALUE => 0 );
15         while ( my $ocf = $ocfs->Next ) {
16             $ocf->Delete;
17         }
18     },
19     sub {
20         # sort SortOrder
21         my $sth = RT->DatabaseHandle->dbh->prepare(
22             "SELECT cfs.LookupType, ocfs.id"
23             ." FROM ObjectCustomFields ocfs, CustomFields cfs"
24             ." WHERE cfs.id = ocfs.CustomField"
25             ." ORDER BY cfs.LookupType, ocfs.SortOrder, cfs.Name"
26         );
27         $sth->execute;
28
29         my ($i, $prev_type) = (0, '');
30         while ( my ($lt, $id) = $sth->fetchrow_array ) {
31             $i = 0 if $prev_type ne $lt;
32             my $ocf = RT::ObjectCustomField->new( RT->SystemUser );
33             $ocf->Load( $id );
34             my ($status, $msg) = $ocf->SetSortOrder( $i++ );
35             RT->Logger->warning("Couldn't set SortOrder: $msg")
36                 unless $status;
37             $prev_type = $lt;
38         }
39     },
40 );
41