Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class UserController extends Controller
- {
- /**
- * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
- * using two-column layout. See 'protected/views/layouts/column2.php'.
- */
- public $layout='//layouts/column2';
- /**
- * @return array action filters
- */
- public function filters()
- {
- return array(
- 'accessControl', // perform access control for CRUD operations
- 'postOnly + delete', // we only allow deletion via POST request
- );
- }
- /**
- * Displays a particular model.
- * @param integer $id the ID of the model to be displayed
- */
- public function actionView($id)
- {
- if ((Yii::app()->user->isGuest) || (Yii::app()->user->role == 'user')) {
- $this->redirect(Yii::app()->user->returnUrl);
- }
- $model = $this->loadModel($id);
- $this->render('view', array('model'=> $model));
- }
- /**
- * Creates a new model.
- * If creation is successful, the browser will be redirected to the 'view' page.
- */
- public function actionCreate()
- {
- if ((Yii::app()->user->isGuest) || (Yii::app()->user->role == 'user'))
- {
- $this->redirect(Yii::app()->user->returnUrl);
- }
- $model=new User;
- $model->setScenario('create');
- if(isset($_POST['User']))
- {
- $model->attributes=$_POST['User'];
- if($model->validate()) {
- if($model->model()->count("username = :username", array(':username' => $model->username)))
- {
- $model->addError('username', 'Псевдоним уже занят другим пользователем');
- }
- elseif($model->ref_phone && !$model->model()->count("phone = :ref_phone", array(':ref_phone' => $model->ref_phone)))
- {
- $model->addError('ref_phone', 'Номер реферера не зарегистрирован в системе');
- }
- else {
- if ((Yii::app()->user->role == 'adm') && $model->role == 2) {
- $model->role = 'adm';
- }
- elseif((Yii::app()->user->role == 'adm') && $model->role == 1) {
- $model->role = 'manager';
- }
- else {
- $model->role = 'user';
- }
- if ($model->ref_phone) {
- $referal = User::model()->find('phone = :ref_phone', array(':ref_phone' => $model->ref_phone));
- $model->ref_id = $referal->id;
- }
- if (Yii::app()->user->role == 'manager') {
- $model->who_added_id = Yii::app()->user->id;
- }
- else {
- $managers = Yii::app()->db->createCommand("SELECT COUNT(id), who_added_id FROM tbl_user WHERE who_added_id <> 0 GROUP BY who_added_id ORDER BY COUNT(id)")->queryRow();
- $model->who_added_id = $managers['who_added_id'];
- }
- $model->password = $model->hashPassword($model->password, $model->salt);
- $model->datereg = date("y-m-d H:i:s");
- $model->save(false);
- //если админ добавляет менеджера, делаем чтоб менеджер себя видел
- if($model->role == 'manager' && (Yii::app()->user->role == 'adm')) {
- $model->who_added_id = $model->id;
- $model->save(false);
- }
- $this->redirect(array('view','id' => $model->id));
- }
- }
- }
- if (Yii::app()->user->role == 'adm') {
- $this->render('create',array('model'=>$model));
- }
- else {
- $this->render('mcreate',array('model'=>$model));
- }
- }
- public function actionUpdate($id)
- {
- if ((Yii::app()->user->isGuest) || (Yii::app()->user->role == 'user'))
- {
- $this->redirect(Yii::app()->user->returnUrl);
- }
- $model=$this->loadModel($id);
- $model->password = '';
- $model->setScenario('update');
- $oldAttr = $model->getOldAttr();
- if(isset($_POST['User']))
- {
- $model->attributes=$_POST['User'];
- if($model->validate()) {
- $model->ref_id = $oldAttr['ref_id'];
- if ((Yii::app()->user->role == 'adm') && $model->role == 2) {
- $model->role = 'adm';
- }
- elseif((Yii::app()->user->role == 'adm') && $model->role == 1) {
- $model->role = 'manager';
- }
- else {
- $model->role = 'user';
- }
- if ($model->password == '') {
- $model->password = $oldAttr['password'];
- }
- else {
- $model->password = $model->hashPassword($model->password, $model->salt);
- }
- if (Yii::app()->user->role == 'manager') {
- if ($model->status == 1) {
- $model->status = 2;
- }
- }
- $model->save(false);
- //если текущий админ и роль менеджер, делаем чтоб менеджер себя видел
- if($model->role == 1 && (Yii::app()->user->role == 'adm')) {
- $model->who_added_id = $model->id;
- $model->save(false);
- }
- $this->redirect(array('view','id' => $model->id));
- }
- }
- if (Yii::app()->user->role == 'adm') {
- $this->render('update',array('model'=>$model));
- }
- else {
- $this->render('mupdate',array('model'=>$model));
- }
- }
- /**
- * Deletes a particular model.
- * If deletion is successful, the browser will be redirected to the 'admin' page.
- * @param integer $id the ID of the model to be deleted
- */
- public function actionDelete($id)
- {
- if ((Yii::app()->user->isGuest) || (Yii::app()->user->role == 'user'))
- {
- $this->redirect(Yii::app()->user->returnUrl);
- }
- $model=$this->loadModel($id);
- $model->status = 2;
- $model->save(false);
- if(!isset($_GET['ajax']))
- $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('index'));
- }
- /**
- * Manages all models.
- */
- public function actionIndex()
- {
- if ((Yii::app()->user->isGuest) || (Yii::app()->user->role == 'user'))
- {
- $this->redirect(Yii::app()->user->returnUrl);
- }
- $model = new User('search');
- $model->unsetAttributes();
- if(isset($_GET['User']))
- $model->attributes = $_GET['User'];
- $admin = false;
- if (Yii::app()->user->role == 'adm') {
- $admin = true;
- }
- $this->render('admin',array(
- 'model' => $model,
- 'admin' => $admin,
- ));
- }
- /**
- * 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=User::model()->findByPk($id);
- if($model===null)
- throw new CHttpException(404,'The requested page does not exist.');
- return $model;
- }
- public function actionReg() {
- $this->layout='//layouts/column1';
- if (Yii::app()->user->isGuest)
- {
- $user = new User();
- $user->setScenario('create');
- if (isset($_GET['ref_phone'])) {
- $user->ref_phone = $_GET['ref_phone'];
- }
- if(isset($_POST['User']))
- {
- $user->attributes = $_POST['User'];
- if($user->validate())
- {
- if($user->model()->count("username = :username", array(':username' => $user->username)))
- {
- $user->addError('username', 'Псевдоним уже занят другим пользователем');
- }
- elseif($user->ref_phone && !$user->model()->count("phone = :ref_phone", array(':ref_phone' => $user->ref_phone)))
- {
- $user->addError('ref_phone', 'Номер телефона, пригласившего вас пользователя не зарегистрирован в системе');
- }
- else {
- $managers = Yii::app()->db->createCommand("SELECT COUNT(id), who_added_id FROM tbl_user WHERE who_added_id <> 0 GROUP BY who_added_id ORDER BY COUNT(id)")->queryRow();
- $user->who_added_id = $managers['who_added_id'];
- $user->datereg = date("y-m-d H:i:s");
- $user->password = $user->hashPassword($user->password, $user->salt);
- $user->save(false);
- $reg_ok = true;
- $this->render('form_reg_ok');
- }
- }
- }
- if (empty($reg_ok)) {
- $this->render('form_reg', array('form'=>$user));
- }
- }
- else {
- $this->redirect(Yii::app()->user->returnUrl);
- }
- }
- /**
- * Performs the AJAX validation.
- * @param CModel the model to be validated
- */
- protected function performAjaxValidation($model)
- {
- if(isset($_POST['ajax']) && $_POST['ajax']==='user-form')
- {
- echo CActiveForm::validate($model);
- Yii::app()->end();
- }
- }
- public function actionCheck($id)
- {
- $this->layout='//layouts/column2';
- if ((Yii::app()->user->isGuest) || (Yii::app()->user->role == 'user'))
- {
- $this->redirect(Yii::app()->user->returnUrl);
- }
- $model = Yii::app()->db->createCommand()
- ->select('*')
- ->from('tbl_payments')
- ->where('user_id=:id and status=:status', array(':id' => $id, ':status' => 'processing'))
- ->queryRow();
- if(empty($model))
- throw new CHttpException(404,'The requested page does not exist.');
- if (isset($_POST['check'])) {
- Yii::app()->db->createCommand()->update('tbl_payments', array('status'=> 'processed'),
- 'user_id=:id', array(':id' => $id));
- Yii::app()->db->createCommand()->update('tbl_user', array('pay_status'=> 0),
- 'id=:id', array(':id' => $id));
- $this->redirect(array('view','id' => $id));
- }
- $this->render('check',array(
- 'model'=>$model,
- ));
- }
- public function actionLevelup($id) {
- if ((Yii::app()->user->isGuest) || (Yii::app()->user->role == 'user'))
- {
- $this->redirect(Yii::app()->user->returnUrl);
- }
- $model = $this->loadModel($id);
- if ($model->status != 'canup') {
- $model = 'denied';
- $payment = array();
- }
- else {
- if($model->paywait == 0) {
- $model = $this->addReferer($model);
- $model->datetopay = date("y-m-d H:i:s");
- $model->paywait = 1;
- $model->save(false);
- $price = Level::model()->find('id=:id', array(':id' => $model->lvl+1));
- $card = $this->getCardtoPay($model);
- $pay = new Payments;
- $pay->user_id = $model->id;
- $pay->amount = $price->price;
- $pay->status = 'processing';
- $pay->recipient = $card;
- $pay->pay_to_id = $model->id_for_pay;
- $pay->desc = 'pay for lvl'.$model->lvl+1;
- $pay->date = $model->datetopay;
- $pay->save(false);
- }
- $payment['card'] = $this->getCardtoPay($model);
- $payment['price'] = Level::model()->find('id=:id', array(':id' => $model->lvl+1));
- if (isset($_POST['up'])) {
- $pay = Payments::model()->find('user_id=:id AND date=:date', array(':id' => $model->id, ':date' => $model->datetopay));
- $pay->status = 'processed';
- $pay->save(false);
- $model->lvl = $model->lvl +1;
- $model->status = 'active';
- $model->paywait = 0;
- $model->datetopay = '0000-00-00 00:00:00';
- $model->save(false);
- Yii::app()->db->createCommand()->insert('tbl_ref_counter',
- array('count_own' => 0,
- 'count_all' => 0,
- 'user_id' => $model->id,
- 'lvl' => $model->lvl
- ));
- $this->redirect(array('view','id' => $id));
- }
- }
- $this->render('up',array(
- 'model' => $model, 'payment' => $payment
- ));
- }
- public function addReferer($model) {
- $lvl = $model->lvl + 1;
- //записываем кому нибудь в рефереры
- $ref = Yii::app()->db->createCommand('SELECT user_id, count_own, count_all FROM tbl_ref_counter WHERE lvl = '.$lvl.' AND count_own < 3 ORDER BY id, count_own')->queryRow();
- $model->id_for_pay = $ref['user_id'];
- $model->save(false);
- $tuser = $model;
- if ($model->lvl == 0)
- {
- $tuser = User::model()->find('id=:id', array(':id' => $model->id_for_pay));
- }
- else
- {
- $i = 1;
- $alg = array(
- '2' => '2',
- '3' => '3',
- '4' => '4',
- '5' => '1',
- '6' => '2',
- '7' => '3',
- '8' => '4'
- );
- $stop = $alg[$lvl];
- while ($i <= $stop) {
- if ($tuser->id_for_pay) {
- $tuser = User::model()->find('id=:id', array(':id' => $tuser->id_for_pay));
- $i++;
- }
- }
- }
- $user_to_pay = Yii::app()->db->createCommand('SELECT user_id, count_own, count_all FROM tbl_ref_counter WHERE lvl = '.$lvl.' AND user_id = '.$tuser->id)->queryRow();
- //поднимаем счетчик полученых оплат
- Yii::app()->db->createCommand()->update('tbl_ref_counter', array('count_all' => $user_to_pay['count_all'] + 1),
- 'user_id=:ref_id and lvl=:ref_lvl', array(':ref_id' => $user_to_pay['user_id'], ':ref_lvl' => $lvl));
- //поднимаем счетчик рефералов
- Yii::app()->db->createCommand()->update('tbl_ref_counter', array('count_own' => $ref['count_own'] + 1),
- 'user_id=:ref_id and lvl=:ref_lvl', array(':ref_id' => $ref['user_id'], ':ref_lvl' => $lvl));
- return $model;
- }
- public function getCardtoPay($user) {
- $tuser = $user;
- if ($user->lvl == 0)
- {
- $tuser = User::model()->find('id=:id', array(':id' => $user->id_for_pay));
- }
- else
- {
- $i = 1;
- $alg = array(
- '1' => '2',
- '2' => '3',
- '3' => '4',
- '4' => '1',
- '5' => '2',
- '6' => '3',
- '7' => '4',
- );
- $stop = $alg[$user->lvl];
- while ($i <= $stop) {
- if ($tuser->id_for_pay) {
- $tuser = User::model()->find('id=:id', array(':id' => $tuser->id_for_pay));
- $i++;
- }
- }
- }
- return $tuser->card;
- }
- public function ActionJunkcheck() {
- $users = Yii::app()->db->createCommand('SELECT id, lvl, datetopay, id_for_pay FROM tbl_user WHERE datetopay <> "0000-00-00 00:00:00"')->queryAll();
- if (!empty($users)) {
- foreach ($users as $user) {
- if ((((strtotime(date("y-m-d H:i:s")) - strtotime($user['datetopay']))/60)) > 60) {
- $model = $this->loadModel($user['id']);
- Yii::app()->db->createCommand()->delete('tbl_payments', 'user_id=:id AND date=:date', array(':id' => $model->id, ':date' => $model->datetopay));
- $model->paywait = 0;
- $model->datetopay = '0000-00-00 00:00:00';
- $model->save(false);
- $tuser = $model;
- $lvl = $model->lvl +1;
- if ($model->lvl == 0) {
- $tuser = User::model()->find('id=:id', array(':id' => $model->id_for_pay));
- }
- else {
- $i = 1;
- $alg = array(
- '2' => '2',
- '3' => '3',
- '4' => '4',
- '5' => '1',
- '6' => '2',
- '7' => '3',
- '8' => '4'
- );
- $stop = $alg[$lvl];
- while ($i <= $stop) {
- if ($tuser->id_for_pay) {
- $tuser = User::model()->find('id=:id', array(':id' => $tuser->id_for_pay));
- $i++;
- }
- }
- }
- $user_to_pay = Yii::app()->db->createCommand('SELECT user_id, count_own, count_all FROM tbl_ref_counter WHERE lvl = '.$lvl.' AND user_id = '.$tuser->id)->queryRow();
- $ref = Yii::app()->db->createCommand('SELECT user_id, count_own, count_all FROM tbl_ref_counter WHERE lvl = '.$lvl.' AND user_id = '.$model->id_for_pay)->queryRow();
- //опускаем счетчик полученых оплат
- Yii::app()->db->createCommand()->update('tbl_ref_counter', array('count_all' => $user_to_pay['count_all'] - 1),
- 'user_id=:ref_id and lvl=:ref_lvl', array(':ref_id' => $user_to_pay['user_id'], ':ref_lvl' => $lvl));
- //опускаем счетчик рефералов
- Yii::app()->db->createCommand()->update('tbl_ref_counter', array('count_own' => $ref['count_own'] - 1),
- 'user_id=:ref_id and lvl=:ref_lvl', array(':ref_id' => $ref['user_id'], ':ref_lvl' => $lvl));
- }
- }
- }
- //проверяем возможность повышения уровня
- $users = $user_to_pay = Yii::app()->db->createCommand('SELECT DISTINCT u.id, u.lvl, c.count_all, c.count_own FROM tbl_ref_counter c INNER JOIN tbl_user u ON c.user_id = u.id WHERE c.count_all >=3 AND c.lvl = u.lvl')->queryAll();
- $alg = array(
- '1' => '3',
- '2' => '9',
- '3' => '27',
- '4' => '81',
- '5' => '3',
- '6' => '9',
- '7' => '27',
- '8' => '81'
- );
- foreach ($users as $user) {
- $model = $this->loadModel($user['id']);
- if ($user['count_all'] >= $alg[$user['lvl']]) {
- $model->status = 'canup';
- $model->save(false);
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment