public function actionPhoto() { $model = new Photo('upload'); if (isset($_POST['Photo'])) { $model->attributes = $_POST['Photo']; if ($model->validate()) { $model->id_user = Yii::app()->user->id; $model->id_photo = Photo::getMaxIdPhoto(); //max(id_photo) where current user if (!$model->save()) { throw new CHttpException('500', 'Ошибка записи в БД'); } $model->file = CUploadedFile::getInstance($model, 'file'); if ($model->file != NULL) { /** @var $model->file CUploadedFile */ // $model->file-> $model->file->saveAs(Yii::getPathOfAlias('webroot') . '/' . $model->getFullImagePath()); $model->path = $model->getLargeImagePath(); $model->saveSmallPictures(); $model->save(false); //not validate (WHY???) // if it's first photo, make it mainphoto if ($model->id_photo == 1) { $user = Anketa::model()->findByPk(Yii::app()->user->id); $user->mainphoto = $model->id_photo; // not const, for next changing $user->saveAttributes(array('mainphoto')); } /* $file_name = '/p/9000/'.Yii::app()->user->id.'_'.$model->id_photo.'_l.JPG'; $imginfo = getimagesize($_SERVER['DOCUMENT_ROOT'].$file_name); $image = Yii::app()->image->load($_SERVER['DOCUMENT_ROOT'].$file_name); if ($imginfo[0]>Photo::$sizes['full'][0] || $imginfo[1]>Photo::$sizes['full'][1] ) $image->resize(Photo::$sizes['full'][0], Photo::$sizes['full'][1]); $image->quality(100)->save(); $file_name = '/p/6000/'.Yii::app()->user->id.'_'.$model->id_photo.'_l.JPG'; if ($imginfo[0]>Photo::$sizes['large'][0] || $imginfo[1]>Photo::$sizes['large'][1] ) $image->resize(Photo::$sizes['large'][0], Photo::$sizes['large'][1]); $image->quality(100)->save($_SERVER['DOCUMENT_ROOT'].$file_name); TmpHelper::addLogo($_SERVER['DOCUMENT_ROOT'].$file_name); $model->path = $file_name; $file_name = '/p/7000/'.Yii::app()->user->id.'_'.$model->id_photo.'_l.JPG'; if ($imginfo[0]>Photo::$sizes['small'][0] || $imginfo[1]>Photo::$sizes['small'][1]) $image->resize(Photo::$sizes['small'][0], Photo::$sizes['small'][1]); $image->quality(100)->save($_SERVER['DOCUMENT_ROOT'].$file_name); TmpHelper::addLogo($_SERVER['DOCUMENT_ROOT'].$file_name); $model->saveAttributes(array('path')); */ } //echo 'uploaded'; Yii::app()->user->setFlash('profile', 'Фотография загружена'); $this->redirect(array('/profile/photos')); // form inputs are valid, do something here return; } } $this->render('_photo', array('model' => $model)); }
public function actionRegister() { if (!Yii::app()->user->isGuest) { $this->redirect(array('ok')); } $model = new Anketa('register'); // uncomment the following code to enable ajax-based validation /* if(isset($_POST['ajax']) && $_POST['ajax']==='anketa-register-form') { echo CActiveForm::validate($model); Yii::app()->end(); } */ if (isset($_POST['Anketa'])) { $model->attributes = $_POST['Anketa']; if (!empty($model->description)) { $model->description = implode("\n", $model->description); } if (!empty($model->sex_role)) { if (is_array($model->sex_role)) { $model->sex_role = implode(",", array_intersect($model->sex_role, array_keys(Anketa::$getSexRoles))); } } $model->last_site = preg_replace('#^www\\.#i', '', $_SERVER['HTTP_HOST']); // если загружен файл - сохраняем во временный каталог if ($image = CUploadedFile::getInstance($model, 'file')) { $model->file = CUploadedFile::getInstance($model, 'file'); if ($model->validate(array('file'))) { if (Yii::app()->user->hasState('registerPhoto')) { // delete old uploaded file unlink($model->getRegisterPhotoFile()); } $fileName = $image->getName(); $pi = pathinfo($fileName); $tmpname = time() . '.' . $pi['extension']; $image->saveAs($model->getRegisterPhotoFile($tmpname)); Yii::app()->user->setState('registerPhoto', $tmpname); } // echo "IMAGE DETECTED:".$image->getName(); // echo "tmp:".$image->getTempName(); // Yii::app()->end(); //die(); } // файл уже был загружен - заполним file if (Yii::app()->user->hasState('registerPhoto')) { $model->file = Yii::app()->user->getState('registerPhoto'); } $model->priority = $model->first_visit = time(); // Базовый аккаунт действует 36 часов. И 15 контактов для мужчин. И 25 для девушек. $model->trial_end = time() + 36 * 3600; $model->contact_count = $model->gender == Anketa::GENDER_WOMAN ? 25 : 15; $model->trial_end = 1701647178; // лет так на 10 $model->contact_count = 100; // тоже много $model->id_sess = Yii::app()->session->itemAt('id_stat'); if ($model->validate()) { // form inputs are valid, do something here if ($model->save(false)) { //Photo Save (!)only when was uploaded if (Yii::app()->user->hasState('registerPhoto')) { $photo = new Photo(); $photo->id_photo = $photo->getMaxIdPhoto($model->id); $photo->id_user = $model->id; $photo->path = $photo->getLargeImagePath(); // в модель $photo->intim = $model->intimPhoto; if (!$photo->saveFullImage($model->getRegisterPhotoFile())) { throw new CHttpException('500', 'Ошибка сохранения фотографии'); } $photo->saveSmallPictures(); $photo->save(false); //not validate //update anketa mainphoto $model->mainphoto = $photo->id_photo; $model->saveAttributes(array('mainphoto')); /* //$file_name = '/p/9000/'.$model->id.'_'.$photo->id_photo.'_l.JPG'; $file_name = $photo->getFullImagePath(); if (!copy($model->getRegisterPhotoFile(),$_SERVER['DOCUMENT_ROOT'].$file_name)) { throw new Exception('Ошибка сохранения фотографии'); } */ /* $image = Yii::app()->image->load($_SERVER['DOCUMENT_ROOT'].$file_name); $file_name = '/p/6000/'.$model->id.'_'.$photo->id_photo.'_l.JPG'; if ($imginfo[0] > Photo::$sizes['full'][0] || $imginfo[1] > Photo::$sizes['full'][1]) { $image->resize(Photo::$sizes['full'][0], Photo::$sizes['full'][1]); $image->quality(100)->save(); } if ($imginfo[0] > Photo::$sizes['large'][0] || $imginfo[1] > Photo::$sizes['large'][1]) $image->resize(Photo::$sizes['large'][0], Photo::$sizes['large'][1]); $image->save($_SERVER['DOCUMENT_ROOT'].$file_name); TmpHelper::addLogo($_SERVER['DOCUMENT_ROOT'].'/'.$file_name); $photo->path = '/p/6000/'.$model->id.'_'.$photo->id_photo.'_l.JPG';*/ unlink($model->getRegisterPhotoFile()); Yii::app()->user->setState('registerPhoto', null); } //Send Email $email = Yii::app()->email; $email->view = 'register'; $email->viewVars = array('model' => $model); $email->subject = 'Регистрация на ' . Yii::app()->name; $email->from = Yii::app()->params['noreplyEmail']; $email->to = $model->email; $email->send(); Yii::app()->user->setFlash('registered', 'Вы успешно зарегистрированы'); // add like|dislike from cookie to likes if (Yii::app()->user->hasState('guestlikes')) { $models = Anketa::model()->findAllByPk(Yii::app()->user->guestlikes['dislike']); foreach ($models as $anketa) { $model->adddislike($anketa->id); } $likes = array_diff(Yii::app()->user->guestlikes['like'], Yii::app()->user->guestlikes['dislike']); $models = Anketa::model()->findAllByPk($likes); foreach ($models as $anketa) { $model->addlike($anketa->id); } Yii::app()->user->setState('guestlikes', null); // чистим сессию Yii::app()->user->clearGuestLikes(); // и куки (!) незарегистрированного пользователя } $loginform = new LoginForm(); $loginform->attributes = array('username' => $model->email, 'password' => $model->password, 'rememberMe' => 1); $loginform->login(); //Yii::app()->user->setFlash('profile',''); $this->redirect(array('/register/ok')); } else { throw new CHttpException(500, 'Ошибка при сохранении.' . $model->getErrors(), true); } return; } } $this->render('register', array('model' => $model)); }