ARS-Simple
view release on metacpan or search on metacpan
lib/ARS/Simple.pm view on Meta::CPAN
$self->_carp("Connected to Remedy ARSystem has not been establised yet.\n");
return;
}
return 1;
}
sub get_list
{
my ($self, $args) = @_; # Expect args keys of 'form', 'query', optionally 'max_returns'
# Check ARSystem initailised
return unless $self->_check_initialised();
# Check required args
unless ($args->{form} && $args->{query})
{
$self->_carp("get_list() requires 'form' and 'query' arguments\n");
return;
}
# Create a qualifier struct
my $qual = $self->_load_qualifier($args);
return unless $qual;
# Set the limit
$self->set_max_entries($args->{max_returns});
# Get the entryId
my @entries = ars_GetListEntry($self->{ctl}, $args->{form}, $qual, 0, 0,
[{columnWidth => 1, separator => ' ', fieldId => 1 }] # Minimise the amount of data returned
);
# Reset the limit
$self->_reset_max_entries();
my @entryIds;
# Speed hack for large retuns
$#entryIds = $#entries;
@entryIds = ();
for (my $x = 0; $x < $#entries; $x += 2)
{
#Assign the entryId's to the array, stripping the query list values
push @entryIds, $entries[$x];
}
my %results = ( numMatches => scalar(@entryIds), eids => \@entryIds );
return \%results;
}
sub _load_qualifier
{
my ($self, $args) = @_;
my $qual = ars_LoadQualifier($self->{ctl}, $args->{form}, $args->{query});
unless ($qual)
{
$self->_carp("_load_qualifier() Error processing query:\n$ars_errstr\n");
}
return $qual;
}
sub get_data_by_label
{
my ($self, $args) = @_;
my $form = $args->{form};
my $query = $args->{query};
my $lfid_hr = $args->{lfid};
my @fid = values %$lfid_hr;
# Check ARSystem initailised
return unless $self->_check_initialised();
# Check required args
unless ($args->{form} && $args->{query})
{
$self->_carp("get_data_by_label() requires 'form' and 'query' arguments\n");
return;
}
#-- Create a qualifier struct
my $qual = $self->_load_qualifier($args);
return unless $qual;
# Set the limit
$self->set_max_entries($args->{max_returns});
# Get the data from the form defined by qualifier qual
my %entryList;
if ($ARS::VERSION >= 1.8)
{
%entryList = ars_GetListEntryWithFields($self->{ctl}, $form, $qual, 0, 0, \@fid);
}
else
{
%entryList = ars_GetListEntryWithFields($self->{ctl}, $form, $qual, 0, \@fid);
}
# Reset the limit
$self->_reset_max_entries();
unless (%entryList)
{
no warnings qw(uninitialized);
if ($ars_errstr)
{
$self->_carp("get_data_by_label() failed.\nError=$ars_errstr\nForm=$form\nQuery=$query\n");
}
else
{
if ($self->{log})
{
$self->{log}->msg(3, "get_data_by_label() no records found.\n");
}
}
return;
( run in 0.425 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )