Hi Enrique,

Here are the functions I use for populating and reading CFs in scrips and templates. I just wrapped function headers around the the code I found in the wiki. The get_custom_list function uses brute force to find the CF Id because I got tired of trying to figure out how to get it by name, but it works for me (I only have a template version because I haven't had to read multiple values in a scrip yet, but converting it for scrip use should be trivial).

For scrips:

### Sets custom field value
### usage: set_custom($field_name, $field_value);
sub set_custom {
  (my $CFName, my $CFValue) = @_;
  my $CF_Obj = RT::CustomField->new($self->CurrentUser);
  $CF_Obj->LoadByName(Name=>$CFName,);
  $CF_Obj->AddValueForObject(Object=>$self->TicketObj, Content=>$CFValue,);
}

### Returns custom field value (single value) or undefined
### usage: $value = get_custom($field_name);
sub get_custom {
  my $target_name = $_[0];
  my $val = $self->TicketObj->FirstCustomFieldValue($target_name);
  return $val
    if defined $val;
  return undef;
}

For templates:

### Sets custom field value (works for single and multiple values)
### usage: set_custom($field_name, $field_value);
sub set_custom {
  (my $target_name, my $val) = @_;
  my $CF_Obj = RT::CustomField->new($Ticket->CurrentUser);
  $CF_Obj->LoadByName(Name=>$target_name,);
  $CF_Obj->AddValueForObject(Object=>$Ticket, Content=>$val,);
}

### Returns custom field value (single value only) or undefined
### usage: $value = get_custom($field_name);
sub get_custom {
  my $target_name = $_[0];
  my $val = $Ticket->FirstCustomFieldValue($target_name);
  return $val
    if defined $val;
  return undef;
}

### Returns custom field values (multiple values) or undefined
### usage: @list = get_custom_list($field_name);
sub get_custom_list {
  my $target_name = $_[0];
  my @ret;
  my $CustomFields = $Ticket->QueueObj->TicketCustomFields();
  while (my $CustomField = $CustomFields->Next()) {
    if ($CustomField->Name eq $target_name) {
      my $CustomFieldValues = $Ticket->CustomFieldValues($CustomField->Id);
      while (my $val = $CustomFieldValues->Next()) {
        push @ret, $val->Content;
      }
      return @ret
        if defined @ret;
      return undef;
    }
  }
  return undef;
}

Regards,
Gene


At 06:13 AM 4/6/2007, Enrique Gaona wrote:

Gene,
Thanks for the suggestion. I'll look through the Contributions for some examples.

Enrique

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


Discover RT's hidden secrets with RT Essentials from O'Reilly Media. Buy a copy at http://rtbook.bestpractical.com

Reply via email to