<?php
/**
 * IMPORTANT NOTE
 * The code of this system is closed and a private proprietary of Flex Solutions.
 * A written authorization/license from Flex Solutions is required before using or modifying this code.
 * Email: sales@flexsolution.biz, Phone: +962795342585, Website: http://www.flexsolutions.biz
 */
 
/**
 *  Site
 *
 * Yii controller to control site actions
 *
 * @version 1.0
 *
 * @author Amaney
 * @package application.controllers
 */
class SiteController extends Controller {

    /**
     * Declares class-based actions.
     */
    public function actions() {
	return array(
	    // captcha action renders the CAPTCHA image displayed on the contact page
	    'captcha' => array(
		'class' => 'CCaptchaAction',
		'backColor' => 0xFFFFFF,
	    ),
	    // page action renders "static" pages stored under 'protected/views/site/pages'
	    // They can be accessed via: index.php?r=site/page&view=FileName
	    'page' => array(
		'class' => 'CViewAction',
	    ),
	);
    }

    /**
     * This is the default 'index' action that is invoked
     * when an action is not explicitly requested by users.
     */
    public function actionIndex() {
	// renders the view file 'protected/views/site/index.php'
	// using the default layout 'protected/views/layouts/main.php'
	if (Yii::app()->user->isGuest)
	    $this->redirect(Yii::app()->createUrl('/site/login'));
	$this->render('index');
    }

    /**
     * This is the action to handle external exceptions.
     */
    public function actionError() {
	if ($error = Yii::app()->errorHandler->error) {
	    if (Yii::app()->request->isAjaxRequest) {
		Yii::app()->session['message'] = $error['message'];
		echo $error['message'];
	    } else {
		Yii::app()->session['file'] = $error['file'];
		Yii::app()->session['message'] = $error['message'];
		Yii::app()->session['trace'] = $error['trace'];
		$this->render('error', $error);
	    }
	}
	 else
            $this->render('error', $error['message']);
    }

    /**
     * This is the action to send the error to the support.
     */
    public function actionSendError() {
	$message = Yii::app()->session['message'];
	$trace = Yii::app()->session['trace'];
	$file = Yii::app()->session['file'];
	TIDANSMail::sendMail("TIDANS Error (" . date("Y-m-d") . ")", "The File: " . $file . "<br />" .
			"The Message: " . $message . "<br />" . "The Trace: " . $trace, Yii::app()->params["support_email"]);
	$this->redirect(Yii::app()->homeUrl);
    }

    /**
     * Displays the contact page
     */
    public function actionContact() {
	$model = new ContactForm;
	if (isset($_POST['ContactForm'])) {
	    $model->attributes = $_POST['ContactForm'];
	    if ($model->validate()) {
		$name = '=?UTF-8?B?' . base64_encode($model->name) . '?=';
		$subject = '=?UTF-8?B?' . base64_encode($model->subject) . '?=';
		$headers = "From: $name <{$model->email}>\r\n" .
			"Reply-To: {$model->email}\r\n" .
			"MIME-Version: 1.0\r\n" .
			"Content-Type: text/plain; charset=UTF-8";

		mail(Yii::app()->params['adminEmail'], $subject, $model->body, $headers);
		Yii::app()->user->setFlash('contact', 'Thank you for contacting us. We will respond to you as soon as possible.');
		$this->refresh();
	    }
	}
	$this->render('contact', array('model' => $model));
    }

    /**
     * Displays the login page
     */
    public function actionLogin() {
	$model = new LoginForm();
	// if it is ajax validation request
	if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
	    echo CActiveForm::validate($model);
	    Yii::app()->end();
	}
	// collect user input data
	if (isset($_POST['LoginForm'])) {
	    $model->attributes = $_POST['LoginForm'];
	    // validate user input and redirect to the previous page if valid
	    if ($model->validate() && $model->login())
		$this->redirect(Yii::app()->user->returnUrl);
	}
	// display the login form
	$this->renderPartial('login', array('model' => $model));
    }

    /**
     * Logs out the current user and redirect to homepage.
     */
    public function actionLogout() {
	Yii::app()->user->logout();
	$this->redirect(Yii::app()->createUrl('/site/login'));
    }

}
