Hacks: Revolution Xoops Banner System!
Posted by: slyssOn 2009/11/11 8:20:00 17099 readsI have finally created 2 functions to place your BANNERS everywhere you want and to choose which BANNER to show!!!
Is very very simple. You have 3 options to place your BANNERS in blocks:
1. No banners preference: view random banner
2. Banner preference: view specific banner
3. Client preference: view specific client banner
LET'S DO THIS:
Please, go to your root_directory/include/ and open the file functions.php
Go to the end of the file functions.php and before the tag ?> insert this code:
function getbanner_from_id_banner($banner_id)
{
###### Hack by www.stefanosilvestrini.com ######
global $xoopsConfig;
$db =& Database::getInstance();
$bresult = $db->query("SELECT COUNT(*) FROM ".$db->prefix("banner")." WHERE bid = ". $banner_id);
list ($numrows) = $db->fetchRow($bresult);
if ( $numrows > 1 ) {
$numrows = $numrows-1;
mt_srand((double)microtime()*1000000);
$bannum = mt_rand(0, $numrows);
} else {
$bannum = 0;
}
if ( $numrows > 0 ) {
$bresult = $db->query("SELECT * FROM ".$db->prefix("banner")." WHERE bid = ". $banner_id, 1, $bannum);
list ($bid, $cid, $imptotal, $impmade, $clicks, $imageurl, $clickurl, $date, $htmlbanner, $htmlcode) = $db->fetchRow($bresult);
if ($xoopsConfig['my_ip'] == xoops_getenv('REMOTE_ADDR')) {
// EMPTY
} else {
$db->queryF(sprintf("UPDATE %s SET impmade = impmade+1 WHERE bid = %u", $db->prefix("banner"), $bid));
}
/* Check if this impression is the last one and print the banner */
if ( $imptotal == $impmade ) {
$newid = $db->genId($db->prefix("bannerfinish")."_bid_seq");
$sql = sprintf("INSERT INTO %s (bid, cid, impressions, clicks, datestart, dateend) VALUES (%u, %u, %u, %u, %u, %u)", $db->prefix("bannerfinish"), $newid, $cid, $impmade, $clicks, $date, time());
$db->queryF($sql);
$db->queryF(sprintf("DELETE FROM %s WHERE bid = %u", $db->prefix("banner"), $bid));
}
if ($htmlbanner){
$bannerobject = $htmlcode;
}else{
$bannerobject = '';
}
return $bannerobject;
}
}
function getbanner_from_id_client($client_id)
{
###### Hack by www.stefanosilvestrini.com ######
global $xoopsConfig;
$db =& Database::getInstance();
$bresult = $db->query("SELECT COUNT(*) FROM ".$db->prefix("banner")." WHERE cid = ". $client_id);
list ($numrows) = $db->fetchRow($bresult);
if ( $numrows > 1 ) {
$numrows = $numrows-1;
mt_srand((double)microtime()*1000000);
$bannum = mt_rand(0, $numrows);
} else {
$bannum = 0;
}
if ( $numrows > 0 ) {
$bresult = $db->query("SELECT * FROM ".$db->prefix("banner")." WHERE cid = ". $client_id ." ORDER BY rand()", 1, $bannum);
list ($bid, $cid, $imptotal, $impmade, $clicks, $imageurl, $clickurl, $date, $htmlbanner, $htmlcode) = $db->fetchRow($bresult);
if ($xoopsConfig['my_ip'] == xoops_getenv('REMOTE_ADDR')) {
// EMPTY
} else {
$db->queryF(sprintf("UPDATE %s SET impmade = impmade+1 WHERE bid = %u", $db->prefix("banner"), $bid));
}
/* Check if this impression is the last one and print the banner */
if ( $imptotal == $impmade ) {
$newid = $db->genId($db->prefix("bannerfinish")."_bid_seq");
$sql = sprintf("INSERT INTO %s (bid, cid, impressions, clicks, datestart, dateend) VALUES (%u, %u, %u, %u, %u, %u)", $db->prefix("bannerfinish"), $newid, $cid, $impmade, $clicks, $date, time());
$db->queryF($sql);
$db->queryF(sprintf("DELETE FROM %s WHERE bid = %u", $db->prefix("banner"), $bid));
}
if ($htmlbanner){
$bannerobject = $htmlcode;
}else{
$bannerobject = '';
}
return $bannerobject;
}
}
then SAVE and CLOSE.
Now there are 3 simple ways to create your BANNERS BLOCKS:
CASE 1:
Place your BANNERS in your blocks (no limit for number of blocks) anywhere you want! BANNERS will be shown randomly!
Add a new custom Xoops block PHP and insert this code:
echo xoops_getbanner();
CASE 2:
Place your BANNERS in your blocks (no limit for number of blocks) anywhere you want! BANNERS will be shown by ID_BANNER and so, e.g., you can select a specific BANNER in a specific block!
Add a new custom Xoops block PHP and insert this code:
echo getbanner_from_id_banner(ID_BANNER);
where ID_BANNER = ID of BANNER to SHOW (you can see this ID on your BANNERS admin page --> Banner ID on Current Active Banners)
CASE 3:
Place your BANNERS in your blocks (no limit for number of blocks) anywhere you want! BANNERS will be shown by ID_CLIENT and so, e.g., if a client has 10 banners, your BANNERS will be view random only from this 10 BANNERS!
Add a new custom Xoops block PHP and insert this code:
echo getbanner_from_id_client(ID_CLIENT);
where ID_CLIENT = ID of CLIENT of BANNERS to SHOW (you can see this ID on your BANNERS admin page --> Banner ID on Advertising Clients)
THAT'S ALL!