Revolution Xoops Banner System!

Date 2009/11/11 8:20:00 | Topic: Hacks

I 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:

le="color: #000000"><?php function getbanner_from_id_banner($banner_id) { ###### Hack by http://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 = '<div align="center"><a href="'.XOOPS_URL.'/banners.php?op=click&bid='.$bid.'" rel="nofollow">'; if (stristr($imageurl, '.swf')) { $bannerobject = $bannerobject .'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="468" height="60">' .'<param name="movie" value="'.$imageurl.'"></param>' .'<param name="quality" value="high"></param>' .'<embed src="'.$imageurl.'" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="468" height="60">' .'</embed>' .'</object>'; } else { $bannerobject = $bannerobject.'<img src="'.$imageurl.'" alt="" />'; } $bannerobject = $bannerobject.'</a></div>'; } return $bannerobject; } } function getbanner_from_id_client($client_id) { ###### Hack by http://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 = '<div align="center"><a href="'.XOOPS_URL.'/banners.php?op=click&bid='.$bid.'" rel="nofollow">'; if (stristr($imageurl, '.swf')) { $bannerobject = $bannerobject .'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="468" height="60">' .'<param name="movie" value="'.$imageurl.'"></param>' .'<param name="quality" value="high"></param>' .'<embed src="'.$imageurl.'" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="468" height="60">' .'</embed>' .'</object>'; } else { $bannerobject = $bannerobject.'<img src="'.$imageurl.'" alt="" />'; } $bannerobject = $bannerobject.'</a></div>'; } 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:

le="color: #000000"><?php 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:

le="color: #000000"><?php 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:

le="color: #000000"><?php 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!



This article comes from XOOPS Web Application System
https://xoops.org

The URL for this story is:
https://xoops.org/modules/news/article.php?storyid=5095