<?php
class PageController extends Controller
{
/**
* @var string the default layout for the views. Defaults to \'//layouts/column2\', meaning
* using two-column layout. See \'protected/views/layouts/column2.php\'.
*/
public $layout=\'//layouts/column2\';
const PAGE_SIZE = 20;
/**
* @return array action filters
*/
public function filters()
{
return array(
\'accessControl\', // perform access control for CRUD operations
);
}
/**
* Specifies the access control rules.
* This method is used by the \'accessControl\' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array(\'allow\', // allow all users to perform \'index\' and \'view\' actions
\'actions\'=>array(\'index\',\'view\'),
\'users\'=>array(\'*\'),
),
array(\'allow\', // allow authenticated user to perform \'create\' and \'update\' actions
\'actions\'=>array(\'create\',\'update\'),
\'users\'=>array(\'@\'),
),
array(\'allow\', // allow admin user to perform \'admin\' and \'delete\' actions
\'actions\'=>array(\'admin\',\'delete\'),
\'users\'=>array(\'admin\'),
),
array(\'deny\', // deny all users
\'users\'=>array(\'*\'),
),
);
}
/**
* Displays a particular model.
* @param integer $id the ID of the model to be displayed
*/
public function actionView($title)
{
$model = Page::model()->find(
array(
\'condition\' => \'title=:title\',
\'order\' => \'revision DESC\',
\'params\' => array(
\':title\' => $title
)
)
);
if( $model )
{
$this->render( \'view\', array( \'model\' => $model ) );
}
else
{
throw new CHttpException( 404, \'Upsz! Hat ezt az oldalt nem talaltuk :/\' );
}
}
/**
* Creates a new model.
* If creation is successful, the browser will be redirected to the \'view\' page.
*/
public function actionCreate()
{
$model=new Page;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST[\'Page\']))
{
$model->attributes=$_POST[\'Page\'];
if($model->save())
{
$this->redirect(array(\'view\',\'title\'=>$model->title));
}
}
$this->render(\'create\',array(
\'model\'=>$model,
));
}
/**
* 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($title)
{
$model = Page::model()->find(
array(
\'condition\' => \'title=:title\',
\'order\' => \'revision DESC\',
\'params\' => array(
\':title\' => $title
)
)
);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST[\'Page\']))
{
$model->attributes=$_POST[\'Page\'];
if($model->save())
$this->redirect(array(\'view\',\'title\'=>$model->title));
}
$this->render(\'update\',array(
\'model\'=>$model,
));
}
/**
* Deletes a particular model.
* If deletion is successful, the browser will be redirected to the \'admin\' page.
* @param integer $id the ID of the model to be deleted
*/
public function actionDelete( $title )
{
if(Yii::app()->request->isPostRequest)
{
// FONTOS!
// az `admin` reszt magat kiszedtuk
// ezert a delete-t funkciot kicsit atirtuk
Page::model()->deleteAll( \'title=:title\', array( \':title\' => $title ) );
$this->redirect( $this->createUrl( \'/page/index\' ) );
}
else
throw new CHttpException(400,\'Invalid request. Please do not repeat this request again.\');
}
public function actionIndex()
{
$criteria = new CDbCriteria();
$criteria->group = \'title\';
$criteria->order = \'created DESC\';
$dataProvider=new CActiveDataProvider(\'Page\', array(
\'pagination\'=>array(
\'pageSize\'=>self::PAGE_SIZE,
),
\'criteria\' => $criteria,
));
$this->render(\'index\',array(
\'dataProvider\'=>$dataProvider,
));
}
/**
* Manages all models.
*/
public function actionAdmin()
{
$model=new Page(\'search\');
$model->unsetAttributes(); // clear any default values
if(isset($_GET[\'Page\']))
$model->attributes=$_GET[\'Page\'];
$this->render(\'admin\',array(
\'model\'=>$model,
));
}
/**
* 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=Page::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,\'The requested page does not exist.\');
return $model;
}
/**
* Performs the AJAX validation.
* @param CModel the model to be validated
*/
protected function performAjaxValidation($model)
{
if(isset($_POST[\'ajax\']) && $_POST[\'ajax\']===\'page-form\')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
}