<?php
class TabberController extends RController
{
    /**
     * @return array action filters
     */
    public function filters()
    {
	return array(
	    'rights',
	    'postOnly + delete', // we only allow deletion via POST request
	);
    }
    /**
     * Displays a particular model.
     * @param integer $id the ID of the model to be displayed
     */
    public function actionView($id)
    {
	$tabberTabs = TabberTab::model()->findAllByAttributes(array('tabber_id' => $id));
	$this->render('view', array(
	    'model' => $this->loadModel($id),
	    'tabberTabs' => $tabberTabs,
	));
    }
    /**
     * Creates a new model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     */
    public function actionCreate()
    {
	$model = new Tabber;
	if (Yii::app()->options->get('I18N_MULTILINGUAL', 0) == 0)
	{
	    $model->language = Yii::app()->language;
	}
	// Uncomment the following line if AJAX validation is needed
	// $this->performAjaxValidation($model);
	if (isset($_POST['Tabber']))
	{
	    $model->attributes = $_POST['Tabber'];
	    if ($model->save())
		$this->redirect(array('tabberTab/create', 'tabber_id' => $model->id));
	}
	$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($id)
    {
	$model = $this->loadModel($id);
	// Uncomment the following line if AJAX validation is needed
	// $this->performAjaxValidation($model);
	if (isset($_POST['Tabber']))
	{
	    $model->attributes = $_POST['Tabber'];
	    			if ($model->save())
			{
				Yii::app()->user->setFlash('alert-success', Yii::t('admin', 'Item has been successfully updated.'));
				$this->redirect(array('admin'));
			}
	}
	$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($id)
    {
	$this->loadModel($id)->delete();
	// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
	if (!isset($_GET['ajax']))
	    {Yii::app()->user->setFlash('alert-success', Yii::t('admin', 'Item has been successfully deleted.'));$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));}
    }
    /**
     * Manages all models.
     */
    public function actionAdmin()
    {
	$model = new Tabber('search');
	$model->unsetAttributes();  // clear any default values
	if (isset($_GET['Tabber']))
	    $model->attributes = $_GET['Tabber'];
	$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 $id the ID of the model to be loaded
     * @return Tabber the loaded model
     * @throws CHttpException
     */
    public function loadModel($id)
    {
	$model = Tabber::model()->findByPk($id);
	if ($model === null)
	    throw new CHttpException(404, 'The requested page does not exist.');
	return $model;
    }
    /**
     * Performs the AJAX validation.
     * @param Tabber $model the model to be validated
     */
    protected function performAjaxValidation($model)
    {
	if (isset($_POST['ajax']) && $_POST['ajax'] === 'tabber-form')
	{
	    echo CActiveForm::validate($model);
	    Yii::app()->end();
	}
    }
    public function actionOrder($tabber_id)
    {
	/**
	 * Handle the POST request data submission
	 */
	if (isset($_POST['Order']))
	{
	    $count = count($_POST['Order']);
	    $transaction = Yii::app()->db->beginTransaction();
	    try
	    {
		$sql = "UPDATE tabber_tab as si SET si.order = :order WHERE si.id = :id ;";
		$cmd = Yii::app()->db->createCommand($sql);
		for ($i = 0; $i < $count; $i++)
		{
		    if ($id = intval($_POST['Order'][$i]))
			$cmd->execute(array('order' => $i, 'id' => $id));
		}
	    }
	    catch (Exception $e)
	    {
		$transaction->rollback();
		throw $e;
	    }
	    $transaction->commit();
	    if (!Yii::app()->request->isAjaxRequest)
	    {
		Yii::app()->user->setFlash('alert-success', Yii::t('admin', 'Tabs has been successfully reordered.'));
		$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('tabber/admin'));
	    }
	    else
	    {
		echo '<div class="alert alert-success">' .
		Yii::t('admin', 'Tabs has been successfully reordered.') . '</div>';
		return;
	    }
	}
    }
}
