Example #1
0
 /**
  * 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));
 }
Example #2
0
 /**
  * @return Anketa
  */
 public function getMe()
 {
     if ($this->me === null) {
         $this->me = Anketa::model()->findByPk($this->id);
     }
     return $this->me;
 }
Example #3
0
 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'));
 }
Example #4
0
 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;
 }
Example #5
0
 public function actionGhosts()
 {
     $model = new Anketa('search');
     $model->unsetAttributes();
     // clear any default values
     $model->setPremium(null);
     if (isset($_GET['Anketa'])) {
         $model->attributes = $_GET['Anketa'];
         $model->setPremium($_GET['Anketa']['premium']);
     }
     $criteria = new CDbCriteria(array('condition' => 'id NOT IN (SELECT DISTINCT id_anketa FROM `anketa_fingerprint` ) AND first_visit > 1370265543'));
     $dataProvider = $model->search();
     $dataProvider->criteria->mergeWith($criteria);
     $this->render('ghosts', array('dataProvider' => $dataProvider, 'model' => $model));
 }
Example #6
0
		<?php echo $form->labelEx($model,'phone'); ?>
		<?php echo $form->textField($model,'phone'); ?>
		<?php echo $form->error($model,'phone'); ?>
	</div>
*/ ?>

    <div class="row">
   		<?php echo $form->labelEx($model,'isinactive'); ?>
   		<?php echo $form->checkBox($model,'isinactive'); ?>
   		<?php echo $form->error($model,'isinactive'); ?>
   	</div>

    <div class="row">
        <?php $model->description = explode ("\n",$model->description); ?>
        <?php echo $form->labelEx($model,'description'); ?>
        <?php echo $form->checkBoxList($model,'description',array_combine(Anketa::goalsArray(),Anketa::goalsArray())); ?>
        <?php echo $form->error($model,'description'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'about'); ?>
        <?php echo $form->textArea($model,'about',array('rows'=>'10','cols'=>80,)); ?>
        <?php echo $form->error($model,'about'); ?>
    </div>




    <div class="row buttons">
		<?php echo CHtml::submitButton('Сохранить'); ?>
	</div>
Example #7
0
 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);
 }
Example #8
0
 /**
  * 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;
 }
Example #9
0
 /**
  * Запуск задачи на исполнение.. взаимодействует с моделью пользователей..
  * пока лежит здесь
  */
 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'));
             }
         }
     }
 }
Example #10
0
                            <b class="hd">Возраст</b>
                            <?php 
echo $form->dropDownList($model, 'agefrom', $ages, array('empty' => 'не указан'));
?>
                        </div>
                        <div class="item item-rht">
                            <b class="hd">&nbsp;</b>
                            <?php 
echo $form->dropDownList($model, 'ageto', $ages, array('empty' => 'не указан'));
?>
                        </div>
                    </div>
                    <div class="row big-sel nuclear">
                        <b class="hd">Откуда</b>
                        <?php 
echo $form->dropDownList($model, 'location', Anketa::getCities(), array('empty' => 'выберите город', 'class' => 'mainselect'));
?>
                    </div>
                </div>
                <div class="row nucelar">
                    <input type="submit" value="Искать!" class="but" />
                </div>
            <?php 
$this->endWidget();
?>
        </div>
        <div class="search enter">
            <div class="headline">Вход на сайт</div>
            <?php 
$model = new LoginForm();
?>
Example #11
0
		<input type="submit" name="delete" value="Izbrisi anketu" form="forma" class="graybtn">
		<input type="submit" name="edit" value="Aktiviraj anketu" form="forma" class="graybtn">
	</div>
	<table id="tabela">
		<thead>
			<tr>
				<th>ID</th>
				<th>Status</th>
				<th>Naslov</th>
				<th>Izbrisi</th>
				<th>Aktiviraj</th>
			</tr>
		</thead>
		<form action="anketa_process.php" method="post" id="forma">
		<?php 
$ankete = Anketa::getAll();
foreach ($ankete as $anketa) {
    if ($anketa->status == 1) {
        $anketa->status = "aktivna";
    } else {
        $anketa->status = "neaktivna";
    }
    ?>
				<tr>
					<td><?php 
    echo $anketa->pitanje_id;
    ?>
</td>
					<td><?php 
    echo $anketa->status;
    ?>
Example #12
0
 /**
  * рандомное обновление даты посещения у старых анкет
  */
 public function actionFakeVisit($city = '')
 {
     Anketa::model()->reFakeVisit($city);
 }
Example #13
0
    $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) {
Example #14
0
    /**
     * Аццкий говнокод
     *
     */
    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', 'Услуга &laquo;' . $transaction->description . '&raquo; успешно активирована');
        $this->checkUnBadStatus($model, $service);
        $this->redirect(Yii::app()->request->getUrlReferrer());
    }
Example #15
0
 public function actionCities()
 {
     $cities = Anketa::getCities();
     $cities = $cities['Города России:'];
     //$cities = $cities['Две столицы:'];
     $cmd = Yii::app()->db->createCommand('SELECT count(id) FROM anketa where location LIKE :city');
     //        $delCmd = Yii::app()->db->createCommand('DELETE FROM anketa WHERE sexual_orientation = 1 AND id < 503777 AND location LIKE :city LIMIT :limit');
     //        $cmdcity = Yii::app()->db->createCommand('INSERT IGNORE INTO anketa_in_city SELECT id FROM anketa where location LIKE :city');
     $result = array();
     $sum = 0;
     foreach ($cities as $city) {
         $result[$city] = $cmd->queryScalar(array(':city' => "%{$city}%"));
         //            $cmdcity->execute(array(':city'=>"%$city%"));
         //            if ($result[$city] > 70) {
         //                $delCmd->bindValue(':limit', intval($result[$city] * 0.7), PDO::PARAM_INT);
         //                $delCmd->bindValue(':city',"%$city%" , PDO::PARAM_STR);
         //                $delCmd->execute();
         //                echo $city;
         //            }
         $sum += $result[$city];
     }
     array_multisort($result);
     //        foreach ($result as $k=>$v) {
     //            if ($v<15) $q[] = "UPDATE anketa SET location = '$k' WHERE location LIKE '%Саратов%' LIMIT 13;";
     //        }
     //        echo implode('<br>',$q); die();
     print_r($result);
     echo '<br>Total: ' . $sum;
     exit;
 }
Example #16
0
 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;
     }
 }
Example #17
0
 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;
     }
 }
Example #18
0
 /**
  * Declares the validation rules.
  */
 public function rules()
 {
     return array(array('mygender,agefrom,ageto,gender,location,goals,heigthfrom,heigthto,weightfrom,weightto', 'safe'), array('goals', 'in', 'range' => Anketa::goalsArray()), array('last_visit', 'in', 'range' => array_keys(self::getLastVisitValues()), 'allowEmpty' => true));
 }
Example #19
0
 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));
 }