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() { $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 RegisterForm('register'); if(isset($_POST['RegisterForm'])) { $model->attributes=$_POST['RegisterForm']; if($model->validate()) { $password_hash = $this->better_crypt($model->password); $user=new User; $user->username= $model->username; $user->email = $model->email; $user->password= $password_hash; $user->save(); $this->redirect(Yii::app()->user->returnUrl); 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; $model->image->saveAs('C:/Workplace/Apache2.4/htdocs/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->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); } }