Source for file banner.php

Documentation is available at banner.php

  1. <?php
  2. /**
  3.  * @package     Joomla.Site
  4.  * @subpackage  com_banners
  5.  *
  6.  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
  7.  * @license     GNU General Public License version 2 or later; see LICENSE.txt
  8.  */
  9.  
  10. defined('_JEXEC'or die;
  11.  
  12. JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR '/tables');
  13.  
  14. /**
  15.  * Banner model for the Joomla Banners component.
  16.  *
  17.  * @package     Joomla.Site
  18.  * @subpackage  com_banners
  19.  * @since       1.5
  20.  */
  21. {
  22.     protected $_item;
  23.  
  24.     /**
  25.      * Clicks the URL, incrementing the counter
  26.      *
  27.      * @return  void 
  28.      *
  29.      * @since   1.5
  30.      */
  31.     public function click()
  32.     {
  33.         $id $this->getState('banner.id');
  34.  
  35.         // update click count
  36.         $db $this->getDbo();
  37.         $query $db->getQuery(true)
  38.             ->update('#__banners')
  39.             ->set('clicks = (clicks + 1)')
  40.             ->where('id = ' . (int) $id);
  41.  
  42.         $db->setQuery($query);
  43.  
  44.         try
  45.         {
  46.             $db->execute();
  47.         }
  48.         catch (RuntimeException $e)
  49.         {
  50.             JError::raiseError(500$e->getMessage());
  51.         }
  52.  
  53.         // track clicks
  54.  
  55.         $item $this->getItem();
  56.  
  57.         $trackClicks $item->track_clicks;
  58.  
  59.         if ($trackClicks && $item->cid)
  60.         {
  61.             $trackClicks $item->client_track_clicks;
  62.         }
  63.  
  64.         if ($trackClicks 0)
  65.         {
  66.             $config JComponentHelper::getParams('com_banners');
  67.             $trackClicks $config->get('track_clicks');
  68.         }
  69.  
  70.         if ($trackClicks 0)
  71.         {
  72.             $trackDate JFactory::getDate()->format('Y-m-d H');
  73.  
  74.             $query->clear()
  75.                 ->select($db->quoteName('count'))
  76.                 ->from('#__banner_tracks')
  77.                 ->where('track_type=2')
  78.                 ->where('banner_id=' . (int) $id)
  79.                 ->where('track_date=' $db->quote($trackDate));
  80.  
  81.             $db->setQuery($query);
  82.  
  83.             try
  84.             {
  85.                 $db->execute();
  86.             }
  87.             catch (RuntimeException $e)
  88.             {
  89.                 JError::raiseError(500$e->getMessage());
  90.             }
  91.  
  92.             $count $db->loadResult();
  93.  
  94.             $query->clear();
  95.  
  96.             if ($count)
  97.             {
  98.                 // update count
  99.                 $query->update('#__banner_tracks')
  100.                     ->set($db->quoteName('count'' = (' $db->quote('count'' + 1)')
  101.                     ->where('track_type=2')
  102.                     ->where('banner_id=' . (int) $id)
  103.                     ->where('track_date=' $db->quote($trackDate));
  104.             }
  105.             else
  106.             {
  107.                 // insert new count
  108.                 //sqlsrv change
  109.                 $query->insert('#__banner_tracks')
  110.                     ->columns(
  111.                         array(
  112.                             $db->quoteName('count')$db->quoteName('track_type'),
  113.                             $db->quoteName('banner_id')$db->quoteName('track_date')
  114.                         )
  115.                     )
  116.                     ->values('1, 2,' . (int) $id ',' $db->quote($trackDate));
  117.             }
  118.  
  119.             $db->setQuery($query);
  120.  
  121.             try
  122.             {
  123.                 $db->execute();
  124.             }
  125.             catch (RuntimeException $e)
  126.             {
  127.                 JError::raiseError(500$e->getMessage());
  128.             }
  129.         }
  130.     }
  131.  
  132.     /**
  133.      * Get the data for a banner.
  134.      *
  135.      * @return  object 
  136.      */
  137.     public function &getItem()
  138.     {
  139.         if (!isset($this->_item))
  140.         {
  141.             $cache JFactory::getCache('com_banners''');
  142.  
  143.             $id $this->getState('banner.id');
  144.  
  145.             $this->_item = $cache->get($id);
  146.  
  147.             if ($this->_item === false)
  148.             {
  149.                 // redirect to banner url
  150.                 $db $this->getDbo();
  151.                 $query $db->getQuery(true)
  152.                     ->select(
  153.                         'a.clickurl as clickurl,' .
  154.                             'a.cid as cid,' .
  155.                             'a.track_clicks as track_clicks'
  156.                     )
  157.                     ->from('#__banners as a')
  158.                     ->where('a.id = ' . (int) $id)
  159.  
  160.                     ->join('LEFT''#__banner_clients AS cl ON cl.id = a.cid')
  161.                     ->select('cl.track_clicks as client_track_clicks');
  162.  
  163.                 $db->setQuery($query);
  164.  
  165.                 try
  166.                 {
  167.                     $db->execute();
  168.                 }
  169.                 catch (RuntimeException $e)
  170.                 {
  171.                     JError::raiseError(500$e->getMessage());
  172.                 }
  173.  
  174.                 $this->_item = $db->loadObject();
  175.                 $cache->store($this->_item$id);
  176.             }
  177.         }
  178.  
  179.         return $this->_item;
  180.     }
  181.  
  182.     /**
  183.      * Get the URL for a banner
  184.      *
  185.      * @return  string 
  186.      *
  187.      * @since   1.5
  188.      */
  189.     public function getUrl()
  190.     {
  191.         $item $this->getItem();
  192.         $url $item->clickurl;
  193.  
  194.         // check for links
  195.         if (!preg_match('#http[s]?://|index[2]?\.php#'$url))
  196.         {
  197.             $url "http://$url";
  198.         }
  199.  
  200.         return $url;
  201.     }
  202. }

Documentation generated on Tue, 19 Nov 2013 14:54:17 +0100 by phpDocumentor 1.4.3