The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/local/bin/perl
#
# $Header: /cvsroot/arsperl/ARSperl/example/ars_decodeStatusHistory.pl,v 1.3 2007/08/02 14:48:21 mbeijen Exp $
#
# NAME
#   ars_decodeStatusHistory.pl [server] [username] [password] [schema] [eid]
#
# DESCRIPTION
#   retrieves the entryid from the given schema and decodes it's status
#   history values.
#
# AUTHOR
#   Jeff murphy
#
# $Log: ars_decodeStatusHistory.pl,v $
# Revision 1.3  2007/08/02 14:48:21  mbeijen
# modified examples for ExecuteProcess and decodeStatusHistory
#
# Revision 1.2  1998/09/14 17:39:20  jcmurphy
# changed #!perl path
#
# Revision 1.1  1998/09/11 15:51:42  jcmurphy
# Initial revision
#
#
#

use ARS;
use warnings;
use strict;

die "usage: ars_decodeStatusHistory.pl [server] [username] [password] [form] [entry]\n" unless ($#ARGV == 4);

# Log in to the server
(my $ctrl = ars_Login(shift, shift, shift)) ||
    die "login: $ars_errstr";

(my $form, my $entry) = (shift, shift);

# get the information for this entry. ars_GetEntry returns a hash of field ID's and its values.
# in fact, we only are interested in this example in field 15 which contains the Status History.
(my %entry = ars_GetEntry($ctrl, $form, $entry, 15)) ||
    die "GetEntry: $ars_errstr (no entry $entry in form $form ?)";

# load the field information for field 7 (Status) so we can determine what the names are for 
# the different statuses.
(my $field_info = ars_GetField($ctrl, $form, 7)) ||
    die "GetField: $ars_errstr ";

# retrieving all status values for enumerated field Status
my @enum_vals = @{$field_info->{limit}{enumLimits}{regularList}};

print "Status values: ".join(', ', @enum_vals)."\n";

#The Status History field is always field number 15.
my @status_values = ars_decodeStatusHistory($entry{15});
my $i;
# loop trough the created Status Values array, which is an array that contains hash refs
# we'll print the Status name with it, which we retrieved earlier using ars_GetField.
foreach (@status_values) {
    print $enum_vals[$i++].": \n";
	if ($_->{USER}) { 
	print "\tUSER: ".$_->{USER}."\n";
    print "\tTIME: ".localtime($_->{TIME})."\n"; # with localtime we convert Epoch to human-readable
	} else {
    print "\tNo Status History entry\n"; 
    }	
}
# log off nicely.
ars_Logoff($ctrl);

exit 0;