Commit a1a60fa5fada8cfe21ee36b39474f9d3ad275472

Authored by Administrator
1 parent eaf6988b

big commti

backend/controllers/BrandController.php
@@ -81,12 +81,18 @@ class BrandController extends Controller @@ -81,12 +81,18 @@ class BrandController extends Controller
81 { 81 {
82 $model = new Brand(); 82 $model = new Brand();
83 if ($model->load(Yii::$app->request->post())) { 83 if ($model->load(Yii::$app->request->post())) {
84 - if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { 84 + if ( ($image = UploadedFile::getInstance($model, 'image')) ) {
85 $model->image = $image->name; 85 $model->image = $image->name;
86 } 86 }
87 -  
88 if ($model->save() && $image) { 87 if ($model->save() && $image) {
89 - $image->saveAs(Yii::getAlias('@imagesDir/brands/' . $image->name)); 88 +
  89 + $imgDir = Yii::getAlias('@storage/brand/');
  90 +
  91 + if(!is_dir($imgDir)) {
  92 + mkdir($imgDir, 0755, true);
  93 + }
  94 +
  95 + $image->saveAs(Yii::getAlias('@storage/brand/' . $image->name));
90 } 96 }
91 97
92 return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect(['view', 'id' => $model->brand_id]) : $this->redirect(array_merge(['create'], Yii::$app->request->queryParams)); 98 return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect(['view', 'id' => $model->brand_id]) : $this->redirect(array_merge(['create'], Yii::$app->request->queryParams));
@@ -108,12 +114,18 @@ class BrandController extends Controller @@ -108,12 +114,18 @@ class BrandController extends Controller
108 $model = $this->findModel($id); 114 $model = $this->findModel($id);
109 115
110 if ($model->load(Yii::$app->request->post())) { 116 if ($model->load(Yii::$app->request->post())) {
111 - if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { 117 + if ( ($image = UploadedFile::getInstance($model, 'image')) ) {
112 $model->image = $image->name; 118 $model->image = $image->name;
113 } 119 }
114 -  
115 if ($model->save() && $image) { 120 if ($model->save() && $image) {
116 - $image->saveAs(Yii::getAlias('@imagesDir/brands/' . $image->name)); 121 +
  122 + $imgDir = Yii::getAlias('@storage/brands/');
  123 +
  124 + if(!is_dir($imgDir)) {
  125 + mkdir($imgDir, 0755, true);
  126 + }
  127 +
  128 + $image->saveAs(Yii::getAlias('@storage/brands/' . $image->name));
117 } 129 }
118 130
119 return $this->redirect(['view', 'id' => $model->brand_id]); 131 return $this->redirect(['view', 'id' => $model->brand_id]);
backend/views/brand/_form.php
@@ -19,7 +19,7 @@ use yii\widgets\ActiveForm; @@ -19,7 +19,7 @@ use yii\widgets\ActiveForm;
19 19
20 <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?> 20 <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?>
21 21
22 - <?= $form->field($model, 'imageUpload')->widget(\kartik\file\FileInput::classname(), [ 22 + <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [
23 'language' => 'ru', 23 'language' => 'ru',
24 'options' => [ 24 'options' => [
25 'accept' => 'image/*', 25 'accept' => 'image/*',
common/models/Customer.php 100755 → 100644
1 <?php 1 <?php
2 2
3 namespace common\models; 3 namespace common\models;
4 -use common\widgets\Mailer; 4 +
5 use Yii; 5 use Yii;
6 -use yii\base\NotSupportedException;  
7 -use yii\behaviors\TimestampBehavior;  
8 -use yii\db\ActiveRecord;  
9 6
  7 +/**
  8 + * This is the model class for table "customer".
  9 + *
  10 + * @property integer $id
  11 + * @property string $username
  12 + * @property string $password_hash
  13 + * @property string $name
  14 + * @property string $surname
  15 + * @property string $phone
  16 + * @property string $date_time
  17 + * @property string $gender
  18 + * @property integer $birth_day
  19 + * @property integer $birth_month
  20 + * @property integer $birth_year
  21 + * @property string $body
  22 + * @property integer $group_id
  23 + * @property string $email
  24 + * @property string $auth_key
  25 + * @property string $password_reset_token
  26 + * @property integer $status
  27 + * @property integer $created_at
  28 + * @property integer $updated_at
  29 + *
  30 + * @property ArtboxComment[] $artboxComments
  31 + * @property ArtboxCommentRating[] $artboxCommentRatings
  32 + * @property ArtboxLike[] $artboxLikes
  33 + * @property Share[] $shares
  34 + */
10 class Customer extends User implements \yii\web\IdentityInterface 35 class Customer extends User implements \yii\web\IdentityInterface
11 { 36 {
12 - public $password_repeat;  
13 - public $role;  
14 - public $verifyCode;  
15 - public $old_image;  
16 - public $authKey;  
17 -  
18 -  
19 - public static function tableName()  
20 - {  
21 - return 'customer';  
22 - }  
23 -  
24 - public function rules()  
25 - {  
26 - return [  
27 - [['username', 'password','phone','verifyCode','name','surname'], 'required','on'=>['person','company','customer']],  
28 - [['verifyCode'], 'captcha','captchaAction'=>'reg/captcha','on'=>['person','company','customer']],  
29 - [['password_repeat'], 'required','on'=>['person','company','customer','edit_person']],  
30 - [['password_repeat'], 'password_repeat','on'=>['person','company','customer','edit_person']],  
31 - [['username'], 'is_username','on'=>['person','company','customer']],  
32 - [['username'], 'email','on'=>['person','company','customer','edit_person']],  
33 - [['company'], 'required','on'=>['company']],  
34 -  
35 - [['username', 'password','phone','role','name','surname'], 'required','on'=>['edit_person','edit_customer','edit_company']],  
36 - [['company'], 'required','on'=>['edit_company']],  
37 - [['sex','body','birth_day','birth_mouth','birth_year'], 'safe','on'=>['edit_person']],  
38 - [['sex','status','children','body','old_image','birth_day','birth_mouth','birth_year'], 'safe','on'=>['edit_customer']],  
39 - [['body'], 'safe','on'=>['edit_company']],  
40 - // [['image'], 'file', 'extensions'=>'jpg, gif, png','skipOnEmpty'=>true,'on'=>['edit_person','edit_customer','edit_company']],  
41 - ];  
42 - }  
43 -  
44 - public function attributeLabels()  
45 - {  
46 - return [  
47 - 'username'=>'Логин (E-mail)',  
48 - 'password'=>'Пароль',  
49 - 'password_repeat'=>'Повторить пароль',  
50 - 'phone'=>'Телефон',  
51 - 'verifyCode'=>'Код проверки',  
52 - 'name'=>'Имя',  
53 - 'surname'=>'Фамилия',  
54 - 'company'=>'Компания',  
55 - 'sex'=>'Пол',  
56 - 'status'=>'Семейное положение',  
57 - 'children'=>'Дети',  
58 - 'edu'=>'Образование',  
59 - 'work'=>'Работа',  
60 - 'langs'=>'Иностранные языки',  
61 - 'prava'=>'Водительское удостоверение',  
62 - 'body'=>'О себе',  
63 - 'image'=>'Изображения',  
64 - ];  
65 - }  
66 -  
67 - public function password_repeat($attribute){  
68 - if($this->password != $this->password_repeat)  
69 - $this->addError('password_repeat','Не правильный повтор пароля.');  
70 - }  
71 -  
72 - public function is_username($attribute)  
73 - {  
74 - if(Customer::find()  
75 - //->where( ['username' => $this->username],['id!='.$_GET['id']] )  
76 - ->where('username = :username', [':username' => $this->username])  
77 - ->exists())  
78 - $this->addError('username','Такой пользователь уже есть.');  
79 - }  
80 -  
81 -  
82 - public function afterSave($insert, $changedAttributes)  
83 - {  
84 - parent::afterSave($insert, $changedAttributes);  
85 -  
86 - // установка роли пользователя  
87 - $auth = Yii::$app->authManager;  
88 - $role = $auth->getRole($this->role);  
89 - if (!$insert) {  
90 - $auth->revokeAll($this->id);  
91 - }  
92 - $auth->assign($role, $this->id);  
93 -  
94 -  
95 - }  
96 -  
97 - public function beforeSave($insert) {  
98 -  
99 -  
100 - $this->date_time = new \yii\db\Expression('NOW()');  
101 -  
102 - /**  
103 - if($image = UploadedFile::getInstance($this,'image')){  
104 -  
105 - $this->deleteImage($this->old_image);  
106 - //$this->image = $image;  
107 - $this->image = time() . '_' . rand(1, 1000) . '.' . $image->extension;  
108 - $image->saveAs('upload/profile/'.$this->image);  
109 -  
110 - $resizeObj = new resize('upload/profile/'.$this->image);  
111 - $resizeObj -> resizeImage(240, 240, 'crop');  
112 - $resizeObj -> saveImage('upload/profile/ico/'.$this->image, 100);  
113 - }elseif(!empty($this->old_image)) $this->image = $this->old_image;  
114 - **/  
115 -  
116 - return parent::beforeSave($insert);  
117 - }  
118 -  
119 - public function beforeDelete() {  
120 - //$this->deleteImage($this->image);  
121 - return parent::beforeDelete();  
122 - }  
123 -  
124 - public function deleteImage($file){  
125 - if(!empty($file)){  
126 - @unlink('upload/profile/'.$file);  
127 - @unlink('upload/profile/ico/'.$file);  
128 - // @unlink('upload/fotos/big/'.$file);  
129 - }  
130 - }  
131 -  
132 -  
133 - public function getOld(){  
134 - if(empty($this->birth_year) || empty($this->birth_mouth) || empty($this->birth_day))return;  
135 - $birthday = $this->birth_year.'-'.$this->birth_mouth.'-'.$this->birth_day;  
136 - if($birthday=="0000-00-00")return;  
137 - $birthday_timestamp = strtotime($birthday);  
138 - $age = date('Y') - date('Y', $birthday_timestamp);  
139 - if (date('md', $birthday_timestamp) > date('md')) {  
140 - $age--;  
141 - }  
142 - return $age;  
143 -  
144 - }  
145 -  
146 /** 37 /**
147 * @inheritdoc 38 * @inheritdoc
148 */ 39 */
149 - public static function findIdentity($id) 40 + public static function tableName()
150 { 41 {
151 -  
152 - /**Yii::$app->db->createCommand()  
153 - ->update('user', [  
154 - 'time_online' => (time() + (10*60)),  
155 - ], 'id = '.$id)  
156 - ->execute(); **/  
157 - return static::find()->select(['customer.*','auth_assignment.item_name as role'])->where(['id'=>$id])->join('LEFT JOIN','auth_assignment','auth_assignment.user_id = customer.id')->one(); 42 + return 'customer';
158 } 43 }
159 44
160 /** 45 /**
161 * @inheritdoc 46 * @inheritdoc
162 */ 47 */
163 - public static function findIdentityByAccessToken($token, $type = null)  
164 - {  
165 - return static::findOne(['access_token' => $token]);  
166 - }  
167 -  
168 - /**  
169 - * Finds user by username  
170 - *  
171 - * @param string $username  
172 - * @return static|null  
173 - */  
174 - public static function findByUsername($username) 48 + public function rules()
175 { 49 {
176 - return static::findOne(['username' => $username]); 50 + return [
  51 + [['username', 'password_hash'], 'required'],
  52 + [['date_time'], 'safe'],
  53 + [['birth_day', 'birth_month', 'birth_year', 'group_id', 'status', 'created_at', 'updated_at'], 'integer'],
  54 + [['body'], 'string'],
  55 + [['status'],'default', 'value' => '10'],
  56 + [['username', 'name', 'surname', 'phone', 'email', 'password_reset_token'], 'string', 'max' => 255],
  57 + [['gender', 'auth_key'], 'string', 'max' => 32],
  58 + ];
177 } 59 }
178 60
179 /** 61 /**
180 * @inheritdoc 62 * @inheritdoc
181 */ 63 */
182 - public function getId() 64 + public function attributeLabels()
183 { 65 {
184 - return $this->id; 66 + return [
  67 + 'id' => 'ID',
  68 + 'username' => 'Username',
  69 + 'name' => 'Name',
  70 + 'surname' => 'Surname',
  71 + 'phone' => 'Phone',
  72 + 'date_time' => 'Date Time',
  73 + 'gender' => 'Gender',
  74 + 'birth_day' => 'Birth Day',
  75 + 'birth_month' => 'Birth Month',
  76 + 'birth_year' => 'Birth Year',
  77 + 'body' => 'Body',
  78 + 'group_id' => 'Group ID',
  79 + 'email' => 'Email',
  80 + 'auth_key' => 'Auth Key',
  81 + 'password_reset_token' => 'Password Reset Token',
  82 + 'status' => 'Status',
  83 + 'created_at' => 'Created At',
  84 + 'updated_at' => 'Updated At',
  85 + ];
185 } 86 }
186 87
187 /** 88 /**
188 - * @inheritdoc 89 + * @return \yii\db\ActiveQuery
189 */ 90 */
190 - public function getAuthKey() 91 + public function getArtboxComments()
191 { 92 {
192 - return $this->authKey; 93 + return $this->hasMany(ArtboxComment::className(), ['user_id' => 'id']);
193 } 94 }
194 95
195 /** 96 /**
196 - * @inheritdoc 97 + * @return \yii\db\ActiveQuery
197 */ 98 */
198 - public function validateAuthKey($authKey) 99 + public function getArtboxCommentRatings()
199 { 100 {
200 - return $this->authKey === $authKey; 101 + return $this->hasMany(ArtboxCommentRating::className(), ['user_id' => 'id']);
201 } 102 }
202 103
203 /** 104 /**
204 - * Validates password  
205 - *  
206 - * @param string $password password to validate  
207 - * @return boolean if password provided is valid for current user 105 + * @return \yii\db\ActiveQuery
208 */ 106 */
209 - public function validatePassword($password) 107 + public function getArtboxLikes()
210 { 108 {
211 - return $this->password === $password;  
212 - }  
213 -  
214 - public function getImageProfile(){  
215 - return !empty($this->image) ? $this->image : 'user_photo.png';  
216 - }  
217 -  
218 - public static function findByPasswordResetToken($token)  
219 - {  
220 - if (!static::isPasswordResetTokenValid($token)) {  
221 - return null;  
222 - }  
223 -  
224 - return static::findOne([  
225 - 'password_reset_token' => $token,  
226 - 'status' => self::STATUS_ACTIVE,  
227 - ]); 109 + return $this->hasMany(ArtboxLike::className(), ['user_id' => 'id']);
228 } 110 }
229 111
230 /** 112 /**
231 - * Finds out if password reset token is valid  
232 - *  
233 - * @param string $token password reset token  
234 - * @return boolean 113 + * @return \yii\db\ActiveQuery
235 */ 114 */
236 - public static function isPasswordResetTokenValid($token) 115 + public function getShares()
237 { 116 {
238 - if (empty($token)) {  
239 - return false;  
240 - }  
241 -  
242 - $timestamp = (int) substr($token, strrpos($token, '_') + 1);  
243 - $expire = Yii::$app->params['user.passwordResetTokenExpire'];  
244 - return $timestamp + $expire >= time(); 117 + return $this->hasMany(Share::className(), ['user_id' => 'id']);
245 } 118 }
246 119
247 /** 120 /**
248 - * Generates new password reset token 121 + * Finds user by email
  122 + *
  123 + * @param string $email
  124 + * @return static|null
249 */ 125 */
250 - public function generatePasswordResetToken()  
251 - {  
252 - $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time();  
253 - }  
254 -  
255 public static function findByEmail($email) 126 public static function findByEmail($email)
256 { 127 {
257 return static::findOne(['email' => $email, 'status' => self::STATUS_ACTIVE]); 128 return static::findOne(['email' => $email, 'status' => self::STATUS_ACTIVE]);
@@ -262,11 +133,4 @@ class Customer extends User implements \yii\web\IdentityInterface @@ -262,11 +133,4 @@ class Customer extends User implements \yii\web\IdentityInterface
262 } 133 }
263 134
264 135
265 - /**  
266 - * Removes password reset token  
267 - */  
268 - public function removePasswordResetToken()  
269 - {  
270 - $this->password_reset_token = null;  
271 - }  
272 } 136 }
common/models/LoginForm.php
@@ -24,6 +24,7 @@ class LoginForm extends Model @@ -24,6 +24,7 @@ class LoginForm extends Model
24 return [ 24 return [
25 // username and password are both required 25 // username and password are both required
26 [['email', 'password'], 'required'], 26 [['email', 'password'], 'required'],
  27 + [['email'], 'email'],
27 // rememberMe must be a boolean value 28 // rememberMe must be a boolean value
28 ['rememberMe', 'boolean'], 29 ['rememberMe', 'boolean'],
29 // password is validated by validatePassword() 30 // password is validated by validatePassword()
@@ -56,6 +57,7 @@ class LoginForm extends Model @@ -56,6 +57,7 @@ class LoginForm extends Model
56 public function login() 57 public function login()
57 { 58 {
58 if ($this->validate()) { 59 if ($this->validate()) {
  60 +
59 return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0); 61 return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
60 } else { 62 } else {
61 return false; 63 return false;
common/modules/product/models/Export.php
@@ -21,8 +21,9 @@ class Export extends Model { @@ -21,8 +21,9 @@ class Export extends Model {
21 ->with(['variantsWithFilters','brand','categories','filters'])->all(); 21 ->with(['variantsWithFilters','brand','categories','filters'])->all();
22 22
23 23
24 - $i = 0;  
25 - foreach ($products as $product) 24 +
  25 + $count = count($products);
  26 + for ($i=0; $i<=$count; $i++)
26 { 27 {
27 28
28 29
@@ -32,9 +33,9 @@ class Export extends Model { @@ -32,9 +33,9 @@ class Export extends Model {
32 }*/ 33 }*/
33 $mods = []; 34 $mods = [];
34 35
35 - $filterString = $this->convertFilterToString($product->filters); 36 + $filterString = $this->convertFilterToString($products[$i]->filters);
36 37
37 - foreach ($product->variantsWithFilters as $variant) 38 + foreach ($products[$i]->variantsWithFilters as $variant)
38 { 39 {
39 40
40 $color = $variant->name; 41 $color = $variant->name;
@@ -56,7 +57,7 @@ class Export extends Model { @@ -56,7 +57,7 @@ class Export extends Model {
56 57
57 // $filters = $product->properties; 58 // $filters = $product->properties;
58 $categories = []; 59 $categories = [];
59 - foreach($product->categories as $value){ 60 + foreach($products[$i]->categories as $value){
60 61
61 $categories[] = $value->name; 62 $categories[] = $value->name;
62 63
@@ -68,18 +69,18 @@ class Export extends Model { @@ -68,18 +69,18 @@ class Export extends Model {
68 $list = [ 69 $list = [
69 70
70 $categories, 71 $categories,
71 - $product->brand->name,  
72 - $product->name, 72 + $products[$i]->brand->name,
  73 + $products[$i]->name,
73 '', 74 '',
74 - ((! empty($product->description)) ? $product->description : ''), 75 + ((! empty($products[$i]->description)) ? $products[$i]->description : ''),
75 $filterString, 76 $filterString,
76 - (!empty($product->variant)) ? $product->variant->price_old : '',  
77 - (!empty($product->variant)) ? $product->variant->price : '',  
78 - intval($product->akciya), 77 + (!empty($products[$i]->variant)) ? $products[$i]->variant->price_old : '',
  78 + (!empty($products[$i]->variant)) ? $products[$i]->variant->price : '',
  79 + intval($products[$i]->akciya),
79 '', 80 '',
80 - intval($product->is_new),  
81 - intval($product->is_top),  
82 - $product->video, 81 + intval($products[$i]->is_new),
  82 + intval($products[$i]->is_top),
  83 + $products[$i]->video,
83 implode (',', $fotos), 84 implode (',', $fotos),
84 ]; 85 ];
85 86
@@ -90,7 +91,7 @@ class Export extends Model { @@ -90,7 +91,7 @@ class Export extends Model {
90 91
91 92
92 fputcsv($handle, $to_write, ';'); 93 fputcsv($handle, $to_write, ';');
93 - unset($product); 94 + unset($products[$i]);
94 } 95 }
95 96
96 97
common/modules/rubrication/controllers/TaxOptionController.php
@@ -79,21 +79,10 @@ class TaxOptionController extends Controller @@ -79,21 +79,10 @@ class TaxOptionController extends Controller
79 $valueModel = new $valueModelName; 79 $valueModel = new $valueModelName;
80 80
81 if ($model->load(Yii::$app->request->post())) { 81 if ($model->load(Yii::$app->request->post())) {
82 -  
83 - if ($model->save() && ($image = UploadedFile::getInstance($model, 'image')) ) {  
84 - $imageModel = TaxOptionImage::find()->where(['tax_option_id' => $model->tax_option_id])->one();  
85 -  
86 - if($imageModel instanceof TaxOptionImage) {  
87 - $imageModel->product_variant_id = $model->product_variant_id;  
88 - $imageModel->image = $image->name;  
89 - $imageModel->save();  
90 - } else {  
91 - $imageModel = new TaxOptionImage();  
92 - $imageModel->product_variant_id = $model->product_variant_id;  
93 - $imageModel->image = $image->name;  
94 - $imageModel->save();  
95 - }  
96 - 82 + if ( ($image = UploadedFile::getInstance($model, 'image')) ) {
  83 + $model->image = $image->name;
  84 + }
  85 + if ($model->save() && $image) {
97 86
98 $imgDir = Yii::getAlias('@storage/tax_option/'); 87 $imgDir = Yii::getAlias('@storage/tax_option/');
99 88
@@ -154,7 +143,7 @@ class TaxOptionController extends Controller @@ -154,7 +143,7 @@ class TaxOptionController extends Controller
154 $image->saveAs(Yii::getAlias('@storage/tax_option/' . $image->name)); 143 $image->saveAs(Yii::getAlias('@storage/tax_option/' . $image->name));
155 } 144 }
156 145
157 - //TaxOption::find()->rebuildMP($model->tax_group_id); 146 + TaxOption::find()->rebuildMP($model->tax_group_id);
158 147
159 return $this->redirect(['view', 'id' => $model->tax_option_id]); 148 return $this->redirect(['view', 'id' => $model->tax_option_id]);
160 } else { 149 } else {
frontend/controllers/SiteController.php
@@ -2,17 +2,20 @@ @@ -2,17 +2,20 @@
2 2
3 namespace frontend\controllers; 3 namespace frontend\controllers;
4 4
5 -use common\modules\product\models\Category;  
6 -use common\modules\product\models\CategorySearch;  
7 -use common\modules\product\models\Product;  
8 -use common\modules\product\models\ProductVariant; 5 +use common\components\Mailer;
9 use Yii; 6 use Yii;
  7 +use common\models\LoginForm;
  8 +use frontend\models\PasswordResetRequestForm;
  9 +use frontend\models\ResetPasswordForm;
  10 +use frontend\models\SignupForm;
  11 +use frontend\models\ContactForm;
  12 +use yii\base\InvalidParamException;
  13 +use yii\web\BadRequestHttpException;
10 use yii\web\Controller; 14 use yii\web\Controller;
11 -use common\models\Page;  
12 -use common\models\News;  
13 -use common\models\Catalog;  
14 -use common\models\Products;  
15 - 15 +use yii\filters\VerbFilter;
  16 +use yii\filters\AccessControl;
  17 +use yii\web\Response;
  18 +use yii\widgets\ActiveForm;
16 class SiteController extends Controller 19 class SiteController extends Controller
17 { 20 {
18 21
@@ -28,5 +31,57 @@ class SiteController extends Controller @@ -28,5 +31,57 @@ class SiteController extends Controller
28 } 31 }
29 32
30 33
  34 + /**
  35 + * Logs in a user.
  36 + *
  37 + * @return mixed
  38 + */
  39 + public function actionLogin()
  40 + {
  41 + if (!\Yii::$app->user->isGuest) {
  42 + return $this->goHome();
  43 + }
  44 +
  45 + $model = new LoginForm();
  46 + if ($model->load(Yii::$app->request->post()) && $model->login()) {
  47 + return $this->goBack();
  48 + } else {
  49 + return $this->render('index', [
  50 + 'model' => $model,
  51 + ]);
  52 + }
  53 + }
  54 +
  55 +
  56 + /**
  57 + * Signs user up.
  58 + *
  59 + * @return mixed
  60 + */
  61 + public function actionSignup()
  62 + {
  63 +
  64 + if(Yii::$app->request->post()){
  65 + if (Yii::$app->request->isAjax) {
  66 + Yii::$app->response->format = Response::FORMAT_JSON;
  67 + $model = new SignupForm();
  68 + $model->load(Yii::$app->request->post());
  69 + return ActiveForm::validate($model);
  70 + } else {
  71 + $model = new SignupForm();
  72 + $model->load(Yii::$app->request->post());
  73 + if ($user = $model->signup()) {
  74 + if (Yii::$app->getUser()->login($user)) {
  75 + return $this->goHome();
  76 + }
  77 + }
  78 + }
  79 + }
  80 + return $this->render('signup', [
  81 + 'model' => $model,
  82 + ]);
  83 + }
  84 +
  85 +
31 86
32 } 87 }
frontend/models/ContactForm.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use Yii;
  6 +use yii\base\Model;
  7 +
  8 +/**
  9 + * ContactForm is the model behind the contact form.
  10 + */
  11 +class ContactForm extends Model
  12 +{
  13 + public $name;
  14 + public $email;
  15 + public $subject;
  16 + public $body;
  17 + public $verifyCode;
  18 +
  19 + /**
  20 + * @inheritdoc
  21 + */
  22 + public function rules()
  23 + {
  24 + return [
  25 + // name, email, subject and body are required
  26 + [['name', 'email', 'subject', 'body'], 'required'],
  27 + // email has to be a valid email address
  28 + ['email', 'email'],
  29 + // verifyCode needs to be entered correctly
  30 + ['verifyCode', 'captcha'],
  31 + ];
  32 + }
  33 +
  34 + /**
  35 + * @inheritdoc
  36 + */
  37 + public function attributeLabels()
  38 + {
  39 + return [
  40 + 'verifyCode' => 'Verification Code',
  41 + ];
  42 + }
  43 +
  44 + /**
  45 + * Sends an email to the specified email address using the information collected by this model.
  46 + *
  47 + * @param string $email the target email address
  48 + * @return boolean whether the email was sent
  49 + */
  50 + public function sendEmail($email)
  51 + {
  52 + return Yii::$app->mailer->compose()
  53 + ->setTo($email)
  54 + ->setFrom([$this->email => $this->name])
  55 + ->setSubject($this->subject)
  56 + ->setTextBody($this->body)
  57 + ->send();
  58 + }
  59 +}
frontend/models/PasswordResetRequestForm.php 0 → 100644
  1 +<?php
  2 +namespace frontend\models;
  3 +
  4 +use common\models\User;
  5 +use Yii;
  6 +use yii\base\Model;
  7 +
  8 +/**
  9 + * Password reset request form
  10 + */
  11 +class PasswordResetRequestForm extends Model
  12 +{
  13 + public $email;
  14 +
  15 + /**
  16 + * @inheritdoc
  17 + */
  18 + public function rules()
  19 + {
  20 + return [
  21 + ['email', 'filter', 'filter' => 'trim'],
  22 + ['email', 'required'],
  23 + ['email', 'email'],
  24 + ['email', 'exist',
  25 + 'targetClass' => '\common\models\User',
  26 + 'filter' => ['status' => User::STATUS_ACTIVE],
  27 + 'message' => 'There is no user with such email.'
  28 + ],
  29 + ];
  30 + }
  31 +
  32 + /**
  33 + * Sends an email with a link, for resetting the password.
  34 + *
  35 + * @return boolean whether the email was send
  36 + */
  37 + public function sendEmail()
  38 + {
  39 + /* @var $user User */
  40 + $user = User::findOne([
  41 + 'status' => User::STATUS_ACTIVE,
  42 + 'email' => $this->email,
  43 + ]);
  44 +
  45 + if (!$user) {
  46 + return false;
  47 + }
  48 +
  49 + if (!User::isPasswordResetTokenValid($user->password_reset_token)) {
  50 + $user->generatePasswordResetToken();
  51 + }
  52 +
  53 + if (!$user->save()) {
  54 + return false;
  55 + }
  56 +
  57 + return Yii::$app
  58 + ->mailer
  59 + ->compose(
  60 + ['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'],
  61 + ['user' => $user]
  62 + )
  63 + ->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name . ' robot'])
  64 + ->setTo($this->email)
  65 + ->setSubject('Password reset for ' . \Yii::$app->name)
  66 + ->send();
  67 + }
  68 +}
frontend/models/ResetPasswordForm.php 0 → 100644
  1 +<?php
  2 +namespace frontend\models;
  3 +
  4 +use common\models\User;
  5 +use yii\base\InvalidParamException;
  6 +use yii\base\Model;
  7 +use Yii;
  8 +
  9 +/**
  10 + * Password reset form
  11 + */
  12 +class ResetPasswordForm extends Model
  13 +{
  14 + public $password;
  15 +
  16 + /**
  17 + * @var \common\models\User
  18 + */
  19 + private $_user;
  20 +
  21 +
  22 + /**
  23 + * Creates a form model given a token.
  24 + *
  25 + * @param string $token
  26 + * @param array $config name-value pairs that will be used to initialize the object properties
  27 + * @throws \yii\base\InvalidParamException if token is empty or not valid
  28 + */
  29 + public function __construct($token, $config = [])
  30 + {
  31 + if (empty($token) || !is_string($token)) {
  32 + throw new InvalidParamException('Password reset token cannot be blank.');
  33 + }
  34 + $this->_user = User::findByPasswordResetToken($token);
  35 + if (!$this->_user) {
  36 + throw new InvalidParamException('Wrong password reset token.');
  37 + }
  38 + parent::__construct($config);
  39 + }
  40 +
  41 + /**
  42 + * @inheritdoc
  43 + */
  44 + public function rules()
  45 + {
  46 + return [
  47 + ['password', 'required'],
  48 + ['password', 'string', 'min' => 6],
  49 + ];
  50 + }
  51 +
  52 + /**
  53 + * Resets password.
  54 + *
  55 + * @return boolean if password was reset.
  56 + */
  57 + public function resetPassword()
  58 + {
  59 + $user = $this->_user;
  60 + $user->setPassword($this->password);
  61 + $user->removePasswordResetToken();
  62 +
  63 + return $user->save(false);
  64 + }
  65 +}
frontend/models/SignupForm.php
@@ -18,9 +18,6 @@ class SignupForm extends Model @@ -18,9 +18,6 @@ class SignupForm extends Model
18 public $surname; 18 public $surname;
19 public $phone; 19 public $phone;
20 20
21 - const SCENARIO_AJAX = 'ajax';  
22 - const SCENARIO_SUBMIT = 'submit';  
23 -  
24 /** 21 /**
25 * @inheritdoc 22 * @inheritdoc
26 */ 23 */
@@ -35,11 +32,11 @@ class SignupForm extends Model @@ -35,11 +32,11 @@ class SignupForm extends Model
35 ['email', 'required'], 32 ['email', 'required'],
36 ['email', 'email'], 33 ['email', 'email'],
37 [['email','phone'], 'string', 'max' => 255], 34 [['email','phone'], 'string', 'max' => 255],
38 - ['email', 'unique', 'targetClass' => '\common\models\Customers', 'message' => Yii::t('app','message',[ 35 + ['email', 'unique', 'targetClass' => '\common\models\Customer', 'message' => Yii::t('app','message',[
39 'field' => 'Email' 36 'field' => 'Email'
40 ])], 37 ])],
41 38
42 - [['phone'], 'unique', 'targetClass' => '\common\models\Customers', 'message' => Yii::t('app','message',[ 39 + [['phone'], 'unique', 'targetClass' => '\common\models\Customer', 'message' => Yii::t('app','message',[
43 'field' => 'Телефон' 40 'field' => 'Телефон'
44 ])], 41 ])],
45 42
@@ -48,43 +45,14 @@ class SignupForm extends Model @@ -48,43 +45,14 @@ class SignupForm extends Model
48 45
49 ['password', 'required'], 46 ['password', 'required'],
50 ['password', 'string', 'min' => 6], 47 ['password', 'string', 'min' => 6],
51 -  
52 - [  
53 - 'verifyCode',  
54 - 'safe',  
55 - 'on'=>[SignupForm::SCENARIO_AJAX]  
56 - ],  
57 - [  
58 - 'verifyCode',  
59 - 'captcha',  
60 - 'on'=>[SignupForm::SCENARIO_SUBMIT]  
61 - ],  
62 - [  
63 - 'verifyCode',  
64 - 'captcha',  
65 - 'on'=>[SignupForm::SCENARIO_DEFAULT]  
66 - ],  
67 -  
68 -  
69 -  
70 ]; 48 ];
71 } 49 }
72 50
73 51
74 /** 52 /**
75 - * @inheritdoc  
76 - */  
77 - public function attributeLabels()  
78 - {  
79 - return [  
80 - 'verifyCode' => 'Verification Code',  
81 - ];  
82 - }  
83 -  
84 - /**  
85 * Signs user up. 53 * Signs user up.
86 * 54 *
87 - * @return Customers|null the saved model or null if saving fails 55 + * @return Customer|null the saved model or null if saving fails
88 */ 56 */
89 public function signup() 57 public function signup()
90 { 58 {
frontend/views/modal/registration_window_model_window.php
1 <?php 1 <?php
2 2
3 use common\models\LoginForm; 3 use common\models\LoginForm;
  4 +use frontend\models\SignupForm;
4 use yii\helpers\Html; 5 use yii\helpers\Html;
5 use yii\helpers\Url; 6 use yii\helpers\Url;
6 use yii\widgets\ActiveForm; 7 use yii\widgets\ActiveForm;
@@ -17,39 +18,33 @@ use yii\widgets\ActiveForm; @@ -17,39 +18,33 @@ use yii\widgets\ActiveForm;
17 18
18 <div class="modal-body"> 19 <div class="modal-body">
19 20
  21 + <?php $form = ActiveForm::begin([
  22 + 'action'=>Url::toRoute('site/signup'),
  23 + ]); ?>
20 24
21 - <form name="RegistrationForm" id="RegistrationFormModal" action="register_user.htm" method="post" >  
22 - <div class="form-group">  
23 - <label for="InputName3">Имя:</label>  
24 - <input name="firstName" class="form-control" id="InputName3" placeholder="" required>  
25 - </div>  
26 - <div class="form-group">  
27 - <label for="phone2">Телефон:</label>  
28 - <input name="phone" class="form-control phone" id="phone2" placeholder="" required>  
29 - </div>  
30 -  
31 - <div class="form-group">  
32 - <label for="InputEmail3">Email:</label>  
33 - <input type="email" name="email" class="form-control" id="InputEmail3" placeholder="" required>  
34 - </div>  
35 - <div class="form-group">  
36 -  
37 - <div class="block-50" style="padding-right: 10px;">  
38 - <label for="InputPassword3">Пароль:</label>  
39 - <input type="password" name="pwd" class="form-control" id="InputPassword3" placeholder="" required>  
40 - </div>  
41 - <div class="block-50">  
42 - <label for="InputRemPassword3">Пароль еще раз:</label>  
43 - <input type="password" name="pwd_a" class="form-control" id="InputRemPassword3" placeholder="" required>  
44 - </div>  
45 - <div class="clearfix"></div>  
46 - </div>  
47 - <input type="hidden" name="verification_keystring" value="[modal]">  
48 -  
49 - <button type="submit" class="btn btn-default btn-large">Создать новый профиль</button>  
50 - <div class="clearfix"></div>  
51 - <p>На ваш email будет отправлено письмо для подтверждения данных.</p>  
52 - </form> 25 + <div class="modal_close_btn"></div>
  26 +
  27 + <div class="title"><?= Yii::t('app', 'registration') ?></div>
  28 +
  29 + <?= $form->field(new SignupForm(), 'email', ['enableAjaxValidation' => true]) ?>
  30 +
  31 + <?= $form->field(new SignupForm(), 'username')->textInput() ?>
  32 +
  33 + <?= $form->field(new SignupForm(), 'surname')->textInput() ?>
  34 +
  35 + <?= $form->field(new SignupForm(), 'phone', ['enableAjaxValidation' => true,
  36 + ])->textInput() ?>
  37 +
  38 +
  39 + <?= $form->field(new SignupForm(), 'password')->passwordInput() ?>
  40 +
  41 + <?= $form->field(new SignupForm(), 'password_repeat')->passwordInput() ?>
  42 +
  43 + <div class="form-group">
  44 + <?= Html::submitButton(Yii::t('app', 'registration'), ['class' => 'my_cust_btn', 'name' => 'signup-button']) ?>
  45 + </div>
  46 +
  47 + <?php ActiveForm::end(); ?>
53 </div> 48 </div>
54 49
55 <div class="modal-footer"> 50 <div class="modal-footer">