Zikula_Value_Addons
[ class tree: Zikula_Value_Addons ] [ index: Zikula_Value_Addons ] [ all elements ]

Source for file pnuser.php

Documentation is available at pnuser.php

  1. <?php
  2. /**
  3.  * Zikula Application Framework
  4.  *
  5.  * @copyright (c) 2002, Zikula Development Team
  6.  * @link http://www.zikula.org
  7.  * @version $Id: pnuser.php 24342 2008-06-06 12:03:14Z markwest $
  8.  * @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
  9.  * @package Zikula_Value_Addons
  10.  * @subpackage Banners
  11.  */
  12.  
  13. /**
  14.  * the main user function
  15.  *
  16.  * @author Devin Hayes
  17.  * @return string HTML output string
  18.  */
  19. function banners_user_main()
  20. {
  21.     // Security check
  22.     if (!SecurityUtil::checkPermission('Banners::''::'ACCESS_READ)) {
  23.         return LogUtil::registerPermissionError();
  24.     }
  25.  
  26.     // load the admin language file to avoid duplication
  27.     pnModLangLoad('Banners''admin');
  28.  
  29.     // Create output object
  30.     $pnRender pnRender::getInstance('Banners'false);
  31.  
  32.     return $pnRender->fetch('banners_user_main.htm');
  33. }
  34.  
  35. /**
  36.  * the main user function
  37.  *
  38.  * @author Devin Hayes
  39.  * @return string HTML output string
  40.  */
  41. function Banners_user_client($args)
  42. {
  43.     $login FormUtil::getPassedValue('login'isset($args['login']$args['login'null'REQUEST');
  44.     $pass FormUtil::getPassedValue('pass'isset($args['pass']$args['pass'null'REQUEST');
  45.  
  46.     // Security check
  47.     if (!SecurityUtil::checkPermission('Banners::''::'ACCESS_READ)) {
  48.         return LogUtil::registerPermissionError();
  49.     }
  50.  
  51.     // load the admin language file to avoid duplication
  52.     pnModLangLoad('Banners''admin');
  53.  
  54.     // check our input
  55.     if ($login == '' OR $pass == ''{
  56.         return pnRedirect(pnModURL('Banners''user''main'));
  57.     }
  58.  
  59.     // check the authorisation key
  60.     // note - we're not confirming the auth key since the banner client setup doesn't have any sessions
  61.     // so the auth key checking breaks a reload
  62.     /*if (!SecurityUtil::confirmAuthKey()) {
  63.         LogUtil::registerError (_BADAUTHKEY);
  64.         return pnRedirect(pnModURL('Banners', 'user', 'main'));
  65.     }*/
  66.  
  67.     // validate the user login
  68.     $client pnModAPIFunc('Banners''user''validateclient'array('login' => $login'pass' => $pass));
  69.     if (!$client{
  70.         return pnRedirect(pnModURL('Banners''user''main'));
  71.     else {
  72.         $banners pnModAPIFunc('Banners''user''getall'array('cid' => $client['cid']));
  73.     }
  74.  
  75.     // calculate some additional values
  76.     foreach($banners as $key => $banner{
  77.         if ($banners[$key]['impmade'== 0{
  78.             $banners[$key]['percent'0;
  79.         else {
  80.             $banners[$key]['percent'substr(100 $banners[$key]['clicks'$banners[$key]['impmade']05);
  81.         }
  82.         if ($banners[$key]['imptotal'== 0{
  83.             $banners[$key]['impleft'=_BANNERS_UNLIMITED;
  84.             $banners[$key]['imptotal'_BANNERS_UNLIMITED;
  85.         else {
  86.             $banners[$key]['impleft'$banners[$key]['imptotal']-$banners[$key]['impmade'];
  87.         }
  88.     }
  89.  
  90.     // Create output object
  91.     $pnRender pnRender::getInstance('Banners'false);
  92.     $pnRender->assign('banners'$banners);
  93.     $pnRender->assign(array('login' => $login'pass' => $pass));
  94.     $pnRender->assign($client);
  95.     return $pnRender->fetch('banners_user_config.htm');
  96. }
  97.  
  98. /**
  99.  * e-mail usage stats for a banner to the designated contact e-mail
  100.  *
  101.  * @author Devin Hayes
  102.  * @return string HTML output string
  103.  */
  104. function Banners_user_emailstats($args)
  105. {
  106.     $login FormUtil::getPassedValue('login'isset($args['login']$args['login'null'GET');
  107.     $pass FormUtil::getPassedValue('pass'isset($args['pass']$args['pass'null'GET');
  108.     $cid FormUtil::getPassedValue('cid'isset($args['cid']$args['cid'null'GET');
  109.     $bid FormUtil::getPassedValue('bid'isset($args['bid']$args['bid'null'GET');
  110.  
  111.     // Security check
  112.     if (!SecurityUtil::checkPermission('Banners::''::'ACCESS_READ)) {
  113.         return LogUtil::registerPermissionError();
  114.     }
  115.  
  116.     // load the admin language file to avoid duplication
  117.     pnModLangLoad('Banners''admin');
  118.  
  119.     $client pnModAPIFunc('Banners''user''validateclient'array('login' => $login'pass' => $pass));
  120.     if (!$client{
  121.     else {
  122.         if (!pnModAPIFunc('Banners''user''emailstats',
  123.                            array('bid' => $bid'email' => $client['email']'cid' => $client['cid']))) {
  124.             LogUtil::registerError (_BANNERS_CONTACTADMIN);
  125.         else {
  126.             LogUtil::registerStatus (_BANNERS_STATSSENT);
  127.         }
  128.     }
  129.  
  130.     return pnRedirect(pnModURL('Banners''user''client'array('login' => $login'pass' => $pass)));
  131. }
  132.  
  133. /**
  134.  * update the banners target url
  135.  *
  136.  * @author Devin Hayes
  137.  * @return string HTML output string
  138.  */
  139. function Banners_user_changeurl($args)
  140. {
  141.     $login FormUtil::getPassedValue('login'isset($args['login']$args['login'null'POST');
  142.     $pass FormUtil::getPassedValue('pass'isset($args['pass']$args['pass'null'POST');
  143.     $cid FormUtil::getPassedValue('cid'isset($args['cid']$args['cid'null'POST');
  144.     $bid FormUtil::getPassedValue('bid'isset($args['bid']$args['bid'null'POST');
  145.     $url FormUtil::getPassedValue('url'isset($args['url']$args['url'null'POST');
  146.  
  147.     if (!SecurityUtil::checkPermission('Banners::''::'ACCESS_READ)) {
  148.         return LogUtil::registerPermissionError();
  149.     }
  150.  
  151.     // load the admin language file to avoid duplication
  152.     pnModLangLoad('Banners''admin');
  153.  
  154.     if (!isset($bid|| !is_numeric($bid)){
  155.         return DataUtil::formatForDisplayHTML(_MODARGSERROR);
  156.     }
  157.  
  158.     // check client credentials
  159.     $client pnModAPIFunc('Banners''user''validateclient'array('login' => $login'pass' => $pass));
  160.     if (!$client{
  161.     else {
  162.         if (!pnModAPIFunc('Banners''user''changeurl',
  163.                           array('bid' => $bid'url' => $url))) {
  164.             LogUtil::registerError (_BANNERS_CONTACTADMIN);
  165.         else {
  166.             LogUtil::registerStatus (_BANNERS_URLCHANGED);
  167.         }
  168.     }
  169.  
  170.     return pnRedirect(pnModURL('Banners''user''client'array('login' => $login'pass' => $pass)));
  171. }
  172.  
  173. /**
  174.  * register a click on a banner and redirec to the target url
  175.  *
  176.  * @author Devin Hayes
  177.  * @return string HTML output string
  178.  */
  179. function Banners_user_click($args)
  180. {
  181.     // check that were coming from a local referer
  182.     if (!pnLocalReferer(true)) {
  183.         return DataUtil::formatForDisplay(_MODULENOAUTH);
  184.     }
  185.  
  186.     $bid FormUtil::getPassedValue('bid'isset($args['bid']$args['bid'null'GET');
  187.  
  188.     if (!isset($bid&& !is_numeric($bid)){
  189.         return LogUtil::registerError (_MODARGSERROR);
  190.     }
  191.  
  192.     $banner pnModAPIFunc('Banners''user''get'array('bid' => $bid));
  193.     if (!$banner{
  194.         return DataUtil::formatForDisplayHTML(_NOSUCHITEM);
  195.     }
  196.  
  197.     // register the click and redirect
  198.     if (pnModAPIFunc('Banners''user''click'array('bid' => $bid))){
  199.         if (strpos($banner['clickurl']'index.php'=== 0{
  200.             // do nothing, local system URL
  201.         elseif (substr($banner['clickurl']07!= 'http://'){
  202.             $banner['clickurl''http://'.$banner['clickurl'];
  203.         }
  204.         return pnRedirect($banner['clickurl']array('HTTP/1.1 301 Moved Permanently'));
  205.     }
  206.     return false;
  207. }
  208.  
  209. /**
  210.  * display a random banner
  211.  *
  212.  * code migrated from pnBannerDisplay which now calls this api
  213.  * @see pnBanners.php
  214.  * @param $args['type'] banner type
  215.  * @return string containing banner or &nbsp;
  216.  */
  217. function Banners_user_display($args)
  218. {
  219.     // test on config settings
  220.     if (pnModGetVar('Banners''banners'!= 1{
  221.         return '&nbsp;';
  222.     }
  223.  
  224.     // check our input
  225.     if (!isset($args['type']|| !is_numeric($args['type'])) {
  226.         $args['type'1;
  227.     }
  228.  
  229.     // get the banner count
  230.     $numrows pnModAPIFunc('Banners''user''countitems'array('type' => $args['type']));
  231.  
  232.     // Get a random banner if exist any.
  233.     // More efficient random stuff, thanks to Cristian Arroyo from http://www.planetalinux.com.ar
  234.     if ($numrows >= 1{
  235.         $numrows $numrows-1;
  236.         mt_srand((double)microtime(1000000);
  237.         $bannum mt_rand(0$numrows);
  238.     else {
  239.         return '&nbsp;';
  240.     }
  241.  
  242.     $banners pnModAPIFunc('Banners''user''getall'array('type' => $args['type']));
  243.     if (isset($banners[$bannum])) {
  244.         $banner $banners[$bannum];
  245.     else {
  246.         return '&nbsp;';
  247.     }
  248.  
  249.     // check the current host and admin exceptions
  250.     // log the impression if required
  251.     $myIP pnModGetVar('banners''myIP');
  252.     $myhost pnServerGetVar('REMOTE_ADDR');
  253.     if (!empty($myIP&& substr($myhost0strlen($myIP)) != $myIP{
  254.         pnModAPIFunc('Banners''user''impmade'array('bid' => $banner['bid']));
  255.     }
  256.  
  257.     // Check if this impression is the last one and print the banner
  258.     if ($banner['imptotal'&& $banner['imptotal'== $banner['impmade']{
  259.         pnModAPIFunc('Banners''user''finish'array('bid' => $banner['bid']));
  260.     }
  261.  
  262.     // check for a flash banner
  263.     if (strtolower(substr($banner['imageurl']-4)) == '.swf'{
  264.         // flash banner code based on Banners Plus code; tidied for (x)html
  265.         // Original comment (Powered by E.U LUGUNAR (http://www.lugunar.com))
  266.         $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">';
  267.         $bannerstring .= '<param name="movie" value="'.DataUtil::formatForDisplay($banner['imageurl']).'" />';
  268.         $bannerstring .= '<param name="quality" value="high" />';
  269.         $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" />';
  270.         $bannerstring .= '</object>';
  271.     else {
  272.         $bannerstring '<a href="'DataUtil::formatForDisplay(pnModURL('Banners''user''click'array('bid' => $banner['bid']))).'" title="' DataUtil::formatForDisplay($banner['clickurl']);
  273.         if (pnModGetVar('Banners''openinnewwindow')) {
  274.             $bannerstring .= ' " target="_blank';
  275.         }
  276.         $bannerstring .= '">';
  277.         $bannerstring .= '<img src="'.DataUtil::formatForDisplay($banner['imageurl']'" alt="'.DataUtil::formatForDisplay($banner['clickurl'].'" />';
  278.         $bannerstring .= '</a>';
  279.     }
  280.  
  281.     return $bannerstring;
  282. }

Documentation generated on Fri, 18 Jul 2008 21:54:47 +0200 by phpDocumentor 1.4.1