Source for file pnuser.php
Documentation is available at pnuser.php
* Zikula Application Framework
* @copyright (c) 2002, Zikula Development Team
* @link http://www.zikula.org
* @version $Id: pnuser.php 24342 2008-06-06 12:03:14Z markwest $
* @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
* @package Zikula_Value_Addons
* @return string HTML output string
// load the admin language file to avoid duplication
return $pnRender->fetch('banners_user_main.htm');
* @return string HTML output string
// load the admin language file to avoid duplication
if ($login == '' OR $pass == '') {
// check the authorisation key
// note - we're not confirming the auth key since the banner client setup doesn't have any sessions
// so the auth key checking breaks a reload
/*if (!SecurityUtil::confirmAuthKey()) {
LogUtil::registerError (_BADAUTHKEY);
return pnRedirect(pnModURL('Banners', 'user', 'main'));
// validate the user login
$client = pnModAPIFunc('Banners', 'user', 'validateclient', array('login' => $login, 'pass' => $pass));
$banners = pnModAPIFunc('Banners', 'user', 'getall', array('cid' => $client['cid']));
// calculate some additional values
foreach($banners as $key => $banner) {
if ($banners[$key]['impmade'] == 0) {
$banners[$key]['percent'] = 0;
$banners[$key]['percent'] = substr(100 * $banners[$key]['clicks'] / $banners[$key]['impmade'], 0, 5);
if ($banners[$key]['imptotal'] == 0) {
$banners[$key]['impleft'] = $banners[$key]['imptotal']- $banners[$key]['impmade'];
$pnRender->assign('banners', $banners);
$pnRender->assign(array('login' => $login, 'pass' => $pass));
$pnRender->assign($client);
return $pnRender->fetch('banners_user_config.htm');
* e-mail usage stats for a banner to the designated contact e-mail
* @return string HTML output string
// load the admin language file to avoid duplication
$client = pnModAPIFunc('Banners', 'user', 'validateclient', array('login' => $login, 'pass' => $pass));
array('bid' => $bid, 'email' => $client['email'], 'cid' => $client['cid']))) {
return pnRedirect(pnModURL('Banners', 'user', 'client', array('login' => $login, 'pass' => $pass)));
* update the banners target url
* @return string HTML output string
// load the admin language file to avoid duplication
// check client credentials
$client = pnModAPIFunc('Banners', 'user', 'validateclient', array('login' => $login, 'pass' => $pass));
array('bid' => $bid, 'url' => $url))) {
return pnRedirect(pnModURL('Banners', 'user', 'client', array('login' => $login, 'pass' => $pass)));
* register a click on a banner and redirec to the target url
* @return string HTML output string
// check that were coming from a local referer
$banner = pnModAPIFunc('Banners', 'user', 'get', array('bid' => $bid));
// register the click and redirect
if (pnModAPIFunc('Banners', 'user', 'click', array('bid' => $bid))){
if (strpos($banner['clickurl'], 'index.php') === 0) {
// do nothing, local system URL
} elseif (substr($banner['clickurl'], 0, 7) != 'http://'){
$banner['clickurl'] = 'http://'. $banner['clickurl'];
return pnRedirect($banner['clickurl'], array('HTTP/1.1 301 Moved Permanently'));
* display a random banner
* code migrated from pnBannerDisplay which now calls this api
* @param $args['type'] banner type
* @return string containing banner or
// test on config settings
if (!isset ($args['type']) || !is_numeric($args['type'])) {
$numrows = pnModAPIFunc('Banners', 'user', 'countitems', array('type' => $args['type']));
// Get a random banner if exist any.
// More efficient random stuff, thanks to Cristian Arroyo from http://www.planetalinux.com.ar
$banners = pnModAPIFunc('Banners', 'user', 'getall', array('type' => $args['type']));
if (isset ($banners[$bannum])) {
$banner = $banners[$bannum];
// check the current host and admin exceptions
// log the impression if required
if (!empty($myIP) && substr($myhost, 0, strlen($myIP)) != $myIP) {
pnModAPIFunc('Banners', 'user', 'impmade', array('bid' => $banner['bid']));
// Check if this impression is the last one and print the banner
if ($banner['imptotal'] > 0 && $banner['imptotal'] == $banner['impmade']) {
pnModAPIFunc('Banners', 'user', 'finish', array('bid' => $banner['bid']));
// check for a flash banner
// flash banner code based on Banners Plus code; tidied for (x)html
// Original comment (Powered by E.U LUGUNAR (http://www.lugunar.com))
$bannerstring = '<object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000">';
$bannerstring .= '<param name="quality" value="high" />';
$bannerstring .= '<embed name="animacion" src='. DataUtil::formatForDisplay($banner['imageurl']). ' quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" />';
$bannerstring .= '</object>';
$bannerstring .= ' " target="_blank';
|