[rt-users] CommandByMail and Custom Fields

Stephen Turner sturner at MIT.EDU
Mon Dec 11 10:15:28 EST 2006


> -----Original Message-----
> From: rt-users-bounces at lists.bestpractical.com 
> [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf 
> Of Keith Edmunds
> Sent: Sunday, December 10, 2006 1:27 PM
> To: rt-users at lists.bestpractical.com
> Subject: Re: [rt-users] CommandByMail and Custom Fields
> 
> I've done a bit more research on this, and to keep it simple I created
> an "Enter one value" custom field called 'Textline'.
> 
> I added some debug lines to TakeAction.pm as follows (my lines marked
> ">>>"):
> 
>         # Canonicalize custom fields
> >>>     $RT::Logger->warning("X1");
>         my $custom_fields = $queue->TicketCustomFields;
>         while ( my $cf = $custom_fields->Next ) {
> >>>         $RT::Logger->warning("X2: cf=$cf");
>             my %tmp = _ParseAdditiveCommand( \%cmds, 0, 
> "CustomField{".
> $cf->Name ."}" ); next unless keys %tmp;
>             $create_args{ 'CustomField-' . $cf->id } =
> [ _CompileAdditiveForCreate(%tmp) ]; }     
> 
> When I create a new ticket with the mail below, the status is set to
> 'stalled' (so it looks as if the mail is being parsed), the 'X1' line
> above is logged, but there is no 'X2' line logged. It looks to me as
> if $queue->TicketCustomFields is not returning the custom fields for
> this queue.
> 
> I don't know Perl very well so I'm not sure how to examine what
> "custom_fields" is sent to - a simple output of that variable to the
> log shows it is "RT::CustomFields=HASH(0x9bf5044)"

Keith,

The value "RT::CustomFields=HASH(0x9bf5044)" just shows you that the
variable is an object of type RT::CustomFields. You can get more info about
the object by using the appropriate methods & attributes for that object.
These are in CustomFields_Overlay.pm, CustomFields.pm, RT::SearchBuilder,
and DBIx::SearchBuilder.

For example you can see how many custom fields are represented by this
object by logging $custom_fields->Count just before the loop.

The fact that the X2 line doesn't get logged indicates that there are no CF
objects in $custom_fields. A couple of reasons why this might be true: the
queue has no ticket custom fields defined or it could be a permissions
issue. 

Steve
----------------------------------------
Stephen Turner
Senior Programmer/Analyst - Client Support Services
MIT Information Services and Technology (IS&T)
  




More information about the rt-users mailing list