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() { if(isset($_POST['lang'])) { Yii::app()->request->cookies['pref_lang'] = new CHttpCookie('pref_lang', $_POST['lang']); Yii::app()->language = $_POST['lang']; } $dataProvider=new CActiveDataProvider('Post', array( 'criteria'=>array( 'order'=>'date DESC, id DESC', ), 'pagination'=>array( 'pageSize'=>5, ), )); $this->render('index',array( 'dataProvider'=>$dataProvider, )); } /** * 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() { $model=new User('register'); if(isset($_POST['User'])) { $model->attributes=$_POST['User']; if($model->validate()) { $model->password = $this->better_crypt($model->password); $model->save(); //$this->redirect(Yii::app()->user->returnUrl); $this->redirect(array("site/login")); return; } } $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; 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); } $user->postCount = $user->postCount + 1; $user->save(); $post = new Post; $post->username = $username; $post->title = $model->title; $post->text = $model->text; $post->imageFileName = $imageFileName; $post->date = date('Y-m-d H:i:s'); $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); } }