-
- foreach my $arg (keys %ARGS) {
- next if $arg =~ /-(?:Magic|Category)$/;
- # Object-RT::Article--CustomField-3-Values
- if ( $arg =~ /^Object-RT::Article--CustomField-(\d+)(.*?)$/ ) {
- my $cfid = $1;
-
- my $cf = RT::CustomField->new( $session{'CurrentUser'} );
- $cf->SetContextObject( $ArticleObj );
- $cf->Load( $cfid );
- unless ( $cf->id ) {
- $RT::Logger->error( "Couldn't load custom field #". $cfid );
- next;
- }
-
- if ( $arg =~ /-Upload$/ ) {
- $create_args{"CustomField-$cfid"} = _UploadedFile( $arg );
- next;
- }
-
- my $type = $cf->Type;
-
- my @values = ();
- if ( ref $ARGS{ $arg } eq 'ARRAY' ) {
- @values = @{ $ARGS{ $arg } };
- } elsif ( $type =~ /text/i ) {
- @values = ($ARGS{ $arg });
- } else {
- @values = split /\r*\n/, $ARGS{ $arg } || '';
- }
- @values = grep $_ ne '',
- map {
- s/\r+\n/\n/g;
- s/^\s+//;
- s/\s+$//;
- $_;
- }
- grep defined, @values;
-
- $create_args{"CustomField-$cfid"} = \@values;
- }
- }
+ my %cfs = ProcessObjectCustomFieldUpdatesForCreate(
+ ARGSRef => \%ARGS,
+ ContextObject => $ClassObj,
+ );