2014-11-21 08:26:20 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
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()
|
|
|
|
{
|
2014-11-22 13:14:22 +00:00
|
|
|
|
|
|
|
if(isset($_POST['lang']))
|
|
|
|
{
|
|
|
|
Yii::app()->request->cookies['pref_lang'] = new CHttpCookie('pref_lang', $_POST['lang']);
|
|
|
|
Yii::app()->language = $_POST['lang'];
|
|
|
|
}
|
2014-11-21 08:26:20 +00:00
|
|
|
|
|
|
|
$dataProvider=new CActiveDataProvider('Post', array(
|
|
|
|
'criteria'=>array(
|
|
|
|
'order'=>'date DESC, id DESC',
|
|
|
|
),
|
|
|
|
'pagination'=>array(
|
|
|
|
'pageSize'=>5,
|
|
|
|
),
|
|
|
|
|
|
|
|
));
|
|
|
|
|
|
|
|
$this->render('index',array(
|
|
|
|
'dataProvider'=>$dataProvider,
|
|
|
|
));
|
|
|
|
|
|
|
|
}
|
2014-11-26 20:18:59 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This is the action to handle external exceptions.
|
|
|
|
*/
|
|
|
|
public function actionDictionary()
|
|
|
|
{
|
|
|
|
$model = new DictionaryForm;
|
|
|
|
|
|
|
|
// collect user input data
|
|
|
|
if(isset($_POST['DictionaryForm']))
|
|
|
|
{
|
|
|
|
$model->attributes=$_POST['DictionaryForm'];
|
|
|
|
|
|
|
|
$model->getResponse();
|
|
|
|
|
|
|
|
if ($model->serverIsWorking)
|
|
|
|
{
|
|
|
|
$this->render('dictionaryResult',array('model'=>$model));
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->render('dictionary',array('model'=>$model));
|
|
|
|
}
|
2014-11-21 08:26:20 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This is the action to handle external exceptions.
|
|
|
|
*/
|
|
|
|
public function actionError()
|
|
|
|
{
|
|
|
|
if($error=Yii::app()->errorHandler->error)
|
|
|
|
{
|
|
|
|
if(Yii::app()->request->isAjaxRequest)
|
|
|
|
echo $error['message'];
|
|
|
|
else
|
|
|
|
$this->render('error', $error);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 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->render('login',array('model'=>$model));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function actionRegister()
|
|
|
|
{
|
2014-11-22 13:14:22 +00:00
|
|
|
$model=new User('register');
|
2014-11-21 08:26:20 +00:00
|
|
|
|
2014-11-22 13:14:22 +00:00
|
|
|
if(isset($_POST['User']))
|
2014-11-21 08:26:20 +00:00
|
|
|
{
|
2014-11-22 13:14:22 +00:00
|
|
|
$model->attributes=$_POST['User'];
|
2014-11-21 08:26:20 +00:00
|
|
|
if($model->validate())
|
|
|
|
{
|
2014-11-22 13:14:22 +00:00
|
|
|
|
2015-01-20 20:48:23 +00:00
|
|
|
$oldPassword = $model->password;
|
2014-11-22 13:14:22 +00:00
|
|
|
$model->password = $this->better_crypt($model->password);
|
2014-11-21 08:26:20 +00:00
|
|
|
|
2015-01-20 20:48:23 +00:00
|
|
|
if ($model->save())
|
|
|
|
{
|
2014-11-21 08:26:20 +00:00
|
|
|
|
2014-11-22 13:14:22 +00:00
|
|
|
//$this->redirect(Yii::app()->user->returnUrl);
|
|
|
|
$this->redirect(array("site/login"));
|
2014-11-21 08:26:20 +00:00
|
|
|
|
|
|
|
return;
|
2015-01-20 20:48:23 +00:00
|
|
|
}
|
|
|
|
$model->password = $oldPassword;
|
2014-11-21 08:26:20 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->render('register',array('model'=>$model));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Logs out the current user and redirect to homepage.
|
|
|
|
*/
|
|
|
|
public function actionLogout()
|
|
|
|
{
|
|
|
|
Yii::app()->user->logout();
|
|
|
|
$this->redirect(Yii::app()->homeUrl);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function actionAddPost()
|
|
|
|
{
|
|
|
|
$model=new AddPostForm('addPost');
|
|
|
|
|
|
|
|
// uncomment the following code to enable ajax-based validation
|
|
|
|
/*
|
|
|
|
if(isset($_POST['ajax']) && $_POST['ajax']==='add-post-form-addPost-form')
|
|
|
|
{
|
|
|
|
echo CActiveForm::validate($model);
|
|
|
|
Yii::app()->end();
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
if(isset($_POST['AddPostForm']))
|
|
|
|
{
|
|
|
|
$model->attributes=$_POST['AddPostForm'];
|
|
|
|
|
|
|
|
$model->image=CUploadedFile::getInstance($model,'image');
|
|
|
|
|
|
|
|
if($model->validate())
|
|
|
|
{
|
|
|
|
|
|
|
|
$username = Yii::app()->user->name;
|
|
|
|
|
|
|
|
$user = User::model()->find('username=:username',array(':username'=>$username));
|
|
|
|
|
|
|
|
$imageFileName = 'uploaded/' . $username . '-' . ($user->postCount + 1) . '.' . $model->image->extensionName;
|
|
|
|
|
2014-11-22 13:14:22 +00:00
|
|
|
if (strncasecmp(PHP_OS, 'WIN', 3) == 0)
|
|
|
|
{
|
|
|
|
$model->image->saveAs('C:/Workplace/Apache2.4/htdocs/cj/' . $imageFileName);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$model->image->saveAs('/home/fishrungames-http/fishrungames.ru/http/cj/' . $imageFileName);
|
|
|
|
}
|
2014-11-21 08:26:20 +00:00
|
|
|
|
|
|
|
$user->postCount = $user->postCount + 1;
|
|
|
|
|
|
|
|
$user->save();
|
|
|
|
|
|
|
|
$post = new Post;
|
|
|
|
|
|
|
|
$post->username = $username;
|
|
|
|
$post->title = $model->title;
|
|
|
|
$post->text = $model->text;
|
|
|
|
$post->imageFileName = $imageFileName;
|
2014-11-22 13:14:22 +00:00
|
|
|
$post->date = date('Y-m-d H:i:s');
|
2014-11-21 08:26:20 +00:00
|
|
|
|
|
|
|
$post->save();
|
|
|
|
|
|
|
|
$this->redirect(Yii::app()->homeUrl);
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->render('addPost',array('model'=>$model));
|
|
|
|
}
|
|
|
|
|
|
|
|
private function better_crypt($input)
|
|
|
|
{
|
|
|
|
$salt = "";
|
|
|
|
$salt_chars = array_merge(range('A','Z'), range('a','z'), range(0,9));
|
|
|
|
for($i=0; $i < 22; $i++)
|
|
|
|
{
|
|
|
|
$salt .= $salt_chars[array_rand($salt_chars)];
|
|
|
|
}
|
|
|
|
return crypt($input, '$2y$10$' . $salt);
|
|
|
|
}
|
|
|
|
}
|