Example #1
0
 /**
  * Signs user up.
  *
  * @return User|null the saved model or null if saving fails
  */
 public function signup()
 {
     if ($this->validate()) {
         $user = new User();
         $profile = new Profile();
         $user->username = $this->username;
         $user->email = $this->email;
         $user->setPassword($this->password);
         $user->generateAuthKey();
         $user->role = 'user';
         $user->status = 1;
         $profile->firstname = $this->firstname;
         $profile->lastname = $this->lastname;
         $profile->avatar = $this->avatar;
         // $profile->gender = 0;
         $transaction = Yii::$app->db->beginTransaction();
         if ($user->save()) {
             $profile->user_id = $user->getId();
             if ($profile->save()) {
                 $transaction->commit();
                 return $user;
             }
         } else {
             $transaction->rollback();
             print_r($user->getErrors());
             return false;
         }
     }
     return null;
 }
Example #2
0
 public function signup()
 {
     if ($this->validate()) {
         $user = new User();
         $user->username = $this->username;
         $user->email = $this->email;
         $user->setPassword($this->password);
         $user->status = User::STATUS_WAIT;
         $user->generateAuthKey();
         $user->generateEmailConfirmToken();
         if ($user->save()) {
             $auth = Yii::$app->authManager;
             $userRoleDefault = $auth->getRole('user');
             $auth->assign($userRoleDefault, $user->getId());
             $userProfile = new Profile();
             $userProfile->user_id = $user->getId();
             $userProfile->user_agent = Yii::$app->request->getUserAgent();
             $userProfile->user_ip = Yii::$app->request->getUserIP();
             $userProfile->name = $user->username;
             $userProfile->avatar_id = 1;
             //default.png (id = 1)
             $userProfile->save(false);
             Yii::$app->mailer->compose(['text' => '@app/modules/user/mails/emailConfirm'], ['user' => $user])->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name . ' robot'])->setTo($this->email)->setSubject(Module::t('app', 'EMAIL_SIGNUP_SUBJECT') . Yii::$app->name)->send();
         }
         return $user;
     }
     return null;
 }
Example #3
0
 /**
  * Signs user up.
  *
  * @return User|null the saved model or null if saving fails
  */
 public function signup()
 {
     if ($this->validate()) {
         $user = new User();
         $user->username = $this->username;
         $user->email = $this->email;
         $user->setPassword($this->password);
         $user->status = User::STATUS_NOT_CONFIRMED;
         $user->generateAuthKey();
         $user->generateEmailConfirmToken();
         if ($user->save()) {
             $profile = new Profile();
             $profile->link('user', $user);
             Yii::$app->mailer->compose(['text' => '@app/modules/user/mails/emailConfirm'], ['user' => $user])->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name])->setTo($this->email)->setSubject('Email confirmation for ' . Yii::$app->name)->send();
         }
         return $user;
     }
     return null;
 }
Example #4
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Profile::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'user_id' => $this->user_id, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]);
     $query->andFilterWhere(['like', 'fullname', $this->fullname])->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'surname', $this->surname])->andFilterWhere(['like', 'patronymic', $this->patronymic])->andFilterWhere(['like', 'gender', $this->gender])->andFilterWhere(['like', 'address_id', $this->address_id]);
     return $dataProvider;
 }
Example #5
0
 public function actionProfile()
 {
     $model = Profile::findOne(['user_id' => Yii::$app->user->id]);
     if ($model->load(Yii::$app->request->post())) {
         if ($model->validate()) {
             if ($model->save(false)) {
                 Yii::$app->session->setFlash('success', Yii::t('main', 'Successfully'));
             } else {
                 Yii::$app->session->setFlash('danger', Yii::t('main', 'Error'));
             }
             return $this->refresh();
         }
     }
     return $this->render('profile', ['model' => $model]);
 }
 /**
  * Displays the login page.
  *
  * @return string|Response
  */
 public function actionLogin()
 {
     if (!Yii::$app->user->isGuest) {
         $this->goHome();
     }
     /** @var LoginForm $model */
     $model = Yii::createObject(LoginForm::className());
     $this->performAjaxValidation($model);
     if ($model->load(Yii::$app->getRequest()->post()) && $model->login()) {
         $profile = Profile::findOne(Yii::$app->user->id);
         if (empty($profile->name) || empty($profile->location)) {
             return $this->redirect(['settings/profile?complete=1']);
         } else {
             return $this->goBack();
         }
     }
     return $this->render('login', ['model' => $model, 'module' => $this->module]);
 }
