summaryrefslogtreecommitdiff
path: root/rt/etc/upgrade/3.8.8/content
diff options
context:
space:
mode:
Diffstat (limited to 'rt/etc/upgrade/3.8.8/content')
-rw-r--r--rt/etc/upgrade/3.8.8/content38
1 files changed, 38 insertions, 0 deletions
diff --git a/rt/etc/upgrade/3.8.8/content b/rt/etc/upgrade/3.8.8/content
new file mode 100644
index 0000000..ee19433
--- /dev/null
+++ b/rt/etc/upgrade/3.8.8/content
@@ -0,0 +1,38 @@
+@Initial = (
+ sub {
+ # make sure global CFs are not applied to local objects
+ my $ocfs = RT::ObjectCustomFields->new( $RT::SystemUser );
+ $ocfs->Limit( FIELD => 'ObjectId', OPERATOR => '!=', VALUE => 0 );
+ my $alias = $ocfs->Join(
+ FIELD1 => 'CustomField',
+ TABLE2 => 'ObjectCustomFields',
+ FIELD2 => 'CustomField',
+ );
+ $ocfs->Limit( ALIAS => $alias, FIELD => 'ObjectId', VALUE => 0 );
+ while ( my $ocf = $ocfs->Next ) {
+ $ocf->Delete;
+ }
+ },
+ sub {
+ # sort SortOrder
+ my $sth = $RT::Handle->dbh->prepare(
+ "SELECT cfs.LookupType, ocfs.id"
+ ." FROM ObjectCustomFields ocfs, CustomFields cfs"
+ ." WHERE cfs.id = ocfs.CustomField"
+ ." ORDER BY cfs.LookupType, ocfs.SortOrder, cfs.Name"
+ );
+ $sth->execute;
+
+ my ($i, $prev_type) = (0, '');
+ while ( my ($lt, $id) = $sth->fetchrow_array ) {
+ $i = 0 if $prev_type ne $lt;
+ my $ocf = RT::ObjectCustomField->new( $RT::SystemUser );
+ $ocf->Load( $id );
+ my ($status, $msg) = $ocf->SetSortOrder( $i++ );
+ $RT::Logger->warning("Couldn't set SortOrder: $msg")
+ unless $status;
+ $prev_type = $lt;
+ }
+ },
+);
+