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 2989 Apr 3, 2008, 2:46 AM
Thread Re: [EZFrag] How to use this function in a CGI script
EZFrag 2936 Apr 3, 2008, 2:58 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 2976 Apr 3, 2008, 3:33 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 2916 Apr 3, 2008, 4:37 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 2947 Apr 3, 2008, 4:55 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 2920 Apr 3, 2008, 5:16 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 2917 Apr 3, 2008, 5:30 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 2916 Apr 3, 2008, 5:38 AM
Thread Re: [EZFrag] How to use this function in a CGI script
Andy 2918 Apr 3, 2008, 6:02 AM
Thread Re: [Andy] How to use this function in a CGI script
EZFrag 2914 Apr 3, 2008, 6:26 AM
Post Re: [EZFrag] How to use this function in a CGI script
Andy 2912 Apr 3, 2008, 6:31 AM