Example #7
0
 public function actionMassdelete()
 {
     if (($ids = Yii::$app->request->post('selection')) !== null) {
         $models = $this->findModel(Yii::$app->request->post('selection'));
         foreach ($models as $model) {
             $model->delete();
         }
         $models = Profile::findAll(Yii::$app->request->post('selection'));
         foreach ($models as $model) {
             $model->delete();
         }
         $models = Auth::findAll(Yii::$app->request->post('selection'));
         foreach ($models as $model) {
             $model->delete();
         }
         return $this->redirect(['index']);
     } else {
         throw new HttpException(400);
     }
 }
Example #8
0
 public function actionProfile()
 {
     $model = $this->findModel();
     $profile = Profile::find()->where(['user_id' => $model->id])->one();
     Yii::setAlias('@upload', '@webroot/uploads/user/avatar/');
     if (Yii::$app->request->isPost && !empty($_FILES)) {
         $extension = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
         $fileName = $model->id . '_' . time() . rand(1, 10000) . '.' . $extension;
         Image::thumbnail($_FILES['file']['tmp_name'], 160, 160)->save(Yii::getAlias('@upload') . $fileName, ['quality' => 80]);
         //delete old icon
         $file_exists = file_exists(Yii::getAlias('@upload') . $model->avatar);
         if ($file_exists && strpos($model->avatar, 'default') === false) {
             @unlink(Yii::getAlias('@upload') . $model->avatar);
         }
         $model->avatar = $fileName;
         $model->update();
     }
     if ($profile->load(Yii::$app->request->post()) && $profile->save()) {
         Yii::$app->getSession()->setFlash('success', Yii::t('app', 'Saved successfully'));
     }
     return $this->render('profile', ['profile' => $profile, 'model' => $model]);
 }
 private function findProfile()
 {
     return Profile::findOne(['user_id' => Yii::$app->user->identity->getId()]);
 }
Example #10
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getProfiles()
 {
     return $this->hasMany(Profile::className(), ['user_id' => 'id']);
 }
Example #11
0
<?php

use app\modules\user\Module;
use yii\helpers\Html;
use app\modules\user\models\Profile;
use app\modules\user\models\User;
$userId = Yii::$app->user->identity->getId();
$user = User::findOne($userId);
$profile = Profile::findOne(['user_id' => $userId]);
/* @var $profile app\modules\user\models\Profile */
/* @var $user app\modules\user\models\User */
/* @var $this yii\web\View */
?>

<div class="col-md-3">

    <div class="panels panel-default">

        <div class="panel-body">

            <?php 
echo $profile->getAvatarImg();
?>

            <br/><br/>

            <ul class="list-unstyled">
                <li><?php 
echo Module::t('app', 'MODEL_USER_LABEL_USERNAME');
?>
: <strong><?php 
Example #12
0
    */
    ?>
                <?php 
    echo Html::a('Новый пользователь?', ['/user/secure/signup']);
    ?>
<br/>
            </div>
        </div>
    </div>
