Вход Регистрация
Файл: protected/controllers/CategoryController.php
Строк: 63
<?php

/*
 * Управление категориями
 */

class CategoryController extends Controller
{
    
/*
         * Фильтры
         */
        
public function filters ()
        {
            return array (
                
'accessControl'
            
);
        }



        
/*
         * Правила доступа
         */
        
public function  accessRules ()
        {
            return array (
                array (
                    
'allow',
                    
'users' => array ('@')
                ),
                array (
                    
'allow',
                    
'users' => array ('?'),
                    
'actions' => array ('view''index')
                ),
                array (
                    
'deny',
                    
'users' => array ('*')
                )
            );
        }



        
/**
     * Просмотр списка статей для данной категории
     */
    
public function actionView($id)
    {
            

            
$this->render('view',array(
                
'postProvider' => Post::model ()->loadPostsFromCategory ($id),
                
'category' => $this->loadModel ($id)
            ));
    }

    
/**
     * Добавление категории
     */
    
public function actionCreate()
    {
        
$model = new Category;

                if (isset (
$_POST['category']))
        {
                    
$model->attributes $_POST['category'];
                    if (
$model->save ())
                        
$this->redirect (array('view','id'=>$model->id));
        }

        
$this->render ('create',array(
            
'model'=>$model,
        ));
    }

    
/**
     * Обновление категории
     * @param integer $id the ID of the model to be updated
     */
    
public function actionUpdate($id)
    {
        
$model $this->loadModel($id);

        if (isset (
$_POST['category']))
        {
            
$model->attributes $_POST['category'];
            if (
$model->save ())
                
$this->redirect (array ('view','id' => $model->id));
        }

        
$this->render('update',array(
            
'model' => $model,
        ));
    }

    
/**
     * Deletes a particular model.
     * If deletion is successful, the browser will be redirected to the 'index' page.
     * @param integer $id the ID of the model to be deleted
     */
    
public function actionDelete($id)
    {
            
$category $this->loadModel ($id);

            if (
$category->id == Category::ID_NEWS)
            {
                
$this->render ('//msg', array ('msg' => 'Эту категорию удалять нельзя!'));
                
Yii::app ()->end ();
            }

            if (!isset (
$_POST["delete"]))
            {
                
$this->render ('delete', array ('category' => $category));
            }
            else
            {
                
// Удаляем саму категорию
                
$category->delete ();
                
// Удаляем все статьи этой категории
                // Если настроены вторичные ключи (а по умолчанию они настроены), СТАТЬИ И КОММЕНТЫ удалятся автоматически
                //Post::model ()->deleteALL ('`id_category`=:id_category', array (':id_category' => $category->id));
                
                
$this->redirect (Yii::app ()->request->baseUrl);
            }
    }
        
        
/**
         * Просмотр категорий
         */
        
public function actionIndex ()
        {
            
$this->render ('index', array (
                
'categoryProvider' => Category::model ()->loadCategories (),
                
'countDrafts' => Post::model ()->getCountDrafts ()
            ));
        }

    

    
/**
     * 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 the ID of the model to be loaded
     */
    
public function loadModel($id)
    {
        
$model=Category::model()->findByPk((int)$id);
        if(
$model===null)
            throw new 
CHttpException(404,'The requested page does not exist.');
        return 
$model;
    }
}
Онлайн: 0
Реклама