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_GetListEntry.pl,v 1.3 2009/04/14 12:28:07 mbeijen Exp $
#
# NAME
#   ars_GetListEntry.pl [server] [username] [password]
#
# DESCRIPTION
#   Demonstration of GetListEntry().
#
# AUTHOR
#   Jeff Murphy
#   jcmurphy@buffalo.edu
#
# $Log: ars_GetListEntry.pl,v $
# Revision 1.3  2009/04/14 12:28:07  mbeijen
# Updated to work with v5 and higher API
#
# Revision 1.2  2000/06/01 13:45:20  jcmurphy
# *** empty log message ***
#
# Revision 1.1  1998/03/25 22:52:51  jcmurphy
# Initial revision
#
#
#
use ARS;
use strict;

die "usage: $0 server username password \n"
  unless ( $#ARGV >= 2 );

my ( $server, $user, $password ) = ( shift, shift, shift );

#Logging in to the server
( my $ctrl = ars_Login( $server, $user, $password ) )
  || die "ars_Login: $ars_errstr";

# Define form and fields - these may have different names on your server
my $schema     = "User";
my $login_name = "Login Name";
my $lic_type   = "License Type";
my $full_name  = "Full Name";

( my %fids = ars_GetFieldTable( $ctrl, $schema ) )
  || die "ars_GetFieldTable: $ars_errstr";

( my $qual = ars_LoadQualifier( $ctrl, $schema, "(1 = 1)" ) )
  || die "ars_LoadQualifier: $ars_errstr";

# basic format: allow the server to provide sorting order
# and query list fields.

print "Testing: basic format.\n";

( my @entries = ars_GetListEntry( $ctrl, $schema, $qual, 0, 0 ) )
  || die "ars_GetListEntry: $ars_errstr";

for ( my $i = 0 ; $i < $#entries ; $i += 2 ) {
    printf( "%s %s\n", $entries[$i], $entries[ $i + 1 ] );
}

# another format: specify a sorting order.
# sort by license type, ascending.

print "Testing: basic + sorting format.\n";

( my @sorted_entries =
      ars_GetListEntry( $ctrl, $schema, $qual, 0, 0, $fids{$login_name}, 1 ) )
  ||    # sort on Login Name, ascending
  die "ars_GetListEntry: $ars_errstr";

for ( my $i = 0 ; $i < $#sorted_entries ; $i += 2 ) {
    printf( "%s %s\n", $sorted_entries[$i], $sorted_entries[ $i + 1 ] );
}

# another format: specify a custom query list field-list.

print "Testing: basic + sorting + custom field-list format.\n";

if ( !defined( $fids{$login_name} ) || !defined( $fids{$full_name} ) ) {
    print
"Sorry. Either i can't find the field-id for \"$login_name\" or \"$full_name\"\n on your \"$schema\" form. I'm skipping this test.\n";
}
else {
    (
        my @basic_sorted_entries = ars_GetListEntry(
            $ctrl, $schema, $qual, 0, 0,
            [
                {
                    columnWidth => 10,
                    separator   => ' ',
                    fieldId     => $fids{$login_name}
                },    # first field: login name
                {
                    columnWidth => 15,
                    separator   => ' ',
                    fieldId     => $fids{$full_name}
                },    # second field: full name
            ],
            $fids{$full_name},
            2
        )
    ) || die "ars_GetListEntry: $ars_errstr";

    for ( my $i = 0 ; $i < $#basic_sorted_entries ; $i += 2 ) {
        printf( "%s %s\n",
            $basic_sorted_entries[$i],
            $basic_sorted_entries[ $i + 1 ] );
    }
}

ars_Logoff($ctrl);

exit 0;