| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 | 
							- <?php
 
- /**
 
-  *
 
-  * PHP Pro Bid $Id$ 4uPn9uhRsRNaH8ZOFoNy2EFgYgo9SQn/iqUN/jfLF7s=
 
-  *
 
-  * @link        http://www.phpprobid.com
 
-  * @copyright   Copyright (c) 2016 Online Ventures Software & CodeCube SRL
 
-  * @license     http://www.phpprobid.com/license Commercial License
 
-  *
 
-  * @version     7.8
 
-  */
 
- /**
 
-  * advert display view helper class
 
-  */
 
- namespace Ppb\View\Helper;
 
- use Cube\View\Helper\AbstractHelper,
 
-     Cube\Controller\Front,
 
-     Ppb\Service\Advertising as AdvertisingService,
 
-     Ppb\Service\Table\Relational\Categories as CategoriesService,
 
-     Ppb\Db\Table\Row\Advert as AdvertModel,
 
-     Cube\Db\Select,
 
-     Cube\Db\Expr;
 
- class Advert extends AbstractHelper
 
- {
 
-     /**
 
-      *
 
-      * advertising service
 
-      *
 
-      * @var \Ppb\Service\Advertising
 
-      */
 
-     protected $_advertising;
 
-     /**
 
-      *
 
-      * advert model
 
-      *
 
-      * @var \Ppb\Db\Table\Row\Advert
 
-      */
 
-     protected $_advert;
 
-     /**
 
-      *
 
-      * get advert model
 
-      *
 
-      * @return \Ppb\Db\Table\Row\Advert
 
-      * @throws \InvalidArgumentException
 
-      */
 
-     public function getAdvert()
 
-     {
 
-         if (!$this->_advert instanceof AdvertModel) {
 
-             throw new \InvalidArgumentException("The advert model has not been instantiated");
 
-         }
 
-         return $this->_advert;
 
-     }
 
-     /**
 
-      *
 
-      * set advert model
 
-      *
 
-      * @param \Ppb\Db\Table\Row\Advert $advert
 
-      *
 
-      * @throws \InvalidArgumentException
 
-      * @return $this
 
-      */
 
-     public function setAdvert(AdvertModel $advert)
 
-     {
 
-         if (!$advert instanceof AdvertModel) {
 
-             throw new \InvalidArgumentException("The advert model must be an instance of \Ppb\Db\Table\Row\Advert");
 
-         }
 
-         $this->_advert = $advert;
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      * get content sections table service
 
-      *
 
-      * @return \Ppb\Service\Advertising
 
-      */
 
-     public function getAdvertising()
 
-     {
 
-         if (!$this->_advertising instanceof AdvertisingService) {
 
-             $this->setAdvertising(
 
-                 new AdvertisingService());
 
-         }
 
-         return $this->_advertising;
 
-     }
 
-     /**
 
-      *
 
-      * set advertising service
 
-      *
 
-      * @param \Ppb\Service\Advertising $advertising
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setAdvertising(AdvertisingService $advertising)
 
-     {
 
-         $this->_advertising = $advertising;
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      * display the currently selected advert
 
-      *
 
-      * return string|null
 
-      */
 
-     public function display()
 
-     {
 
-         $advert = $this->getAdvert();
 
-         $advert->addView();
 
-         switch ($advert['type']) {
 
-             case 'image':
 
-                 $view = $this->getView();
 
-                 $imageSrc = $view->baseUrl . \Ppb\Utility::URI_DELIMITER . \Ppb\Utility::getFolder('uploads') . \Ppb\Utility::URI_DELIMITER . $advert['content'];
 
-                 return '<a href="' . $view->url($advert->link()) . '" 
 
-                         target="' . (($advert->getData('new_tab')) ? '_blank' : '_self') . '" 
 
-                         class="img-advert">
 
-                     <img src="' . $imageSrc . '" alt="Banner" class="img-advert">
 
-                 </a>';
 
-                 break;
 
-             case 'code':
 
-                 return $advert['content'];
 
-                 break;
 
-         }
 
-         return null;
 
-     }
 
-     /**
 
-      *
 
-      * main method, only returns object instance
 
-      *
 
-      * @param \Ppb\Db\Table\Row\Advert $advert
 
-      *
 
-      * @return $this
 
-      */
 
-     public function advert(AdvertModel $advert = null)
 
-     {
 
-         if ($advert !== null) {
 
-             $this->setAdvert($advert);
 
-         }
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      *
 
-      * return one or an array of advert objects
 
-      *
 
-      * @param string $section
 
-      * @param bool   $all if true, return all adverts from the requested section
 
-      * @param array  $categoryIds
 
-      *
 
-      * @return \Ppb\Db\Table\Row\Advert|\Ppb\Db\Table\Rowset\Adverts|null
 
-      */
 
-     public function findBySection($section, $all = false, $categoryIds = array())
 
-     {
 
-         $select = $this->getAdvertising()->getTable()
 
-             ->select(array('nb_rows' => new Expr('count(*)')))
 
-             ->where('section = ?', $section)
 
-             ->where('active = ?', 1);
 
-         $categoriesFilter = array(0);
 
-         $categoryIds = array_filter($categoryIds);
 
-         if (count($categoryIds) > 0) {
 
-             $categoriesService = new CategoriesService();
 
-             foreach ($categoryIds as $categoryId) {
 
-                 $categoriesFilter = array_merge($categoriesFilter, array_keys(
 
-                     $categoriesService->getBreadcrumbs($categoryId)));
 
-             }
 
-         }
 
-         $select->where("category_ids REGEXP '\"" . implode('"|"',
 
-                 array_unique($categoriesFilter)) . "\"' OR category_ids = ''");
 
-         $locale = Front::getInstance()->getBootstrap()->getResource('locale')->getLocale();
 
-         $select->where("language = '" . $locale . "' OR language IS NULL");
 
-         $stmt = $select->query();
 
-         $nbAdverts = (integer)$stmt->fetchColumn('nb_rows');
 
-         if (!$nbAdverts) {
 
-             return null;
 
-         }
 
-         $select->reset(Select::COLUMNS)
 
-             ->columns('*');
 
-         if ($all !== true) {
 
-             $select = $select->order(new Expr('rand()'))
 
-                 ->limit(1);
 
-             return $this->getAdvertising()->fetchAll($select)->getRow(0);
 
-         }
 
-         return $this->getAdvertising()->fetchAll($select);
 
-     }
 
- }
 
 
  |