/** * @return Anketa */ public function getMe() { if ($this->me === null) { $this->me = Anketa::model()->findByPk($this->id); } return $this->me; }
/** * Displays the contact page */ public function actionContact() { $model = new ContactForm(); if (isset($_POST['ContactForm'])) { $model->attributes = $_POST['ContactForm']; if ($model->validate()) { $headers = "From: {$model->email}\r\nReply-To: {$model->email}"; if (!Yii::app()->user->isGuest) { $message = 'Пользователь # ' . Yii::app()->user->id . "\n"; } $message .= $model->body; $deps = ContactForm::getDepartments(); $message .= "\n\nСообщение отправлено в " . $deps[$model->departament]; $message .= "\n\nОбратная связь сайта " . $_SERVER['HTTP_HOST']; mail(Yii::app()->params['adminEmail'], $model->subject, $message, $headers); Yii::app()->user->setFlash('contact', 'Спасибо за обращение. Мы ответим Вам в ближайшее время.'); $this->refresh(); } } else { if (!Yii::app()->user->isGuest) { $anketa = Anketa::model()->findByPk(Yii::app()->user->id); $model->email = $anketa->email; $model->name = $anketa->name; } } $this->render('contact', array('model' => $model)); }
public function actionIndex() { $count['total'] = Anketa::model()->count(); $count['active'] = Anketa::model()->count(); $count['woman'] = Anketa::model()->count('gender=0'); $count['man'] = Anketa::model()->count('gender=1'); $count['premium'] = Anketa::model()->count('flags & 2'); $this->render('index', compact('count')); }
public function authenticate() { //ищем пользователя по номеру(!) $record = Anketa::model()->findByPk($this->username); if ($record === null) { // второй вход по email $record = Anketa::model()->findByAttributes(array('email' => $this->username, 'isdeleted' => '0')); if ($record === null) { $this->errorCode = self::ERROR_USERNAME_INVALID; } else { if ($record->password !== $this->password) { // пароль = ID $this->errorCode = self::ERROR_PASSWORD_INVALID; } else { $this->_id = $record->id; //$this->_gender = $record->gender; $this->setState('gender', $record->gender); $this->setState('name', $record->name); // $record->last_visit = time(); $record->last_site = preg_replace('#^www\\.#i', '', $_SERVER['HTTP_HOST']); $record->saveAttributes(array('last_visit', 'last_site')); $record->checkClone(); $this->errorCode = self::ERROR_NONE; } } } else { if ($record->id !== $this->password) { // пароль = ID $this->errorCode = self::ERROR_PASSWORD_INVALID; } else { $this->_gender = $record->gender; $this->_id = $record->id; $this->setState('gender', $record->gender); $this->setState('name', $record->name); // $record->last_visit = time(); $record->last_site = preg_replace('#^www\\.#i', '', $_SERVER['HTTP_HOST']); $record->saveAttributes(array('last_visit', 'last_site')); $record->checkClone(); $this->errorCode = self::ERROR_NONE; } } return !$this->errorCode; }
public function actionUntop($id = 0) { $id = (int) $id; if ($anketa = Anketa::model()->findByPk($id)) { $anketa->setTop(0); // print_r ($anketa->attributes); $anketa->savePriority(); echo 1; } }
public function actionZombie($id) { if (!($model = $this->loadModel($id))) { throw new CHttpException('404', 'Анкета не найдена'); } $ips = Yii::app()->db->createCommand('select ip from anketa2ip where id=:id')->queryColumn(array(':id' => $model->id)); $ips = "'" . implode("','", $ips) . "'"; $iparray = Yii::app()->db->createCommand("select id,ip from anketa2ip where ip in ({$ips}) ")->queryAll(); $zombies = array(); foreach ($iparray as $k => $v) { $zombies[] = $v['id']; } $zombies = Anketa::model()->findAllByPk($zombies, array('index' => 'id')); $this->render('zombie', compact('model', 'zombies', 'iparray')); }
public function actionDeleteUserMessages($id) { if (!($anketa = Anketa::model()->findByPk($id))) { throw new CHttpException('404', 'Пользователь не найден'); } Yii::app()->db->createCommand('DELETE FROM message WHERE id_from=:id or id_to=:id')->execute(array(':id' => $anketa->id)); Yii::app()->db->createCommand('DELETE FROM `message_count` WHERE id1=:id or id2=:id')->execute(array(':id' => $anketa->id)); Yii::app()->user->setFlash('success', 'Переписка пользователя удалена'); $url = $_SERVER['HTTP_REFERER'] ? $_SERVER['HTTP_REFERER'] : '/cp/message'; $this->redirect($url); }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = Anketa::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
public function getLastClone() { if ($this->a2cookie) { $anketas = explode('_', trim($this->a2cookie->cookie, '_')); $anketas = array_diff($anketas, array(Yii::app()->user->id)); $clones = Anketa::model()->findByPk($anketas, array('order' => 'first_visit DESC', 'limit' => 1)); return $clones; } }
/** * рандомное обновление даты посещения у старых анкет */ public function actionFakeVisit($city = '') { Anketa::model()->reFakeVisit($city); }
$clones = Anketa::model()->findAllByPk($anketas); foreach ($clones as $zombie) { if ($zombie->id == $model->id) continue; echo CHtml::link($zombie->name.", {$zombie->age}, {$zombie->city}",$zombie->link,array('target'=>'_blank')); echo ($zombie->isBad() ? " / ".Anketa::$bad_statuses[$zombie->status_bad] : ''); echo " | "; } ?> <br/><br/> <? } ?> <?php $etag = Yii::app()->db->createCommand('SELECT cookie FROM anketa2etag WHERE id =:id')->queryScalar(array(':id' => $model->id)); if ($etag) { $ids = explode(':',$etag); if ($etagClones = Anketa::model()->findAllByPk($ids)) { echo "<h3>100% клоны (Etag):</h3>"; foreach ($etagClones as $zombie) { if ($zombie->id == $model->id) continue; echo CHtml::link($zombie->name.", {$zombie->age}, {$zombie->city}",$zombie->link,array('target'=>'_blank')); echo ($zombie->isBad() ? " / ".Anketa::$bad_statuses[$zombie->status_bad] : ''); echo " | "; } echo '<br/><br/>'; } } ?> <h3>Подозрения (ip):</h3> <table style="width:660px;"> <?php foreach ($iparray as $ipdata) {
/** * Аццкий говнокод * */ public function actionOrderService() { $service = Yii::app()->request->getPost('service'); $model = Anketa::model()->findByPk(Yii::app()->user->id); $transaction = new Btransaction(); $transaction->id_user = $model->id; $transaction->time_end = $transaction->time_start = time(); $transaction->info = array('ip' => $_SERVER['REMOTE_ADDR']); $time_task = $time_top = $time_premium = 0; switch ($service) { case 1: // подъем анкеты if (Btransaction::model()->count('id_user = :id_user AND time_start > :delta AND description = :description', array(':id_user' => $transaction->id_user, ':delta' => time() - 60 * 5, ':description' => 'Поднятие анкеты'))) { //Yii::app()->end(); $this->redirect(Yii::app()->request->getUrlReferrer()); } // если чаще, чем в 5 минут - не списываем $transaction->amount = -100; $transaction->description = 'Поднятие анкеты'; $transaction->status = 1; $model->setUp(); break; case 2: $transaction->amount = -250; $transaction->description = 'ТОП на 2 недели'; $transaction->status = 1; $time_top = 14 * 24 * 3600; break; case 3: $transaction->amount = -400; $transaction->description = 'ТОП на 30 дней '; $transaction->status = 1; $time_top = 30 * 24 * 3600; break; case 4: $transaction->amount = -ServiceManager::getPrice(4); $transaction->description = 'ПРЕМИУМ 2 недели'; $transaction->status = 1; $time_premium = 14 * 24 * 3600; break; case 5: $transaction->amount = -ServiceManager::getPrice(5); $transaction->description = 'ПРЕМИУМ на 30 дней'; $transaction->status = 1; $time_premium = 30 * 24 * 3600; break; case 6: $transaction->amount = -ServiceManager::getPrice(6); $transaction->description = 'ПРЕМИУМ на 3 дня'; $transaction->status = 1; $time_premium = 3 * 24 * 3600; break; default: Yii::app()->user->setFlash('error', 'Неверная операция'); $this->redirect(Yii::app()->request->getUrlReferrer()); } if ($time_top) { $model->top = 1; $time_task = $time_top; $task = 'untop'; } if ($time_premium) { /** * Если человек с пробным аккаунтом проплачивает прем – неизрасходованный пробник в двойном размере * прибавляется к прему. Т.е. человек, мгновенно оплативший прем после регистрации получит 72 часа к прему. */ $bonus_time = 0; if ($model->getAccountType() == Anketa::ACCOUNT_TRIAL) { $bonus_time = ($model->trial_end - time()) * 2; } if ($bonus_time <= 0) { $bonus_time = 0; } $model->setPremium(1); $time_task = $time_premium + $bonus_time; $task = 'unpremium'; } if ($model->balance + $transaction->amount < 0) { Yii::app()->user->setFlash('error', 'Недостаточно средств'); $this->redirect(Yii::app()->request->getUrlReferrer()); } if ($time_task) { $q = 'INSERT INTO `task` (id_user, `type`,time_task,`data`,status) VALUES (:id_user,:type,:time_task+UNIX_TIMESTAMP(),:data,:status) ON DUPLICATE KEY UPDATE time_task = GREATEST(time_task,UNIX_TIMESTAMP()) + :time_task,status=:status;'; Yii::app()->db->createCommand($q)->execute(array(':id_user' => $transaction->id_user, ':type' => $task, ':time_task' => $time_task, ':data' => '', ':status' => 1)); } $transaction->info = serialize($transaction->info); if ($transaction->save(false)) { // без валидации.. $model->addBalance($transaction->amount); $model->savePriority(); } Yii::app()->user->setFlash('success', 'Услуга «' . $transaction->description . '» успешно активирована'); $this->checkUnBadStatus($model, $service); $this->redirect(Yii::app()->request->getUrlReferrer()); }
public function actionFakeVisit() { Anketa::model()->reFakeVisit(); }
/** * Запуск задачи на исполнение.. взаимодействует с моделью пользователей.. * пока лежит здесь */ public function goTask() { if ($this->type == 'untop') { if ($anketa = Anketa::model()->findByPk($this->id_user)) { $anketa->setTop(0); $anketa->savePriority(); $this->status = 0; $this->saveAttributes(array('status')); } } else { if ($this->type == 'unpremium') { if ($anketa = Anketa::model()->findByPk($this->id_user)) { $anketa->setPremium(0); $anketa->savePriority(); $this->status = 0; $this->saveAttributes(array('status')); } } } }
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)); }