<?php 
} else {
    ?>
    <div class="panels panel-default">
        <div class="panel-body">
            <?php 
    $profile = Profile::findOne(['user_id' => Yii::$app->user->identity->getId()]);
    ?>
            <?php 
    $comment = CommentModel::find()->where(['createdBy' => Yii::$app->user->identity->getId()])->andWhere(['status' => 1])->count();
    ?>
            <div class="row">
                <div class="col-xs-4"><?php 
    echo $profile->getAvatarImg();
    ?>
<br/></div>
                <div class="col-xs-8">
                    <i class="fa fa-user"></i> <?php 
    echo $profile->name;
    ?>
<br/>
                    <i class="fa fa-comments"></i> <?php 
Example #13
0
 public function getProfile()
 {
     return $this->hasMany(Profile::className(), ['uid' => 'id'])->andWhere(['target_type' => Profile::TYPE]);
 }
Example #14
0
 public function actionPut()
 {
     $params = Yii::$app->request->post();
     $post = array_merge(Yii::$app->request->post());
     $params = Yii::$app->request->queryParams;
     switch ($params['mode']) {
         case 'changeQuantity':
             if (Yii::$app->request->isAjax) {
                 if (!empty($position = (int) $post['position']) && !empty($quantity = (int) $post['quantity'])) {
                     $basket = BasketSearch::findOne($position);
                     $basket->tovar_count = $quantity;
                     return $basket->update();
                 }
             }
             break;
         case 'put':
             $session = new \yii\web\Session();
             $id = Yii::$app->request->post('id');
             if ($id) {
                 $tovar = Tovar::findOne(['id' => $id]);
                 if ($tovar) {
                     $toBasket = new BasketSearch();
                     $toBasket->tovar_id = $id;
                     $toBasket->tovar_count = 1;
                     $toBasket->tovar_price = $tovar->price;
                     $toBasket->session_id = Yii::$app->session->id;
                     $toBasket->tovar_min = 1;
                     $toBasket->provider_id = 5;
                     //id=5 провайдер KD ищет в локальной базе
                     if (Yii::$app->user->id) {
                         $toBasket->uid = Yii::$app->user->id;
                     }
                     if ($toBasket->save()) {
                         return '<a class="btn" href="' . url::toRoute(['/basket/basket'], true) . '"><i class="icon-shopping-cart icon-black"></i>Уже в корзине</a>';
                     } else {
                         if (YII_DEBUG) {
                             var_dump($toBasket->getErrors());
                         }
                     }
                 } else {
                     return false;
                 }
             }
             return '<a class="btn" href="' . url::toRoute(['/basket/basket'], true) . '"><i class="icon-shopping-cart icon-black"></i>Уже в корзине</a>';
             break;
         case 'update':
             //                $data = Yii::$app->request->post();
             //                if (isset($data) && $data != '') {
             //                    $basket = BasketSearch::findOne(['id' => intval($data['row_id'])]);
             //                    if ($basket)
             //                        $basket->description = Html::encode($data['text']);
             //                    if ($basket->save())
             //                        return true;
             //                }
             if (Yii::$app->request->post('hasEditable')) {
                 $post = Yii::$app->request->post();
                 $model = $basket = BasketSearch::findOne(['id' => $post['editableKey']]);
                 $data['OrderSearch'] = current($post['OrderSearch']);
                 if ($model->load($data) && $model->save()) {
                     $data = ['output' => $model->comment];
                 }
                 return Json::encode($data);
             }
             break;
         case 'order':
             // создаем новый заказ
             $user_id = Yii::$app->user->id;
             $number = ($user_id ? $user_id : 'N') . '-' . date("ymdhis");
             $orders = explode(';', Yii::$app->request->post('orderData'));
             $formData = Yii::$app->request->post('formData');
             if (isset($formData) && $formData != '') {
                 parse_str($formData, $fdata);
                 $profileData = array_values($fdata['Profile']);
             }
             $fdata['deliveryStore'] = isset($fdata['deliveryStore']) ? $fdata['deliveryStore'] : 0;
             $cityCode = Yii::$app->request->cookies['city'];
             $city = \app\modules\city\models\CitySearch::find()->where(['id' => $cityCode ? $cityCode : 2097])->one();
             $order_data = ['number' => $number, 'date' => date("Y-m-d H:i:s"), 'user_id' => $user_id, 'user_name' => $fdata['Profile']['name'], 'user_email' => $fdata['User']['email'], 'user_telephone' => $fdata['User']['telephone'], 'user_location' => $city->name, 'store_id' => (int) $fdata['deliveryStore']];
             $order = new Order();
             $order->load($order_data, '');
             $order->save();
             // передаем id заказа
             $order_id = $order->id;
             $order = new OrderUpdate1c();
             $order->OrderId = $order_id;
             $order->save();
             $user = \app\modules\user\models\User::findOne($user_id);
             $user->scenario = 'update';
             $user->telephone = $order_data['user_telephone'];
             $user->save();
             $profile = Profile::findOne($user_id);
             $profile->scenario = 'order';
             $profile->name = $order_data['user_name'];
             $profile->save();
             foreach ($orders as $order) {
                 $order = explode(':', $order);
                 $basket = BasketSearch::findOne(['id' => intval($order[0])]);
                 if ($basket) {
                     $product = Tovar::findOne(['id' => $basket->tovar_id]);
                     $data['Orders'] = ['product_id' => $product ? $product->id : null, 'manufacture' => $basket->manufacturer, 'part_name' => $product ? $product->name : $basket->part_name, 'part_price' => $basket->tovar_price, 'product_article' => $product ? null : $basket->part_number, 'quantity' => $order[1], 'reference' => '', 'status' => \app\modules\user\models\Orders::ORDER_ADOPTED, 'datetime' => date('Y-m-d H:i:s'), 'description' => $basket->description, 'order_id' => (int) $order_id, 'provider_id' => (int) $basket->provider_id, 'delivery_days' => (int) $basket->period];
                     $Orders = new Orders();
                     if ($Orders->load($data) && $Orders->save()) {
                         $basket->delete();
                     }
                 }
             }
             return true;
             break;
         case 'remove':
             if (BasketSearch::deleteAll(['in', 'id', $post['id']])) {
                 return JSON::encode($_POST);
             }
             //$this->basket_row($dataProvider);
             break;
     }
 }
Example #15
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getProfile()
 {
     return $this->hasOne(Profile::className(), ['userID' => 'id']);
 }
Example #16
0
 protected function findModelProfile($id)
 {
     if (($profile = Profile::findOne(['user_id' => $id])) !== null) {
         return $profile;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
Example #17
0
 public function getProfileAvatar()
 {
     $profile_ava = Profile::findOne(['user_id' => $this->getAuthorId()]);
     return $profile_ava->getAvatarImg();
 }
Example #18
0
<?php

/* @var $this \yii\web\View */
/* @var $content string */
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use app\assets\AppAsset;
use app\components\widgets\Alert;
use app\modules\admin\components\widgets\AdminAlert;
use app\modules\admin\Module;
\app\assets\AdminAsset::register($this);
//AppAsset::register($this);
$user = \app\modules\user\models\User::findOne(Yii::$app->user->identity->getId());
$profile = \app\modules\user\models\Profile::findOne(['user_id' => Yii::$app->user->identity->getId()]);
$this->beginPage();
?>
<!DOCTYPE html>
<html lang="<?php 
echo Yii::$app->language;
?>
">
<head>
    <meta charset="<?php 
echo Yii::$app->charset;
?>
">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php 
echo Html::csrfMetaTags();
Example #19
0
 /**
  * Finds the Profile model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return Profile the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = Profile::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
Example #20
0
 public function onAuthSuccess($client)
 {
     $attributes = $client->getUserAttributes();
     /* @var $auth Auth */
     $auth = Auth::find()->where(['source' => $client->getId(), 'source_id' => $attributes['id']])->one();
     if (Yii::$app->user->isGuest) {
         if ($auth) {
             // login
             $user = $auth->user;
             Yii::$app->user->login($user);
         } else {
             // signup
             if (isset($attributes['email']) && User::find()->where(['email' => $attributes['email']])->exists()) {
                 Yii::$app->getSession()->setFlash('error', [Yii::t('app', "User with the same email as in {client} account already exists but isn't linked to it. Login using email first to link it.", ['client' => $client->getTitle()])]);
             } else {
                 $password = Yii::$app->security->generateRandomString(6);
                 $user = new User(['username' => $attributes['screen_name'], 'password' => $password, 'role' => 'user', 'email' => $attributes['email']]);
                 if (!empty($attributes['photo'])) {
                     $file = file_get_contents($attributes['photo']);
                     $avatarPath = \app\modules\user\Module::$avatarPath;
                     file_put_contents($avatarPath . '/1.jpg', $file);
                 }
                 $profile = new Profile(['firstname' => $attributes['first_name'], 'lastname' => $attributes['last_name'], 'country' => $attributes['country']]);
                 $user->generateAuthKey();
                 $user->generatePasswordResetToken();
                 $transaction = $user->getDb()->beginTransaction();
                 if ($user->save()) {
                     // Сохраняем профиль
                     $profile->user_id = $user->id;
                     if (!$profile->save()) {
                         print_r($profile->getErrors());
                         die;
                     }
                     $auth = new Auth(['user_id' => $user->id, 'source' => $client->getId(), 'source_id' => (string) $attributes['id']]);
                     if ($auth->save()) {
                         $transaction->commit();
                         Yii::$app->user->login($user);
                     } else {
                         print_r($auth->getErrors());
                     }
                 } else {
                     print_r($user->getErrors());
                 }
             }
         }
     } else {
         // user already logged in
         if (!$auth) {
             // add auth provider
             $auth = new Auth(['user_id' => Yii::$app->user->id, 'source' => $client->getId(), 'source_id' => $attributes['id']]);
             $auth->save();
         }
     }
 }
Example #21
0
 public function getProfile()
 {
     return $this->hasOne(\app\modules\user\models\Profile::className(), ['user_id' => 'id']);
 }
Example #22
0
?>


<div class="well">
   <?php 
$form = ActiveForm::begin(['id' => 'user-form'], ['enableClientValidation' => false], ['enableAjaxValidation' => true], ['validateOnChange' => false]);
?>

    <?php 
echo $form->field($model, 'firstname');
?>
    <?php 
echo $form->field($model, 'lastname');
?>
    <?php 
echo $form->field($model, 'gender')->dropDownList(Profile::getGenderArray());
?>

    <?php 
echo $form->field($model, 'avatar')->widget(Widget::className(), ['settings' => ['url' => ['fileapi-upload']], 'crop' => true, 'cropResizeWidth' => 100, 'cropResizeHeight' => 100]);
?>
    

    <?php 
echo Html::submitButton($model->isNewRecord ? '<i class="fa fa-plus fa-fw"></i> ' . Yii::t('main', 'Add') : '<i class="fa fa-floppy-o fa-fw"></i> ' . Yii::t('main', 'Save'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']);
?>

<?php 
ActiveForm::end();
?>