Gossamer Forum
Home : Products : Gossamer Forum : Development, Plugins and Globals :

How to use this function in a CGI script

Quote Reply
How to use this function in a CGI script
Hi there,Wink

I have the following script:

Code:
sub query {
# --------------------------------------------------
my %opts = @_;
my $db = eval {
GT::SQL->new(
def_path => "$RC::CFG->{forum_admin_path}/defs", subclass => 0
)
};
$@ and return $@;
my $Post = $db->table('Post');
if ( my $forum_id_fk = $opts{forum_id_fk} ) {
my @forum_ids = split /\s*,\s*/, $forum_id_fk;
$opts{forum_id_fk} = \@forum_ids;
};
# Ensure that the system fixes the query to be exact normally
$opts{"route_category_id_fk-opt"} ||= '=';
$opts{"post_depth-opt"} ||= '=';
$opts{"post_root_id-opt"} ||= '=';
if ( my $days = $opts{days_within} ) {
$opts{"post_latest_reply-le"} = 2_000_000_000 - time + 86400 * $days;
}
# Allow specifying only specific columns
my $cols = delete $opts{cols};
if ($cols) {
my @selected = split /,/, $cols;
$opts{rs} = \@selected;
}
my $save;
if ($opts{index}) {
$save = $Post->{name};
$Post->{name} = "$Post->{name} /*!32312 USE INDEX ($opts{index}) */"; # MySQL hack to use the proper index
}
my $hits = $Post->query_sth( \%opts );
if ($save) {
$Post->{name} = $save;
}
my $num_found = $Post->hits;
my $prefix = $opts{prefix} || 'post';
my @loop;
while ( my $h = $hits->fetchrow_hashref ) {
$h = { map {( "${prefix}_$_" => $h->{$_} )} keys %$h };
push @loop, $h;
}
$prefix = $opts{prefix} || 'posts';
return {
"${prefix}_hits" => $num_found,
"${prefix}_loop" => \@loop
};
}

This script is called like so:

Code:

RC::Forum::query(
'forum_id_fk', '9,15,1,35,16,33,48,18,2,6,37,14,42,19,21,4,5,11,12,13,7,30,29,28,41',
"post_username", $user_username,
"post_root_id", 0,
"mh", 5,
"sb", "post_latest_reply",
"so", "asc",
"cols", "post_id,post_subject,post_replies,post_thread_hot",
"index", "p_rfl",
"days_within", 90
);

How should I go to work to use the return values of the function if I use it in a CGI script? It is currently used for the dynamic HTML in the templates. I know the first return value is a number, I think the second is an 'array'. I am not allowed to change the function in anyway. Thanks for the help Smile


Sacrifice is not about what you lose,
it is about what you gain in the process.
Subject Author Views Date
Thread How to use this function in a CGI script EZFrag 3425 Apr 3, 2008, 2:46 AM
Thread Re: [EZFrag] How to use this function in a CGI script
EZFrag 3357 Apr 3, 2008, 2:58 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 3399 Apr 3, 2008, 3:33 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 3337 Apr 3, 2008, 4:37 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 3382 Apr 3, 2008, 4:55 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 3341 Apr 3, 2008, 5:16 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 3338 Apr 3, 2008, 5:30 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 3337 Apr 3, 2008, 5:38 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 3340 Apr 3, 2008, 6:02 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 3335 Apr 3, 2008, 6:26 AM
Post Re: [EZFrag] How to use this function in a CGI script
Andy 3333 Apr 3, 2008, 6:31 AM