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 6301 Apr 3, 2008, 2:46 AM
Thread Re: [EZFrag] How to use this function in a CGI script
EZFrag 6184 Apr 3, 2008, 2:58 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 6228 Apr 3, 2008, 3:33 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 6165 Apr 3, 2008, 4:37 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 6211 Apr 3, 2008, 4:55 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 6165 Apr 3, 2008, 5:16 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 6170 Apr 3, 2008, 5:30 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 6177 Apr 3, 2008, 5:38 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 6180 Apr 3, 2008, 6:02 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 6160 Apr 3, 2008, 6:26 AM
Post Re: [EZFrag] How to use this function in a CGI script
Andy 6159 Apr 3, 2008, 6:31 AM