Exemplo n.º 1
0
 /**
  * Returns the data model based on the primary key given in the GET variable
  * If the data model is not found, an HTTP exception will be raised
  * @param integer $id the ID of the model to be loaded
  *
  * @return mixed
  * @throws CHttpException
  */
 public function loadModel($id)
 {
     $model = Bannerarea::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
Exemplo n.º 2
0
 /**
  * Updates a particular model
  * If update is successful, the browser will be redirected to the 'view' page
  * @param integer $id the ID of the model to be updated
  */
 public function actionUpdate($id)
 {
     $model = $this->loadModel($id);
     $areaList = Bannerarea::createAreaList();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Banners'])) {
         $model->attributes = $_POST['Banners'];
         if ($model->save()) {
             $this->redirect(array('/banners'));
         }
     }
     $this->render('update', array('model' => $model, 'areaList' => $areaList));
 }
Exemplo n.º 3
0
 /**
  * @method run
  */
 public function run()
 {
     if ($bannerarea = Bannerarea::model()->find('name=:name', array('name' => $this->areaname))) {
         $banners = array();
         $typeRotation = false;
         $criteria = new CDbCriteria();
         $criteria->condition = 'bannerarea=:bannerarea AND notactive<>1';
         $criteria->params = array('bannerarea' => $bannerarea->id);
         switch ($bannerarea->mode) {
             case Bannerarea::SHOW_ALL:
                 $criteria->order = 'sort_order';
                 break;
             case Bannerarea::RANDOM_ALL:
                 $criteria->order = new CDbExpression('RAND()');
                 break;
         }
         $dataProvider = new CActiveDataProvider('Banners', array('criteria' => $criteria));
         switch ($bannerarea->mode) {
             case Bannerarea::ONE_AT_ROTATION:
                 // Поочередная ротация
                 $typeRotation = true;
                 $dataProvider->pagination->pageSize = 1;
                 // Увеличиваем номер очередного баннера на 1
                 if (isset($bannerarea->queue)) {
                     $bannerarea->queue = $bannerarea->queue + 1;
                 } else {
                     $bannerarea->queue = 0;
                 }
                 // Если номер больше, чем общее количество - обнуляем
                 if ($bannerarea->queue > $dataProvider->totalItemCount - 1) {
                     $bannerarea->queue = 0;
                 }
                 // Устанавливаем текущую страницу
                 $dataProvider->pagination->currentPage = $bannerarea->queue;
                 // Сохраняем номер очередной просмотренной страницы
                 $bannerarea->save();
                 break;
             case Bannerarea::RANDOM_ROTATION:
                 $typeRotation = true;
                 $dataProvider->pagination->pageSize = 1;
                 // Генерируем случайным образом номер баннера для показа
                 $bannerarea->queue = mt_rand(0, $dataProvider->totalItemCount - 1);
                 // Устанавливаем текущую страницу
                 $dataProvider->pagination->currentPage = $bannerarea->queue;
                 // Сохраняем номер очередной просмотренной страницы
                 $bannerarea->save();
                 break;
             case Bannerarea::SLIDER:
                 $this->viewName = 'slider';
                 $banners = Banners::model()->findAll($criteria);
                 break;
             default:
                 $dataProvider->pagination = false;
                 break;
         }
         $this->render($this->viewName, array('dataProvider' => $dataProvider, 'itemViewName' => $this->itemViewName, 'banners' => $banners, 'typeRotation' => $typeRotation));
         return parent::run();
     } else {
         echo 'Рекламное место ' . $this->areaname . 'не найдено!';
     }
 }
Exemplo n.º 4
0
 /**
  * @return array - List of banner areas
  */
 public static function createAreaList()
 {
     $areaList = array();
     if ($bannerAreas = Bannerarea::model()->findAll()) {
         foreach ($bannerAreas as $bannerArea) {
             $areaList[$bannerArea['id']] = $bannerArea['title'];
         }
     }
     return $areaList;
 }