Commit 72a992f5e8b37ee1836d3507f3fa1691881988e7

Authored by Yarik
1 parent 18d6bf69

Import browser v1.0

Showing 50 changed files with 942 additions and 1020 deletions   Show diff stats
backend/controllers/BannerController.php
... ... @@ -82,26 +82,21 @@
82 82 public function actionCreate()
83 83 {
84 84 $model = new Banner();
85   - $model_langs = $model->generateLangs();
  85 + $model->generateLangs();
86 86  
87   - if($model->load(Yii::$app->request->post()) && $model->save()) {
88   - $model->loadLangs(\Yii::$app->request, $model_langs);
89   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  87 + if($model->load(Yii::$app->request->post())) {
  88 + $model->loadLangs(\Yii::$app->request);
  89 + if($model->save() && $model->transactionStatus) {
90 90 return $this->redirect([
91 91 'view',
92 92 'id' => $model->banner_id,
93 93 ]);
94   - } else {
95   - return $this->redirect('update', [
96   - 'id' => $model->banner_id,
97   - ]);
98 94 }
99   - } else {
100   - return $this->render('create', [
101   - 'model' => $model,
102   - 'model_langs' => $model_langs,
103   - ]);
104 95 }
  96 + return $this->render('create', [
  97 + 'model' => $model,
  98 + 'model_langs' => $model->model_langs,
  99 + ]);
105 100 }
106 101  
107 102 /**
... ... @@ -115,11 +110,10 @@
115 110 public function actionUpdate($id)
116 111 {
117 112 $model = $this->findModel($id);
118   - $model_langs = $model->generateLangs();
119   -
120   - if($model->load(Yii::$app->request->post()) && $model->save()) {
121   - $model->loadLangs(\Yii::$app->request, $model_langs);
122   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  113 + $model->generateLangs();
  114 + if($model->load(Yii::$app->request->post())) {
  115 + $model->loadLangs(\Yii::$app->request);
  116 + if($model->save() && $model->transactionStatus) {
123 117 return $this->redirect([
124 118 'view',
125 119 'id' => $model->banner_id,
... ... @@ -128,7 +122,7 @@
128 122 }
129 123 return $this->render('update', [
130 124 'model' => $model,
131   - 'model_langs' => $model_langs,
  125 + 'model_langs' => $model->model_langs,
132 126 ]);
133 127 }
134 128  
... ...
backend/controllers/BgController.php
... ... @@ -82,27 +82,21 @@
82 82 public function actionCreate()
83 83 {
84 84 $model = new Bg();
85   - $model_langs = $model->generateLangs();
  85 + $model->generateLangs();
86 86  
87   - if($model->load(Yii::$app->request->post()) && $model->save()) {
88   - $model->loadLangs(\Yii::$app->request, $model_langs);
89   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  87 + if($model->load(Yii::$app->request->post())) {
  88 + $model->loadLangs(\Yii::$app->request);
  89 + if($model->save() && $model->transactionStatus) {
90 90 return $this->redirect([
91 91 'view',
92 92 'id' => $model->id,
93 93 ]);
94   - } else {
95   - return $this->redirect([
96   - 'update',
97   - 'id' => $model->id,
98   - ]);
99 94 }
100   - } else {
101   - return $this->render('create', [
102   - 'model' => $model,
103   - 'model_langs' => $model_langs,
104   - ]);
105 95 }
  96 + return $this->render('create', [
  97 + 'model' => $model,
  98 + 'model_langs' => $model->model_langs,
  99 + ]);
106 100 }
107 101  
108 102 /**
... ... @@ -116,11 +110,11 @@
116 110 public function actionUpdate($id)
117 111 {
118 112 $model = $this->findModel($id);
119   - $model_langs = $model->generateLangs();
  113 + $model->generateLangs();
120 114  
121   - if($model->load(Yii::$app->request->post()) && $model->save()) {
122   - $model->loadLangs(\Yii::$app->request, $model_langs);
123   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  115 + if($model->load(Yii::$app->request->post())) {
  116 + $model->loadLangs(\Yii::$app->request);
  117 + if($model->save() && $model->transactionStatus) {
124 118 return $this->redirect([
125 119 'view',
126 120 'id' => $model->id,
... ... @@ -129,7 +123,7 @@
129 123 }
130 124 return $this->render('update', [
131 125 'model' => $model,
132   - 'model_langs' => $model_langs,
  126 + 'model_langs' => $model->model_langs,
133 127 ]);
134 128 }
135 129  
... ...
backend/controllers/BrandController.php
... ... @@ -92,25 +92,19 @@
92 92 public function actionCreate()
93 93 {
94 94 $model = new Brand();
95   - $model_langs = $model->generateLangs();
  95 + $model->generateLangs();
96 96 if($model->load(Yii::$app->request->post())) {
97   - $model->loadLangs(\Yii::$app->request, $model_langs);
98   - if($model->save()) {
99   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
100   - return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect([
101   - 'view',
102   - 'id' => $model->brand_id,
103   - ]) : $this->redirect(array_merge([ 'create' ], Yii::$app->request->queryParams));
104   - }
105   - } else {
106   - return $this->redirect('update', [
  97 + $model->loadLangs(\Yii::$app->request);
  98 + if($model->save() && $model->transactionStatus) {
  99 + return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect([
  100 + 'view',
107 101 'id' => $model->brand_id,
108   - ]);
  102 + ]) : $this->redirect(array_merge([ 'create' ], Yii::$app->request->queryParams));
109 103 }
110 104 }
111 105 return $this->render('create', [
112 106 'model' => $model,
113   - 'model_langs' => $model_langs,
  107 + 'model_langs' => $model->model_langs,
114 108 ]);
115 109 }
116 110  
... ... @@ -125,22 +119,20 @@
125 119 public function actionUpdate($id)
126 120 {
127 121 $model = $this->findModel($id);
128   - $model_langs = $model->generateLangs();
  122 + $model->generateLangs();
129 123  
130 124 if($model->load(Yii::$app->request->post())) {
131   - $model->loadLangs(\Yii::$app->request, $model_langs);
132   - if($model->save()) {
133   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
134   - return $this->redirect([
135   - 'view',
136   - 'id' => $model->brand_id,
137   - ]);
138   - }
  125 + $model->loadLangs(\Yii::$app->request);
  126 + if($model->save() && $model->transactionStatus) {
  127 + return $this->redirect([
  128 + 'view',
  129 + 'id' => $model->brand_id,
  130 + ]);
139 131 }
140 132 }
141 133 return $this->render('update', [
142 134 'model' => $model,
143   - 'model_langs' => $model_langs,
  135 + 'model_langs' => $model->model_langs,
144 136 ]);
145 137 }
146 138  
... ...
backend/controllers/CategoryController.php
... ... @@ -10,7 +10,6 @@
10 10 use yii\web\Controller;
11 11 use yii\web\NotFoundHttpException;
12 12 use yii\filters\VerbFilter;
13   - use yii\web\UploadedFile;
14 13  
15 14 /**
16 15 * CategoryController implements the CRUD actions for Category model.
... ... @@ -84,32 +83,22 @@
84 83 public function actionCreate()
85 84 {
86 85 $model = new Category();
87   - $model_langs = $model->generateLangs();
88   -
  86 + $model->generateLangs();
89 87 if($model->load(Yii::$app->request->post())) {
90   - $model->loadLangs(\Yii::$app->request, $model_langs);
91   -
92   - if($model->save()) {
93   -
94   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
95   - return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect([
96   - 'view',
97   - 'id' => $model->category_id,
98   - ]) : $this->redirect(array_merge([ 'create' ], Yii::$app->request->queryParams));
99   - } else {
100   - return $this->redirect('update', [
101   - 'id' => $model->category_id,
102   - ]);
103   - }
  88 + $model->loadLangs(\Yii::$app->request);
  89 + if($model->save() && $model->transactionStatus) {
  90 + return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect([
  91 + 'view',
  92 + 'id' => $model->category_id,
  93 + ]) : $this->redirect(array_merge([ 'create' ], Yii::$app->request->queryParams));
104 94 }
105   -
106 95 }
107 96 if(!empty( Yii::$app->request->queryParams[ 'parent' ] )) {
108 97 $model->parent_id = Yii::$app->request->queryParams[ 'parent' ];
109 98 }
110 99 return $this->render('create', [
111 100 'model' => $model,
112   - 'model_langs' => $model_langs,
  101 + 'model_langs' => $model->model_langs,
113 102 'categories' => ArtboxTreeHelper::treeMap(Category::find()
114 103 ->getTree(), 'category_id', 'category_id', '.'),
115 104 ]);
... ... @@ -126,23 +115,19 @@
126 115 public function actionUpdate($id)
127 116 {
128 117 $model = $this->findModel($id);
129   -
130   - $model_langs = $model->generateLangs();
131   -
  118 + $model->generateLangs();
132 119 if($model->load(Yii::$app->request->post())) {
133   - $model->loadLangs(\Yii::$app->request, $model_langs);
134   - if($model->save()) {
135   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
136   - return $this->redirect([
137   - 'view',
138   - 'id' => $model->category_id,
139   - ]);
140   - }
  120 + $model->loadLangs(\Yii::$app->request);
  121 + if($model->save() && $model->transactionStatus) {
  122 + return $this->redirect([
  123 + 'view',
  124 + 'id' => $model->category_id,
  125 + ]);
141 126 }
142 127 }
143 128 return $this->render('update', [
144 129 'model' => $model,
145   - 'model_langs' => $model_langs,
  130 + 'model_langs' => $model->model_langs,
146 131 'categories' => ArtboxTreeHelper::treeMap(Category::find()
147 132 ->getTree(), 'category_id', 'category_id', '.'),
148 133 ]);
... ...
backend/controllers/EventController.php
... ... @@ -82,29 +82,22 @@
82 82 public function actionCreate()
83 83 {
84 84 $model = new Event();
85   - $model_langs = $model->generateLangs();
  85 + $model->generateLangs();
86 86  
87 87 if($model->load(Yii::$app->request->post())) {
88 88  
89   - $model->loadLangs(\Yii::$app->request, $model_langs);
  89 + $model->loadLangs(\Yii::$app->request);
90 90  
91   - if($model->save()) {
92   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
93   - return $this->redirect([
94   - 'view',
95   - 'id' => $model->event_id,
96   - ]);
97   - } else {
98   - return $this->redirect([
99   - 'update',
100   - 'id' => $model->event_id,
101   - ]);
102   - }
  91 + if($model->save() && $model->transactionStatus) {
  92 + return $this->redirect([
  93 + 'view',
  94 + 'id' => $model->event_id,
  95 + ]);
103 96 }
104 97 }
105 98 return $this->render('create', [
106 99 'model' => $model,
107   - 'model_langs' => $model_langs,
  100 + 'model_langs' => $model->model_langs,
108 101 ]);
109 102 }
110 103  
... ... @@ -119,24 +112,22 @@
119 112 public function actionUpdate($id)
120 113 {
121 114 $model = $this->findModel($id);
122   - $model_langs = $model->generateLangs();
  115 + $model->generateLangs();
123 116  
124 117 if($model->load(Yii::$app->request->post())) {
125 118  
126   - $model->loadLangs(\Yii::$app->request, $model_langs);
  119 + $model->loadLangs(\Yii::$app->request);
127 120  
128   - if($model->save()) {
129   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
130   - return $this->redirect([
131   - 'view',
132   - 'id' => $model->event_id,
133   - ]);
134   - }
  121 + if($model->save() && $model->transactionStatus) {
  122 + return $this->redirect([
  123 + 'view',
  124 + 'id' => $model->event_id,
  125 + ]);
135 126 }
136 127 }
137 128 return $this->render('update', [
138 129 'model' => $model,
139   - 'model_langs' => $model_langs,
  130 + 'model_langs' => $model->model_langs,
140 131 ]);
141 132 }
142 133  
... ...
backend/controllers/PageController.php
... ... @@ -82,26 +82,20 @@
82 82 public function actionCreate()
83 83 {
84 84 $model = new Page();
85   - $model_langs = $model->generateLangs();
86   - if($model->load(Yii::$app->request->post()) && $model->save()) {
87   - $model->loadLangs(\Yii::$app->request, $model_langs);
88   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  85 + $model->generateLangs();
  86 + if($model->load(Yii::$app->request->post())) {
  87 + $model->loadLangs(\Yii::$app->request);
  88 + if($model->save() && $model->transactionStatus) {
89 89 return $this->redirect([
90 90 'view',
91 91 'id' => $model->id,
92 92 ]);
93   - } else {
94   - return $this->redirect([
95   - 'update',
96   - 'id' => $model->id,
97   - ]);
98 93 }
99   - } else {
100   - return $this->render('create', [
101   - 'model' => $model,
102   - 'model_langs' => $model_langs,
103   - ]);
104 94 }
  95 + return $this->render('create', [
  96 + 'model' => $model,
  97 + 'model_langs' => $model->model_langs,
  98 + ]);
105 99 }
106 100  
107 101 /**
... ... @@ -115,11 +109,11 @@
115 109 public function actionUpdate($id)
116 110 {
117 111 $model = $this->findModel($id);
118   - $model_langs = $model->generateLangs();
  112 + $model->generateLangs();
119 113  
120   - if($model->load(Yii::$app->request->post()) && $model->save()) {
121   - $model->loadLangs(\Yii::$app->request, $model_langs);
122   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  114 + if($model->load(Yii::$app->request->post())) {
  115 + $model->loadLangs(\Yii::$app->request);
  116 + if($model->save() && $model->transactionStatus) {
123 117 return $this->redirect([
124 118 'view',
125 119 'id' => $model->id,
... ... @@ -128,7 +122,7 @@
128 122 }
129 123 return $this->render('update', [
130 124 'model' => $model,
131   - 'model_langs' => $model_langs,
  125 + 'model_langs' => $model->model_langs,
132 126 ]);
133 127 }
134 128  
... ...
backend/controllers/ProjectController.php
... ... @@ -89,11 +89,11 @@
89 89 public function actionCreate()
90 90 {
91 91 $model = new Project();
92   - $model_langs = $model->generateLangs();
  92 + $model->generateLangs();
93 93 if($model->load(Yii::$app->request->post())) {
94   - $model->loadLangs(\Yii::$app->request, $model_langs);
  94 + $model->loadLangs(\Yii::$app->request);
95 95 $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
96   - if($model->save()) {
  96 + if($model->save() && $model->transactionStatus) {
97 97 if($model->imagesUpload && ( ( $images = $model->imagesUpload() ) !== false )) {
98 98 foreach($images as $image) {
99 99 $imageModel = new ProjectImage();
... ... @@ -102,22 +102,15 @@
102 102 $imageModel->save();
103 103 }
104 104 }
105   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
106   - return $this->redirect([
107   - 'view',
108   - 'id' => $model->project_id,
109   - ]);
110   - } else {
111   - return $this->redirect([
112   - 'update',
113   - 'id' => $model->project_id,
114   - ]);
115   - }
  105 + return $this->redirect([
  106 + 'view',
  107 + 'id' => $model->project_id,
  108 + ]);
116 109 }
117 110 }
118 111 return $this->render('create', [
119 112 'model' => $model,
120   - 'model_langs' => $model_langs,
  113 + 'model_langs' => $model->model_langs,
121 114 ]);
122 115 }
123 116  
... ... @@ -132,11 +125,11 @@
132 125 public function actionUpdate($id)
133 126 {
134 127 $model = $this->findModel($id);
135   - $model_langs = $model->generateLangs();
  128 + $model->generateLangs();
136 129 if($model->load(Yii::$app->request->post())) {
137   - $model->loadLangs(\Yii::$app->request, $model_langs);
  130 + $model->loadLangs(\Yii::$app->request);
138 131 $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
139   - if($model->save()) {
  132 + if($model->save() && $model->transactionStatus) {
140 133 if($model->imagesUpload && ( ( $images = $model->imagesUpload() ) !== false )) {
141 134 foreach($images as $image) {
142 135 $imageModel = new ProjectImage();
... ... @@ -145,17 +138,15 @@
145 138 $imageModel->save();
146 139 }
147 140 }
148   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
149   - return $this->redirect([
150   - 'view',
151   - 'id' => $model->project_id,
152   - ]);
153   - }
  141 + return $this->redirect([
  142 + 'view',
  143 + 'id' => $model->project_id,
  144 + ]);
154 145 }
155 146 }
156 147 return $this->render('update', [
157 148 'model' => $model,
158   - 'model_langs' => $model_langs,
  149 + 'model_langs' => $model->model_langs,
159 150 ]);
160 151 }
161 152  
... ...
backend/controllers/SeoCategoryController.php
... ... @@ -80,27 +80,21 @@
80 80 public function actionCreate()
81 81 {
82 82 $model = new SeoCategory();
83   - $model_langs = $model->generateLangs();
  83 + $model->generateLangs();
84 84  
85   - if($model->load(Yii::$app->request->post()) && $model->save()) {
86   - $model->loadLangs(\Yii::$app->request, $model_langs);
87   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  85 + if($model->load(Yii::$app->request->post())) {
  86 + $model->loadLangs(\Yii::$app->request);
  87 + if($model->save() && $model->transactionStatus) {
88 88 return $this->redirect([
89 89 'view',
90 90 'id' => $model->seo_category_id,
91 91 ]);
92   - } else {
93   - return $this->redirect([
94   - 'update',
95   - 'id' => $model->seo_category_id,
96   - ]);
97 92 }
98   - } else {
99   - return $this->render('create', [
100   - 'model' => $model,
101   - 'model_langs' => $model_langs,
102   - ]);
103 93 }
  94 + return $this->render('create', [
  95 + 'model' => $model,
  96 + 'model_langs' => $model->model_langs,
  97 + ]);
104 98 }
105 99  
106 100 /**
... ... @@ -114,10 +108,10 @@
114 108 public function actionUpdate($id)
115 109 {
116 110 $model = $this->findModel($id);
117   - $model_langs = $model->generateLangs();
118   - if($model->load(Yii::$app->request->post()) && $model->save()) {
119   - $model->loadLangs(\Yii::$app->request, $model_langs);
120   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  111 + $model->generateLangs();
  112 + if($model->load(Yii::$app->request->post())) {
  113 + $model->loadLangs(\Yii::$app->request);
  114 + if($model->save() && $model->transactionStatus) {
121 115 return $this->redirect([
122 116 'view',
123 117 'id' => $model->seo_category_id,
... ... @@ -126,7 +120,7 @@
126 120 }
127 121 return $this->render('update', [
128 122 'model' => $model,
129   - 'model_langs' => $model_langs,
  123 + 'model_langs' => $model->model_langs,
130 124 ]);
131 125 }
132 126  
... ...
backend/controllers/SeoController.php
... ... @@ -80,27 +80,21 @@
80 80 public function actionCreate()
81 81 {
82 82 $model = new Seo();
83   - $model_langs = $model->generateLangs();
  83 + $model->generateLangs();
84 84  
85   - if($model->load(Yii::$app->request->post()) && $model->save()) {
86   - $model->loadLangs(\Yii::$app->request, $model_langs);
87   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  85 + if($model->load(Yii::$app->request->post())) {
  86 + $model->loadLangs(\Yii::$app->request);
  87 + if($model->save() && $model->transactionStatus) {
88 88 return $this->redirect([
89 89 'view',
90 90 'id' => $model->seo_id,
91 91 ]);
92   - } else {
93   - return $this->redirect([
94   - 'update',
95   - 'id' => $model->seo_id,
96   - ]);
97 92 }
98   - } else {
99   - return $this->render('create', [
100   - 'model' => $model,
101   - 'model_langs' => $model_langs,
102   - ]);
103 93 }
  94 + return $this->render('create', [
  95 + 'model' => $model,
  96 + 'model_langs' => $model->model_langs,
  97 + ]);
104 98 }
105 99  
106 100 /**
... ... @@ -114,10 +108,10 @@
114 108 public function actionUpdate($id)
115 109 {
116 110 $model = $this->findModel($id);
117   - $model_langs = $model->generateLangs();
118   - if($model->load(Yii::$app->request->post()) && $model->save()) {
119   - $model->loadLangs(\Yii::$app->request, $model_langs);
120   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  111 + $model->generateLangs();
  112 + if($model->load(Yii::$app->request->post())) {
  113 + $model->loadLangs(\Yii::$app->request);
  114 + if($model->save() && $model->transactionStatus) {
121 115 return $this->redirect([
122 116 'view',
123 117 'id' => $model->seo_id,
... ... @@ -126,7 +120,7 @@
126 120 }
127 121 return $this->render('update', [
128 122 'model' => $model,
129   - 'model_langs' => $model_langs,
  123 + 'model_langs' => $model->model_langs,
130 124 ]);
131 125 }
132 126  
... ...
backend/controllers/SeoDynamicController.php
... ... @@ -82,31 +82,22 @@
82 82 public function actionCreate($seo_category_id)
83 83 {
84 84 $model = new SeoDynamic();
85   - $model_langs = $model->generateLangs();
86   -
  85 + $model->generateLangs();
87 86 if($model->load(Yii::$app->request->post())) {
88   - $model->loadLangs(\Yii::$app->request, $model_langs);
  87 + $model->loadLangs(\Yii::$app->request);
89 88 $model->seo_category_id = $seo_category_id;
90   - $model->save();
91   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  89 + if($model->save() && $model->transactionStatus) {
92 90 return $this->redirect([
93 91 'index',
94 92 'seo_category_id' => $model->seo_category_id,
95 93 ]);
96   - } else {
97   - return $this->redirect([
98   - 'update',
99   - 'seo_category_id' => $model->seo_category_id,
100   - 'id' => $model->seo_dynamic_id,
101   - ]);
102 94 }
103   - } else {
104   - return $this->render('create', [
105   - 'model' => $model,
106   - 'model_langs' => $model_langs,
107   - 'seo_category_id' => $seo_category_id,
108   - ]);
109 95 }
  96 + return $this->render('create', [
  97 + 'model' => $model,
  98 + 'model_langs' => $model->model_langs,
  99 + 'seo_category_id' => $seo_category_id,
  100 + ]);
110 101 }
111 102  
112 103 /**
... ... @@ -121,9 +112,9 @@
121 112 {
122 113 $model = $this->findModel($id);
123 114 $model_langs = $model->generateLangs();
124   - if($model->load(Yii::$app->request->post()) && $model->save()) {
125   - $model->loadLangs(\Yii::$app->request, $model_langs);
126   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  115 + if($model->load(Yii::$app->request->post())) {
  116 + $model->loadLangs(\Yii::$app->request);
  117 + if($model->save() && $model->transactionStatus) {
127 118 return $this->redirect([
128 119 'index',
129 120 'seo_category_id' => $model->seo_category_id,
... ...
backend/controllers/ServiceController.php
... ... @@ -82,27 +82,20 @@
82 82 public function actionCreate()
83 83 {
84 84 $model = new Service();
85   - $model_langs = $model->generateLangs();
86   -
87   - if($model->load(Yii::$app->request->post()) && $model->save()) {
88   - $model->loadLangs(\Yii::$app->request, $model_langs);
89   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  85 + $model->generateLangs();
  86 + if($model->load(Yii::$app->request->post())) {
  87 + $model->loadLangs(\Yii::$app->request);
  88 + if($model->save() && $model->transactionStatus) {
90 89 return $this->redirect([
91 90 'view',
92 91 'id' => $model->service_id,
93 92 ]);
94   - } else {
95   - return $this->redirect([
96   - 'update',
97   - 'id' => $model->service_id,
98   - ]);
99 93 }
100   - } else {
101   - return $this->render('create', [
102   - 'model' => $model,
103   - 'model_langs' => $model_langs,
104   - ]);
105 94 }
  95 + return $this->render('create', [
  96 + 'model' => $model,
  97 + 'model_langs' => $model->model_langs,
  98 + ]);
106 99 }
107 100  
108 101 /**
... ... @@ -116,11 +109,11 @@
116 109 public function actionUpdate($id)
117 110 {
118 111 $model = $this->findModel($id);
119   - $model_langs = $model->generateLangs();
  112 + $model->generateLangs();
120 113  
121   - if($model->load(Yii::$app->request->post()) && $model->save()) {
122   - $model->loadLangs(\Yii::$app->request, $model_langs);
123   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  114 + if($model->load(Yii::$app->request->post())) {
  115 + $model->loadLangs(\Yii::$app->request);
  116 + if($model->save() && $model->transactionStatus) {
124 117 return $this->redirect([
125 118 'view',
126 119 'id' => $model->service_id,
... ... @@ -128,8 +121,8 @@
128 121 }
129 122 }
130 123 return $this->render('update', [
131   - 'model' => $model,
132   - 'model_langs' => $model_langs,
  124 + 'model' => $model,
  125 + 'model_langs' => $model->model_langs,
133 126 ]);
134 127 }
135 128  
... ...
backend/models/Label.php
... ... @@ -16,6 +16,8 @@ use yii\web\Request;
16 16 * @property OrdersLabelLang $object_lang
17 17 * @property string $ownerKey
18 18 * @property string $langKey
  19 + * @property OrdersLabelLang[] $model_langs
  20 + * @property bool $transactionStatus
19 21 * @method string getOwnerKey()
20 22 * @method void setOwnerKey(string $value)
21 23 * @method string getLangKey()
... ... @@ -23,12 +25,13 @@ use yii\web\Request;
23 25 * @method ActiveQuery getLangs()
24 26 * @method ActiveQuery getLang( integer $language_id )
25 27 * @method OrdersLabelLang[] generateLangs()
26   - * @method void loadLangs(Request $request, ActiveRecord[] $model_langs)
27   - * @method bool linkLangs(ActiveRecord[] $model_langs)
28   - * @method bool saveLangs(ActiveRecord[] $model_langs)
29   - * * End language behavior *
  28 + * @method void loadLangs(Request $request)
  29 + * @method bool linkLangs()
  30 + * @method bool saveLangs()
  31 + * @method bool getTransactionStatus()
  32 + * * End language behavior
30 33 */
31   -class Label extends \yii\db\ActiveRecord
  34 +class Label extends ActiveRecord
32 35 {
33 36  
34 37 public static function tableName()
... ...
common/behaviors/Slug.php
... ... @@ -12,7 +12,7 @@
12 12  
13 13 public $in_attribute = 'name';
14 14  
15   - public $out_attribute = 'slug';
  15 + public $out_attribute = 'alias';
16 16  
17 17 public $translit = true;
18 18  
... ... @@ -66,18 +66,24 @@
66 66  
67 67 private function checkUniqueSlug($slug)
68 68 {
69   - $pk = $this->owner->primaryKey();
70   - $pk = $pk[ 0 ];
71   -
72   - $condition = $this->out_attribute . ' = :out_attribute';
73   - $params = [ ':out_attribute' => $slug ];
74   - if(!$this->owner->isNewRecord) {
75   - $condition .= ' and ' . $pk . ' != :pk';
76   - $params[ ':pk' ] = $this->owner->{$pk};
  69 + /**
  70 + * @var ActiveRecord $owner
  71 + */
  72 + $owner = $this->owner;
  73 + $query = $owner->find()->where([
  74 + $this->out_attribute => $slug,
  75 + ]);
  76 + if(!$owner->isNewRecord) {
  77 + $pks = $owner->primaryKey();
  78 + if(!empty($pks)) {
  79 + $pk_rules = ['and'];
  80 + foreach($pks as $pk) {
  81 + $pk_rules[] = [$pk => $owner->$pk];
  82 + }
  83 + $query->andWhere(['not', $pk_rules]);
  84 + }
77 85 }
78   - return !$this->owner->find()
79   - ->where($condition, $params)
80   - ->one();
  86 + return !$query->exists();
81 87 }
82 88  
83 89 }
84 90 \ No newline at end of file
... ...
common/models/Banner.php
1 1 <?php
2   -
3   -namespace common\models;
4   -
5   -use common\modules\language\behaviors\LanguageBehavior;
6   -use Yii;
7   -use yii\db\ActiveQuery;
8   -use yii\db\ActiveRecord;
9   -use yii\web\Request;
10   -
11   -/**
12   - * This is the model class for table "banner".
13   - *
14   - * @property integer $banner_id
15   - * @property string $url
16   - * @property integer $status
17   - * * From language behavior *
18   - * @property BannerLang $lang
19   - * @property BannerLang[] $langs
20   - * @property BannerLang $object_lang
21   - * @property string $ownerKey
22   - * @property string $langKey
23   - * @method string getOwnerKey()
24   - * @method void setOwnerKey(string $value)
25   - * @method string getLangKey()
26   - * @method void setLangKey(string $value)
27   - * @method ActiveQuery getLangs()
28   - * @method ActiveQuery getLang( integer $language_id )
29   - * @method BannerLang[] generateLangs()
30   - * @method void loadLangs(Request $request, ActiveRecord[] $model_langs)
31   - * @method bool linkLangs(ActiveRecord[] $model_langs)
32   - * @method bool saveLangs(ActiveRecord[] $model_langs)
33   - * * End language behavior *
34   - */
35   -class Banner extends \yii\db\ActiveRecord
36   -{
37   - /**
38   - * @inheritdoc
39   - */
40   - public static function tableName()
41   - {
42   - return 'banner';
43   - }
44 2  
45   - public function behaviors()
46   - {
47   - return [
48   - 'language' => [
49   - 'class' => LanguageBehavior::className(),
50   - ],
51   - ];
52   - }
  3 + namespace common\models;
  4 +
  5 + use common\modules\language\behaviors\LanguageBehavior;
  6 + use Yii;
  7 + use yii\db\ActiveQuery;
  8 + use yii\web\Request;
53 9  
54 10 /**
55   - * @inheritdoc
56   - */
57   - public function rules()
58   - {
59   - return [
60   - [['status'], 'integer'],
61   - [['url'], 'string', 'max' => 255],
62   - ];
63   - }
64   -
65   - /**
66   - * @inheritdoc
  11 + * This is the model class for table "banner".
  12 + * @property integer $banner_id
  13 + * @property string $url
  14 + * @property integer $status
  15 + * * From language behavior *
  16 + * @property BannerLang $lang
  17 + * @property BannerLang[] $langs
  18 + * @property BannerLang $object_lang
  19 + * @property string $ownerKey
  20 + * @property string $langKey
  21 + * @property BannerLang[] $model_langs
  22 + * @property bool $transactionStatus
  23 + * @method string getOwnerKey()
  24 + * @method void setOwnerKey( string $value )
  25 + * @method string getLangKey()
  26 + * @method void setLangKey( string $value )
  27 + * @method ActiveQuery getLangs()
  28 + * @method ActiveQuery getLang( integer $language_id )
  29 + * @method BannerLang[] generateLangs()
  30 + * @method void loadLangs( Request $request )
  31 + * @method bool linkLangs()
  32 + * @method bool saveLangs()
  33 + * @method bool getTransactionStatus()
  34 + * * End language behavior *
67 35 */
68   - public function attributeLabels()
  36 + class Banner extends \yii\db\ActiveRecord
69 37 {
70   - return [
71   - 'banner_id' => Yii::t('app', 'banner_id'),
72   - 'url' => Yii::t('app', 'url'),
73   - 'status' => Yii::t('app', 'status'),
74   - ];
  38 +
  39 + /**
  40 + * @inheritdoc
  41 + */
  42 + public static function tableName()
  43 + {
  44 + return 'banner';
  45 + }
  46 +
  47 + public function behaviors()
  48 + {
  49 + return [
  50 + 'language' => [
  51 + 'class' => LanguageBehavior::className(),
  52 + ],
  53 + ];
  54 + }
  55 +
  56 + /**
  57 + * @inheritdoc
  58 + */
  59 + public function rules()
  60 + {
  61 + return [
  62 + [
  63 + [ 'status' ],
  64 + 'integer',
  65 + ],
  66 + [
  67 + [ 'url' ],
  68 + 'string',
  69 + 'max' => 255,
  70 + ],
  71 + ];
  72 + }
  73 +
  74 + /**
  75 + * @inheritdoc
  76 + */
  77 + public function attributeLabels()
  78 + {
  79 + return [
  80 + 'banner_id' => Yii::t('app', 'banner_id'),
  81 + 'url' => Yii::t('app', 'url'),
  82 + 'status' => Yii::t('app', 'status'),
  83 + ];
  84 + }
75 85 }
76   -}
... ...
common/models/Bg.php
... ... @@ -10,12 +10,16 @@
10 10  
11 11 /**
12 12 * Class Bg
  13 + * @property int $id
  14 + * @todo Write docs
13 15 * * From language behavior *
14 16 * @property BgLang $lang
15 17 * @property BgLang[] $langs
16 18 * @property BgLang $object_lang
17 19 * @property string $ownerKey
18 20 * @property string $langKey
  21 + * @property BgLang[] $model_langs
  22 + * @property bool $transactionStatus
19 23 * @method string getOwnerKey()
20 24 * @method void setOwnerKey( string $value )
21 25 * @method string getLangKey()
... ... @@ -23,12 +27,13 @@
23 27 * @method ActiveQuery getLangs()
24 28 * @method ActiveQuery getLang( integer $language_id )
25 29 * @method BgLang[] generateLangs()
26   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
27   - * @method bool linkLangs( ActiveRecord[] $model_langs )
28   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  30 + * @method void loadLangs( Request $request )
  31 + * @method bool linkLangs()
  32 + * @method bool saveLangs()
  33 + * @method bool getTransactionStatus()
29 34 * * End language behavior *
30 35 */
31   - class Bg extends \yii\db\ActiveRecord
  36 + class Bg extends ActiveRecord
32 37 {
33 38  
34 39 public static function tableName()
... ...
common/models/Delivery.php
... ... @@ -10,24 +10,27 @@
10 10 /**
11 11 * Class Delivery
12 12 * * From language behavior *
13   - * @property OrdersDeliveryLang $lang
14   - * @property OrdersDeliveryLang[] $langs
15   - * @property OrdersDeliveryLang $object_lang
16   - * @property string $ownerKey
17   - * @property string $langKey
  13 + * @property OrdersDeliveryLang $lang
  14 + * @property OrdersDeliveryLang[] $langs
  15 + * @property OrdersDeliveryLang $object_lang
  16 + * @property string $ownerKey
  17 + * @property string $langKey
  18 + * @property OrdersDeliveryLang[] $model_langs
  19 + * @property bool $transactionStatus
18 20 * @method string getOwnerKey()
19   - * @method void setOwnerKey( string $value )
  21 + * @method void setOwnerKey(string $value)
20 22 * @method string getLangKey()
21   - * @method void setLangKey( string $value )
  23 + * @method void setLangKey(string $value)
22 24 * @method ActiveQuery getLangs()
23 25 * @method ActiveQuery getLang( integer $language_id )
24 26 * @method OrdersDeliveryLang[] generateLangs()
25   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
26   - * @method bool linkLangs( ActiveRecord[] $model_langs )
27   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  27 + * @method void loadLangs(Request $request)
  28 + * @method bool linkLangs()
  29 + * @method bool saveLangs()
  30 + * @method bool getTransactionStatus()
28 31 * * End language behavior *
29 32 */
30   - class Delivery extends \yii\db\ActiveRecord
  33 + class Delivery extends ActiveRecord
31 34 {
32 35  
33 36 public function behaviors()
... ...
common/models/Event.php
1 1 <?php
2   -
3   -namespace common\models;
4   -
5   -use common\behaviors\SaveImgBehavior;
6   -use common\modules\language\behaviors\LanguageBehavior;
7   -use Yii;
8   -use yii\behaviors\TimestampBehavior;
9   -use yii\db\ActiveQuery;
10   -use yii\db\ActiveRecord;
11   -use yii\web\Request;
12   -
13   -/**
14   - * This is the model class for table "event".
15   - *
16   - * @property integer $event_id
17   - * @property string $image
18   - * @property integer $created_at
19   - * @property integer $updated_at
20   - * @property integer $end_at
21   - *
22   - * *From language behavior *
23   - * @property EventLang $lang
24   - * @property EventLang[] $langs
25   - * @property EventLang $object_lang
26   - * @property string $ownerKey
27   - * @property string $langKey
28   - * @method string getOwnerKey()
29   - * @method void setOwnerKey(string $value)
30   - * @method string getLangKey()
31   - * @method void setLangKey(string $value)
32   - * @method ActiveQuery getLangs()
33   - * @method ActiveQuery getLang( integer $language_id )
34   - * @method EventLang[] generateLangs()
35   - * @method void loadLangs(Request $request, ActiveRecord[] $model_langs)
36   - * @method bool linkLangs(ActiveRecord[] $model_langs)
37   - * @method bool saveLangs(ActiveRecord[] $model_langs)
38   - * * End language behavior *
39   - */
40   -class Event extends \yii\db\ActiveRecord
41   -{
  2 +
  3 + namespace common\models;
  4 +
  5 + use common\behaviors\SaveImgBehavior;
  6 + use common\modules\language\behaviors\LanguageBehavior;
  7 + use Yii;
  8 + use yii\behaviors\TimestampBehavior;
  9 + use yii\db\ActiveQuery;
  10 + use yii\db\ActiveRecord;
  11 + use yii\web\Request;
  12 +
42 13 /**
43   - * @inheritdoc
  14 + * This is the model class for table "event".
  15 + * @property integer $event_id
  16 + * @property string $image
  17 + * @property integer $created_at
  18 + * @property integer $updated_at
  19 + * @property integer $end_at
  20 + * * From language behavior *
  21 + * @property EventLang $lang
  22 + * @property EventLang[] $langs
  23 + * @property EventLang $object_lang
  24 + * @property string $ownerKey
  25 + * @property string $langKey
  26 + * @property EventLang[] $model_langs
  27 + * @property bool $transactionStatus
  28 + * @method string getOwnerKey()
  29 + * @method void setOwnerKey( string $value )
  30 + * @method string getLangKey()
  31 + * @method void setLangKey( string $value )
  32 + * @method ActiveQuery getLangs()
  33 + * @method ActiveQuery getLang( integer $language_id )
  34 + * @method EventLang[] generateLangs()
  35 + * @method void loadLangs( Request $request )
  36 + * @method bool linkLangs()
  37 + * @method bool saveLangs()
  38 + * @method bool getTransactionStatus()
  39 + * * End language behavior *
44 40 */
45   - public static function tableName()
  41 + class Event extends ActiveRecord
46 42 {
47   - return 'event';
48   - }
49   -
50   - /**
51   - * @inheritdoc
52   - */
53   - public function behaviors()
54   - {
55   - return [
56   - TimestampBehavior::className(),
57   - [
58   - 'class' => 'common\behaviors\ShowImage',
59   - ],
60   - 'language' => [
61   - 'class' => LanguageBehavior::className(),
62   - ],
63   - [
64   - 'class' => SaveImgBehavior::className(),
65   - 'fields' => [
  43 +
  44 + /**
  45 + * @inheritdoc
  46 + */
  47 + public static function tableName()
  48 + {
  49 + return 'event';
  50 + }
  51 +
  52 + /**
  53 + * @inheritdoc
  54 + */
  55 + public function behaviors()
  56 + {
  57 + return [
  58 + TimestampBehavior::className(),
  59 + [
  60 + 'class' => 'common\behaviors\ShowImage',
  61 + ],
  62 + 'language' => [
  63 + 'class' => LanguageBehavior::className(),
  64 + ],
  65 + [
  66 + 'class' => SaveImgBehavior::className(),
  67 + 'fields' => [
  68 + [
  69 + 'name' => 'image',
  70 + 'directory' => 'event',
  71 + ],
  72 + ],
  73 + ],
  74 + ];
  75 + }
  76 +
  77 + public function beforeSave($insert)
  78 + {
  79 + if(parent::beforeSave($insert)) {
  80 + $this->end_at = strtotime($this->end_at);
  81 + return true;
  82 + } else {
  83 + return false;
  84 + }
  85 + }
  86 +
  87 + public function afterFind()
  88 + {
  89 + $this->end_at = date("Y-m-d", $this->end_at);
  90 + }
  91 +
  92 + /**
  93 + * @inheritdoc
  94 + */
  95 + public function rules()
  96 + {
  97 + return [
  98 + [
66 99 [
67   - 'name' => 'image',
68   - 'directory' => 'event',
  100 + 'created_at',
  101 + 'updated_at',
69 102 ],
  103 + 'integer',
70 104 ],
71   - ],
72   - ];
73   - }
74   -
75   -
76   - public function beforeSave($insert)
77   - {
78   - if (parent::beforeSave($insert)) {
79   - $this->end_at = strtotime($this->end_at);
80   - return true;
81   - } else {
82   - return false;
  105 + [
  106 + [ 'end_at' ],
  107 + 'string',
  108 + 'max' => 255,
  109 + ],
  110 + ];
  111 + }
  112 +
  113 + /**
  114 + * @inheritdoc
  115 + */
  116 + public function attributeLabels()
  117 + {
  118 + return [
  119 + 'event_id' => Yii::t('app', 'event_id'),
  120 + 'image' => Yii::t('app', 'image'),
  121 + 'created_at' => Yii::t('app', 'created_at'),
  122 + 'updated_at' => Yii::t('app', 'updated_at'),
  123 + 'end_at' => Yii::t('app', 'end_at'),
  124 + ];
83 125 }
84 126 }
85   -
86   - public function afterFind(){
87   - $this->end_at = date("Y-m-d", $this->end_at);
88   - }
89   -
90   -
91   - /**
92   - * @inheritdoc
93   - */
94   - public function rules()
95   - {
96   - return [
97   - [['created_at', 'updated_at' ], 'integer'],
98   - [['end_at'], 'string', 'max' => 255],
99   - ];
100   - }
101   -
102   - /**
103   - * @inheritdoc
104   - */
105   - public function attributeLabels()
106   - {
107   - return [
108   - 'event_id' => Yii::t('app', 'event_id'),
109   - 'image' => Yii::t('app', 'image'),
110   - 'created_at' => Yii::t('app', 'created_at'),
111   - 'updated_at' => Yii::t('app', 'updated_at'),
112   - 'end_at' => Yii::t('app', 'end_at'),
113   - ];
114   - }
115   -}
... ...
common/models/Page.php
... ... @@ -17,6 +17,8 @@
17 17 * @property PageLang $object_lang
18 18 * @property string $ownerKey
19 19 * @property string $langKey
  20 + * @property PageLang[] $model_langs
  21 + * @property bool $transactionStatus
20 22 * @method string getOwnerKey()
21 23 * @method void setOwnerKey( string $value )
22 24 * @method string getLangKey()
... ... @@ -24,9 +26,10 @@
24 26 * @method ActiveQuery getLangs()
25 27 * @method ActiveQuery getLang( integer $language_id )
26 28 * @method PageLang[] generateLangs()
27   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
28   - * @method bool linkLangs( ActiveRecord[] $model_langs )
29   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  29 + * @method void loadLangs( Request $request )
  30 + * @method bool linkLangs()
  31 + * @method bool saveLangs()
  32 + * @method bool getTransactionStatus()
30 33 * * End language behavior *
31 34 */
32 35 class Page extends ActiveRecord
... ...
common/models/ProductSpec.php
... ... @@ -11,31 +11,33 @@
11 11  
12 12 /**
13 13 * This is the model class for table "product_spec".
14   - * @property integer $product_spec_id
15   - * @property integer $product_id
16   - * @property string $tech_spec_link
17   - * @property string $tech_char_link
18   - * @property Product $product
19   - *
  14 + * @property integer $product_spec_id
  15 + * @property integer $product_id
  16 + * @property string $tech_spec_link
  17 + * @property string $tech_char_link
  18 + * @property Product $product
20 19 * * From language behavior *
21   - * @property ProductSpecLang $lang
22   - * @property ProductSpecLang[] $langs
23   - * @property ProductSpecLang $object_lang
24   - * @property string $ownerKey
25   - * @property string $langKey
  20 + * @property ProductSpecLang $lang
  21 + * @property ProductSpecLang[] $langs
  22 + * @property ProductSpecLang $object_lang
  23 + * @property string $ownerKey
  24 + * @property string $langKey
  25 + * @property ProductSpecLang[] $model_langs
  26 + * @property bool $transactionStatus
26 27 * @method string getOwnerKey()
27   - * @method void setOwnerKey(string $value)
  28 + * @method void setOwnerKey( string $value )
28 29 * @method string getLangKey()
29   - * @method void setLangKey(string $value)
  30 + * @method void setLangKey( string $value )
30 31 * @method ActiveQuery getLangs()
31 32 * @method ActiveQuery getLang( integer $language_id )
32 33 * @method ProductSpecLang[] generateLangs()
33   - * @method void loadLangs(Request $request, ActiveRecord[] $model_langs)
34   - * @method bool linkLangs(ActiveRecord[] $model_langs)
35   - * @method bool saveLangs(ActiveRecord[] $model_langs)
  34 + * @method void loadLangs( Request $request )
  35 + * @method bool linkLangs()
  36 + * @method bool saveLangs()
  37 + * @method bool getTransactionStatus()
36 38 * * End language behavior *
37 39 */
38   - class ProductSpec extends \yii\db\ActiveRecord
  40 + class ProductSpec extends ActiveRecord
39 41 {
40 42  
41 43 /**
... ... @@ -64,7 +66,7 @@
64 66 ],
65 67 ];
66 68 }
67   -
  69 +
68 70 /**
69 71 * @inheritdoc
70 72 */
... ... @@ -100,19 +102,19 @@
100 102 public function upload()
101 103 {
102 104 $storage = \Yii::getAlias('@storage');
103   - $product_dir = $storage.'/product_spec/'.$this->product_id;
  105 + $product_dir = $storage . '/product_spec/' . $this->product_id;
104 106 if(!is_dir($product_dir)) {
105 107 mkdir($product_dir);
106 108 }
107 109 if($this->validate()) {
108   - if(!empty($this->techSpecFile)) {
109   - $path = $product_dir.'/'.$this->techSpecFile->baseName.'.'.$this->techSpecFile->extension;
110   - $this->tech_spec_link = $this->techSpecFile->baseName.'.'.$this->techSpecFile->extension;
  110 + if(!empty( $this->techSpecFile )) {
  111 + $path = $product_dir . '/' . $this->techSpecFile->baseName . '.' . $this->techSpecFile->extension;
  112 + $this->tech_spec_link = $this->techSpecFile->baseName . '.' . $this->techSpecFile->extension;
111 113 $this->techSpecFile->saveAs($path);
112 114 }
113   - if(!empty($this->techCharFile)) {
114   - $path = $product_dir.'/'.$this->techCharFile->baseName.'.'.$this->techCharFile->extension;
115   - $this->tech_char_link = $this->techCharFile->baseName.'.'.$this->techCharFile->extension;
  115 + if(!empty( $this->techCharFile )) {
  116 + $path = $product_dir . '/' . $this->techCharFile->baseName . '.' . $this->techCharFile->extension;
  117 + $this->tech_char_link = $this->techCharFile->baseName . '.' . $this->techCharFile->extension;
116 118 $this->techCharFile->saveAs($path);
117 119 }
118 120 return true;
... ... @@ -129,17 +131,19 @@
129 131 return $this->hasOne(Product::className(), [ 'product_id' => 'product_id' ]);
130 132 }
131 133  
132   - public function getTechSpecUrl() {
133   - if(!empty($this->tech_spec_link)) {
134   - return '/storage/product_spec/'.$this->product_id.'/'.$this->tech_spec_link;
  134 + public function getTechSpecUrl()
  135 + {
  136 + if(!empty( $this->tech_spec_link )) {
  137 + return '/storage/product_spec/' . $this->product_id . '/' . $this->tech_spec_link;
135 138 } else {
136 139 return false;
137 140 }
138 141 }
139   -
140   - public function getTechCharUrl() {
141   - if(!empty($this->tech_char_link)) {
142   - return '/storage/product_spec/'.$this->product_id.'/'.$this->tech_char_link;
  142 +
  143 + public function getTechCharUrl()
  144 + {
  145 + if(!empty( $this->tech_char_link )) {
  146 + return '/storage/product_spec/' . $this->product_id . '/' . $this->tech_char_link;
143 147 } else {
144 148 return false;
145 149 }
... ...
common/models/Project.php
... ... @@ -10,6 +10,9 @@
10 10  
11 11 /**
12 12 * This is the model class for table "project".
  13 + *
  14 + * @todo Refactor
  15 + *
13 16 * @property integer $project_id
14 17 * @property integer $date_add
15 18 * @property ProjectImage[] $images
... ... @@ -23,6 +26,8 @@
23 26 * @property ProjectLang $object_lang
24 27 * @property string $ownerKey
25 28 * @property string $langKey
  29 + * @property ProjectLang[] $model_langs
  30 + * @property bool $transactionStatus
26 31 * @method string getOwnerKey()
27 32 * @method void setOwnerKey( string $value )
28 33 * @method string getLangKey()
... ... @@ -30,12 +35,13 @@
30 35 * @method ActiveQuery getLangs()
31 36 * @method ActiveQuery getLang( integer $language_id )
32 37 * @method ProjectLang[] generateLangs()
33   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
34   - * @method bool linkLangs( ActiveRecord[] $model_langs )
35   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  38 + * @method void loadLangs( Request $request )
  39 + * @method bool linkLangs()
  40 + * @method bool saveLangs()
  41 + * @method bool getTransactionStatus()
36 42 * * End language behavior *
37 43 */
38   - class Project extends \yii\db\ActiveRecord
  44 + class Project extends ActiveRecord
39 45 {
40 46  
41 47 public $imagesUpload = [];
... ...
common/models/Seo.php
1 1 <?php
2   -
3   -namespace common\models;
4   -
5   -use common\modules\language\behaviors\LanguageBehavior;
6   -use Yii;
7   -use yii\db\ActiveQuery;
8   -use yii\db\ActiveRecord;
9   -use yii\web\Request;
10   -
11   -/**
12   - * This is the model class for table "seo".
13   - *
14   - * @property integer $seo_id
15   - * @property string $url
16   - *
17   - * * From language behavior *
18   - * @property SeoLang $lang
19   - * @property SeoLang[] $langs
20   - * @property SeoLang $object_lang
21   - * @property string $ownerKey
22   - * @property string $langKey
23   - * @method string getOwnerKey()
24   - * @method void setOwnerKey(string $value)
25   - * @method string getLangKey()
26   - * @method void setLangKey(string $value)
27   - * @method ActiveQuery getLangs()
28   - * @method ActiveQuery getLang( integer $language_id )
29   - * @method SeoLang[] generateLangs()
30   - * @method void loadLangs(Request $request, ActiveRecord[] $model_langs)
31   - * @method bool linkLangs(ActiveRecord[] $model_langs)
32   - * @method bool saveLangs(ActiveRecord[] $model_langs)
33   - * * End language behavior *
34   - */
35   -class Seo extends \yii\db\ActiveRecord
36   -{
37   - /**
38   - * @inheritdoc
39   - */
40   - public static function tableName()
41   - {
42   - return 'seo';
43   - }
44   -
45   - public function behaviors()
46   - {
47   - return [
48   - 'language' => [
49   - 'class' => LanguageBehavior::className(),
50   - ],
51   - ];
52   - }
  2 +
  3 + namespace common\models;
  4 +
  5 + use common\modules\language\behaviors\LanguageBehavior;
  6 + use Yii;
  7 + use yii\db\ActiveQuery;
  8 + use yii\db\ActiveRecord;
  9 + use yii\web\Request;
53 10  
54 11 /**
55   - * @inheritdoc
56   - */
57   - public function rules()
58   - {
59   - return [
60   - [['url'], 'required'],
61   - [['url'], 'string', 'max' => 255],
62   - ];
63   - }
64   -
65   - /**
66   - * @inheritdoc
  12 + * This is the model class for table "seo".
  13 + * @property integer $seo_id
  14 + * @property string $url
  15 + * * From language behavior *
  16 + * @property SeoLang $lang
  17 + * @property SeoLang[] $langs
  18 + * @property SeoLang $object_lang
  19 + * @property string $ownerKey
  20 + * @property string $langKey
  21 + * @property SeoLang[] $model_langs
  22 + * @property bool $transactionStatus
  23 + * @method string getOwnerKey()
  24 + * @method void setOwnerKey( string $value )
  25 + * @method string getLangKey()
  26 + * @method void setLangKey( string $value )
  27 + * @method ActiveQuery getLangs()
  28 + * @method ActiveQuery getLang( integer $language_id )
  29 + * @method SeoLang[] generateLangs()
  30 + * @method void loadLangs( Request $request )
  31 + * @method bool linkLangs()
  32 + * @method bool saveLangs()
  33 + * @method bool getTransactionStatus()
  34 + * * End language behavior *
67 35 */
68   - public function attributeLabels()
  36 + class Seo extends ActiveRecord
69 37 {
70   - return [
71   - 'seo_id' => Yii::t('app', 'seo_id'),
72   - 'url' => Yii::t('app', 'url'),
73   - ];
  38 +
  39 + /**
  40 + * @inheritdoc
  41 + */
  42 + public static function tableName()
  43 + {
  44 + return 'seo';
  45 + }
  46 +
  47 + public function behaviors()
  48 + {
  49 + return [
  50 + 'language' => [
  51 + 'class' => LanguageBehavior::className(),
  52 + ],
  53 + ];
  54 + }
  55 +
  56 + /**
  57 + * @inheritdoc
  58 + */
  59 + public function rules()
  60 + {
  61 + return [
  62 + [
  63 + [ 'url' ],
  64 + 'required',
  65 + ],
  66 + [
  67 + [ 'url' ],
  68 + 'string',
  69 + 'max' => 255,
  70 + ],
  71 + ];
  72 + }
  73 +
  74 + /**
  75 + * @inheritdoc
  76 + */
  77 + public function attributeLabels()
  78 + {
  79 + return [
  80 + 'seo_id' => Yii::t('app', 'seo_id'),
  81 + 'url' => Yii::t('app', 'url'),
  82 + ];
  83 + }
74 84 }
75   -}
... ...
common/models/SeoCategory.php
1 1 <?php
2   -
3   -namespace common\models;
4   -
5   -use common\modules\language\behaviors\LanguageBehavior;
6   -use Yii;
7   -use yii\db\ActiveQuery;
8   -use yii\db\ActiveRecord;
9   -use yii\web\Request;
10   -
11   -/**
12   - * This is the model class for table "seo_category".
13   - *
14   - * @property integer $seo_category_id
15   - * @property string $controller
16   - * @property integer $status
17   - *
18   - * * From language behavior *
19   - * @property SeoCategoryLang $lang
20   - * @property SeoCategoryLang[] $langs
21   - * @property SeoCategoryLang $object_lang
22   - * @property string $ownerKey
23   - * @property string $langKey
24   - * @method string getOwnerKey()
25   - * @method void setOwnerKey(string $value)
26   - * @method string getLangKey()
27   - * @method void setLangKey(string $value)
28   - * @method ActiveQuery getLangs()
29   - * @method ActiveQuery getLang( integer $language_id )
30   - * @method SeoCategoryLang[] generateLangs()
31   - * @method void loadLangs(Request $request, ActiveRecord[] $model_langs)
32   - * @method bool linkLangs(ActiveRecord[] $model_langs)
33   - * @method bool saveLangs(ActiveRecord[] $model_langs)
34   - * * End language behavior *
35   - *
36   - * @property SeoDynamic[] $seoDynamics
37   - */
38   -class SeoCategory extends \yii\db\ActiveRecord
39   -{
40   - /**
41   - * @inheritdoc
42   - */
43   - public static function tableName()
44   - {
45   - return 'seo_category';
46   - }
47 2  
48   - public function behaviors()
49   - {
50   - return [
51   - 'language' => [
52   - 'class' => LanguageBehavior::className(),
53   - ],
54   - ];
55   - }
  3 + namespace common\models;
  4 +
  5 + use common\modules\language\behaviors\LanguageBehavior;
  6 + use Yii;
  7 + use yii\db\ActiveQuery;
  8 + use yii\db\ActiveRecord;
  9 + use yii\web\Request;
56 10  
57 11 /**
58   - * @inheritdoc
59   - */
60   - public function rules()
61   - {
62   - return [
63   - [['status'], 'integer'],
64   - [['controller'], 'string', 'max' => 100],
65   - ];
66   - }
67   -
68   - /**
69   - * @inheritdoc
70   - */
71   - public function attributeLabels()
72   - {
73   - return [
74   - 'seo_category_id' => Yii::t('app', 'seo_category_id'),
75   - 'controller' => Yii::t('app', 'controller'),
76   - 'status' => Yii::t('app', 'status'),
77   - ];
78   - }
79   -
80   - /**
81   - * @return \yii\db\ActiveQuery
  12 + * This is the model class for table "seo_category".
  13 + * @property integer $seo_category_id
  14 + * @property string $controller
  15 + * @property integer $status
  16 + * * From language behavior *
  17 + * @property SeoCategoryLang $lang
  18 + * @property SeoCategoryLang[] $langs
  19 + * @property SeoCategoryLang $object_lang
  20 + * @property string $ownerKey
  21 + * @property string $langKey
  22 + * @property SeoCategoryLang[] $model_langs
  23 + * @property bool $transactionStatus
  24 + * @method string getOwnerKey()
  25 + * @method void setOwnerKey( string $value )
  26 + * @method string getLangKey()
  27 + * @method void setLangKey( string $value )
  28 + * @method ActiveQuery getLangs()
  29 + * @method ActiveQuery getLang( integer $language_id )
  30 + * @method SeoCategoryLang[] generateLangs()
  31 + * @method void loadLangs( Request $request )
  32 + * @method bool linkLangs()
  33 + * @method bool saveLangs()
  34 + * @method bool getTransactionStatus()
  35 + * * End language behavior *
  36 + * @property SeoDynamic[] $seoDynamics
82 37 */
83   - public function getSeoDynamics()
  38 + class SeoCategory extends ActiveRecord
84 39 {
85   - return $this->hasMany(SeoDynamic::className(), ['seo_category_id' => 'seo_category_id']);
  40 +
  41 + /**
  42 + * @inheritdoc
  43 + */
  44 + public static function tableName()
  45 + {
  46 + return 'seo_category';
  47 + }
  48 +
  49 + public function behaviors()
  50 + {
  51 + return [
  52 + 'language' => [
  53 + 'class' => LanguageBehavior::className(),
  54 + ],
  55 + ];
  56 + }
  57 +
  58 + /**
  59 + * @inheritdoc
  60 + */
  61 + public function rules()
  62 + {
  63 + return [
  64 + [
  65 + [ 'status' ],
  66 + 'integer',
  67 + ],
  68 + [
  69 + [ 'controller' ],
  70 + 'string',
  71 + 'max' => 100,
  72 + ],
  73 + ];
  74 + }
  75 +
  76 + /**
  77 + * @inheritdoc
  78 + */
  79 + public function attributeLabels()
  80 + {
  81 + return [
  82 + 'seo_category_id' => Yii::t('app', 'seo_category_id'),
  83 + 'controller' => Yii::t('app', 'controller'),
  84 + 'status' => Yii::t('app', 'status'),
  85 + ];
  86 + }
  87 +
  88 + /**
  89 + * @return \yii\db\ActiveQuery
  90 + */
  91 + public function getSeoDynamics()
  92 + {
  93 + return $this->hasMany(SeoDynamic::className(), [ 'seo_category_id' => 'seo_category_id' ]);
  94 + }
86 95 }
87   -}
... ...
common/models/SeoDynamic.php
... ... @@ -22,6 +22,8 @@
22 22 * @property SeoDynamicLang $object_lang
23 23 * @property string $ownerKey
24 24 * @property string $langKey
  25 + * @property SeoDynamicLang[] $model_langs
  26 + * @property bool $transactionStatus
25 27 * @method string getOwnerKey()
26 28 * @method void setOwnerKey( string $value )
27 29 * @method string getLangKey()
... ... @@ -29,13 +31,14 @@
29 31 * @method ActiveQuery getLangs()
30 32 * @method ActiveQuery getLang( integer $language_id )
31 33 * @method SeoDynamicLang[] generateLangs()
32   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
33   - * @method bool linkLangs( ActiveRecord[] $model_langs )
34   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  34 + * @method void loadLangs( Request $request )
  35 + * @method bool linkLangs()
  36 + * @method bool saveLangs()
  37 + * @method bool getTransactionStatus()
35 38 * * End language behavior *
36 39 * @property SeoCategory $seoCategory
37 40 */
38   - class SeoDynamic extends \yii\db\ActiveRecord
  41 + class SeoDynamic extends ActiveRecord
39 42 {
40 43  
41 44 /**
... ...
common/models/Service.php
... ... @@ -22,6 +22,8 @@
22 22 * @property ServiceLang $object_lang
23 23 * @property string $ownerKey
24 24 * @property string $langKey
  25 + * @property ServiceLang[] $model_langs
  26 + * @property bool $transactionStatus
25 27 * @method string getOwnerKey()
26 28 * @method void setOwnerKey( string $value )
27 29 * @method string getLangKey()
... ... @@ -29,12 +31,13 @@
29 31 * @method ActiveQuery getLangs()
30 32 * @method ActiveQuery getLang( integer $language_id )
31 33 * @method ServiceLang[] generateLangs()
32   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
33   - * @method bool linkLangs( ActiveRecord[] $model_langs )
34   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  34 + * @method void loadLangs( Request $request )
  35 + * @method bool linkLangs()
  36 + * @method bool saveLangs()
  37 + * @method bool getTransactionStatus()
35 38 * * End language behavior *
36 39 */
37   - class Service extends \yii\db\ActiveRecord
  40 + class Service extends ActiveRecord
38 41 {
39 42  
40 43 /**
... ...
common/models/SliderImage.php
... ... @@ -25,6 +25,8 @@
25 25 * @property SliderImageLang $object_lang
26 26 * @property string $ownerKey
27 27 * @property string $langKey
  28 + * @property SliderImageLang[] $model_langs
  29 + * @property bool $transactionStatus
28 30 * @method string getOwnerKey()
29 31 * @method void setOwnerKey( string $value )
30 32 * @method string getLangKey()
... ... @@ -32,17 +34,13 @@
32 34 * @method ActiveQuery getLangs()
33 35 * @method ActiveQuery getLang( integer $language_id )
34 36 * @method SliderImageLang[] generateLangs()
35   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
36   - * @method bool linkLangs( ActiveRecord[] $model_langs )
37   - * @method bool saveLangs( ActiveRecord[] $model_langs )
38   - * * End language behavior *
39   - * * From transaction behavior *
40   - * @property SliderImageLang[] $model_langs
41   - * @property bool $transactionStatus
  37 + * @method void loadLangs( Request $request )
  38 + * @method bool linkLangs()
  39 + * @method bool saveLangs()
42 40 * @method bool getTransactionStatus()
43   - * * End transaction behavior *
  41 + * * End language behavior *
44 42 */
45   - class SliderImage extends \yii\db\ActiveRecord
  43 + class SliderImage extends ActiveRecord
46 44 {
47 45  
48 46 /**
... ...
common/modules/language/behaviors/LanguageBehavior.php
... ... @@ -2,7 +2,6 @@
2 2 namespace common\modules\language\behaviors;
3 3  
4 4 use common\modules\language\models\Language;
5   - use common\modules\product\models\Product;
6 5 use yii\base\Behavior;
7 6 use yii\base\InvalidConfigException;
8 7 use yii\db\ActiveQuery;
... ... @@ -252,6 +251,9 @@
252 251 $owner = $this->owner;
253 252 $db = $owner::getDb();
254 253 $this->_transaction = $db->beginTransaction();
  254 + if($owner->hasAttribute('remote_id') && empty($owner->remote_id)) {
  255 + $owner->remote_id = strval(microtime(true)*10000);
  256 + }
255 257 }
256 258  
257 259 public function afterSave($event)
... ... @@ -272,9 +274,6 @@
272 274 $this->_transaction->commit();
273 275 $this->_transaction_status = true;
274 276 }
275   - if($owner->hasAttribute('remote_id') && empty($owner->remote_id)) {
276   - $owner->remote_id = (int) $owner->primaryKey();
277   - }
278 277 }
279 278  
280 279 /**
... ...
common/modules/language/readme.txt
... ... @@ -66,9 +66,9 @@ public function behaviors() {
66 66 * @method ActiveQuery getLangs()
67 67 * @method ActiveQuery getLang( integer $language_id )
68 68 * @method {TableLang}[] generateLangs()
69   - * @method void loadLangs(Request $request, ActiveRecord[] $model_langs)
70   - * @method bool linkLangs(ActiveRecord[] $model_langs)
71   - * @method bool saveLangs(ActiveRecord[] $model_langs)
  69 + * @method void loadLangs(Request $request)
  70 + * @method bool linkLangs()
  71 + * @method bool saveLangs()
72 72 * @method bool getTransactionStatus()
73 73 * * End language behavior *
74 74 3.2. ะฃะฑั€ะฐั‚ัŒ language behavior ั ะฝะฐัะปะตะดัƒะตะผั‹ั… ั‚ะฐะฑะปะธั† ะพั‚ {Table} ({TableSearch}...)
... ...
common/modules/product/controllers/ManageController.php
... ... @@ -101,7 +101,7 @@
101 101 $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
102 102 $model->certificateUpload = UploadedFile::getInstances($model, 'certificateUpload');
103 103  
104   - if($model->save()) {
  104 + if($model->save() && $model->transactionStatus) {
105 105  
106 106 if(!empty( $model->imagesUpload ) && ( ( $images = $model->imagesUpload() ) !== false )) {
107 107 foreach($images as $image) {
... ... @@ -127,30 +127,14 @@
127 127 $product_spec->product_id = $model->product_id;
128 128 $product_spec->techSpecFile = UploadedFile::getInstance($product_spec, 'techSpecFile');
129 129 $product_spec->techCharFile = UploadedFile::getInstance($product_spec, 'techCharFile');
130   - if($product_spec->upload() && $model->linkLangs() && $model->saveLangs()) {
131   - $product_spec->save(false);
132   - if($product_spec->linkLangs() && $product_spec->saveLangs()) {
  130 + if($product_spec->upload()) {
  131 + if($product_spec->save(false) && $product_spec->transactionStatus) {
133 132 return $this->redirect([
134 133 'view',
135 134 'id' => $model->product_id,
136 135 ]);
137   - } else {
138   - return $this->redirect([
139   - 'update',
140   - 'id' => $model->product_id,
141   - ]);
142 136 }
143 137 }
144   - } elseif($model->linkLangs() && $model->saveLangs()) {
145   - return $this->redirect([
146   - 'view',
147   - 'id' => $model->product_id,
148   - ]);
149   - } else {
150   - return $this->redirect([
151   - 'update',
152   - 'id' => $model->product_id,
153   - ]);
154 138 }
155 139 }
156 140 }
... ... @@ -173,7 +157,7 @@
173 157 public function actionUpdate($id)
174 158 {
175 159 $model = $this->findModel($id);
176   - $model_langs = $model->generateLangs();
  160 + $model->generateLangs();
177 161 if(!empty( $model->productSpec )) {
178 162 $product_spec = $model->productSpec;
179 163 } else {
... ... @@ -181,12 +165,12 @@
181 165 'product_id' => $model->product_id,
182 166 ]);
183 167 }
184   - $product_spec_langs = $product_spec->generateLangs();
  168 + $product_spec->generateLangs();
185 169 if($model->load(Yii::$app->request->post())) {
186   - $model->loadLangs(\Yii::$app->request, $model_langs);
  170 + $model->loadLangs(\Yii::$app->request);
187 171 $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
188 172 $model->certificateUpload = UploadedFile::getInstances($model, 'certificateUpload');
189   - if($model->save()) {
  173 + if($model->save() && $model->transactionStatus) {
190 174 if(!empty( $model->imagesUpload ) && ( ( $images = $model->imagesUpload() ) !== false )) {
191 175 foreach($images as $image) {
192 176 $imageModel = new ProductImage();
... ... @@ -195,7 +179,6 @@
195 179 $imageModel->save();
196 180 }
197 181 }
198   -
199 182 if(!empty( $model->certificateUpload ) && ( ( $certificates = $model->certificateUpload() ) !== false )) {
200 183 foreach($certificates as $certificate) {
201 184 $certificateModel = new ProductCertificate([
... ... @@ -205,35 +188,28 @@
205 188 $certificateModel->save(false);
206 189 }
207 190 }
208   -
209 191 if($product_spec->load(Yii::$app->request->post())) {
210   - $product_spec->loadLangs(\Yii::$app->request, $product_spec_langs);
  192 + $product_spec->loadLangs(\Yii::$app->request);
211 193 $product_spec->techSpecFile = UploadedFile::getInstance($product_spec, 'techSpecFile');
212 194 $product_spec->techCharFile = UploadedFile::getInstance($product_spec, 'techCharFile');
213   - if($product_spec->upload() && $model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
214   - $product_spec->save(false);
215   - if($product_spec->linkLangs($product_spec_langs) && $product_spec->saveLangs($product_spec_langs)) {
  195 + if($product_spec->upload()) {
  196 + if($product_spec->save(false) && $product_spec->transactionStatus) {
216 197 return $this->redirect([
217 198 'view',
218 199 'id' => $model->product_id,
219 200 ]);
220 201 }
221 202 }
222   - } elseif($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
223   - return $this->redirect([
224   - 'view',
225   - 'id' => $model->product_id,
226   - ]);
227 203 }
228 204 }
229 205 }
230 206 $groups = $model->getTaxGroupsByLevel(0);
231 207 return $this->render('update', [
232 208 'model' => $model,
233   - 'model_langs' => $model_langs,
  209 + 'model_langs' => $model->model_langs,
234 210 'groups' => $groups,
235 211 'product_spec' => $product_spec,
236   - 'product_spec_langs' => $product_spec_langs,
  212 + 'product_spec_langs' => $product_spec->model_langs,
237 213 ]);
238 214 }
239 215  
... ...
common/modules/product/controllers/ProductUnitController.php
... ... @@ -67,27 +67,20 @@
67 67 public function actionCreate()
68 68 {
69 69 $model = new ProductUnit();
70   - $model_langs = $model->generateLangs();
71   -
72   - if($model->load(Yii::$app->request->post()) && $model->save()) {
73   - $model->loadLangs(\Yii::$app->request, $model_langs);
74   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  70 + $model->generateLangs();
  71 + if($model->load(Yii::$app->request->post())) {
  72 + $model->loadLangs(\Yii::$app->request);
  73 + if($model->save() && $model->transactionStatus) {
75 74 return $this->redirect([
76 75 'view',
77 76 'id' => $model->product_unit_id,
78 77 ]);
79   - } else {
80   - return $this->redirect([
81   - 'update',
82   - 'id' => $model->product_unit_id,
83   - ]);
84 78 }
85   - } else {
86   - return $this->render('create', [
87   - 'model' => $model,
88   - 'model_langs' => $model_langs,
89   - ]);
90 79 }
  80 + return $this->render('create', [
  81 + 'model' => $model,
  82 + 'model_langs' => $model->model_langs,
  83 + ]);
91 84 }
92 85  
93 86 /**
... ... @@ -101,11 +94,10 @@
101 94 public function actionUpdate($id)
102 95 {
103 96 $model = $this->findModel($id);
104   - $model_langs = $model->generateLangs();
105   -
106   - if($model->load(Yii::$app->request->post()) && $model->save()) {
107   - $model->loadLangs(\Yii::$app->request, $model_langs);
108   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  97 + $model->generateLangs();
  98 + if($model->load(Yii::$app->request->post())) {
  99 + $model->loadLangs(\Yii::$app->request);
  100 + if($model->save() && $model->transactionStatus) {
109 101 return $this->redirect([
110 102 'view',
111 103 'id' => $model->product_unit_id,
... ... @@ -114,7 +106,7 @@
114 106 }
115 107 return $this->render('update', [
116 108 'model' => $model,
117   - 'model_langs' => $model_langs,
  109 + 'model_langs' => $model->model_langs,
118 110 ]);
119 111 }
120 112  
... ...
common/modules/product/controllers/VariantController.php
... ... @@ -80,19 +80,15 @@
80 80 {
81 81 $model = new ProductVariant();
82 82 $model->product_id = $product_id;
83   - $model_langs = $model->generateLangs();
  83 + $model->generateLangs();
84 84 if($model->load(Yii::$app->request->post())) {
85   - $model->loadLangs(\Yii::$app->request, $model_langs);
  85 + $model->loadLangs(\Yii::$app->request);
86 86 $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
87   - $model->validate();
88   -
89   - if($model->save()) {
90   -
  87 + if($model->save() && $model->transactionStatus) {
91 88 if(( $image = UploadedFile::getInstance($model, 'image') )) {
92 89 $imageModel = ProductImage::find()
93 90 ->where([ 'product_variant_id' => $model->product_variant_id ])
94 91 ->one();
95   -
96 92 if($imageModel instanceof ProductImage) {
97 93 $imageModel->product_id = $model->product_id;
98 94 $imageModel->product_variant_id = $model->product_variant_id;
... ... @@ -105,20 +101,14 @@
105 101 $imageModel->image = $image->name;
106 102 $imageModel->save();
107 103 }
108   -
109 104 $imgDir = Yii::getAlias('@storage/products/');
110   -
111 105 if(!is_dir($imgDir)) {
112 106 mkdir($imgDir, 0755, true);
113 107 }
114   -
115 108 $image->saveAs(Yii::getAlias('@storage/products/' . $image->name));
116 109 }
117   -
118 110 $ProductStocks = Yii::$app->request->post('ProductStock');
119   -
120 111 $total_quantity = 0;
121   -
122 112 if(!empty( $ProductStocks ) && is_array($ProductStocks)) {
123 113 $model->unlinkAll('stocks', true);
124 114 $sorted_array = [];
... ... @@ -164,26 +154,18 @@
164 154 }
165 155  
166 156 $model->stock = $total_quantity;
167   - $model->save();
168   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  157 + if($model->save() && $model->transactionStatus) {
169 158 return $this->redirect([
170 159 'index',
171 160 'product_id' => $product_id,
172 161 ]);
173   - } else {
174   - return $this->redirect([
175   - 'update',
176   - 'product_id' => $product_id,
177   - 'id' => $model->product_variant_id,
178   - ]);
179 162 }
180 163 }
181 164 }
182 165 $groups = $model->getTaxGroupsByLevel(1);
183   -
184 166 return $this->render('create', [
185 167 'model' => $model,
186   - 'model_langs' => $model_langs,
  168 + 'model_langs' => $model->model_langs,
187 169 'groups' => $groups,
188 170 'stocks' => [ new ProductStock() ],
189 171 ]);
... ... @@ -201,16 +183,14 @@
201 183 public function actionUpdate($product_id, $id)
202 184 {
203 185 $model = $this->findModel($id);
204   - $model_langs = $model->generateLangs();
  186 + $model->generateLangs();
205 187 if($model->load(Yii::$app->request->post())) {
206   - $model->loadLangs(\Yii::$app->request, $model_langs);
207   - if($model->save()) {
208   -
  188 + $model->loadLangs(\Yii::$app->request);
  189 + if($model->save() && $model->transactionStatus) {
209 190 if(( $image = UploadedFile::getInstance($model, 'image') )) {
210 191 $imageModel = ProductImage::find()
211 192 ->where([ 'product_variant_id' => $model->product_variant_id ])
212 193 ->one();
213   -
214 194 if($imageModel instanceof ProductImage) {
215 195 $imageModel->product_id = $model->product_id;
216 196 $imageModel->product_variant_id = $model->product_variant_id;
... ... @@ -223,20 +203,14 @@
223 203 $imageModel->image = $image->name;
224 204 $imageModel->save();
225 205 }
226   -
227 206 $imgDir = Yii::getAlias('@storage/products/');
228   -
229 207 if(!is_dir($imgDir)) {
230 208 mkdir($imgDir, 0755, true);
231 209 }
232   -
233 210 $image->saveAs(Yii::getAlias('@storage/products/' . $image->name));
234 211 }
235   -
236 212 $ProductStocks = Yii::$app->request->post('ProductStock');
237   -
238 213 $total_quantity = 0;
239   -
240 214 if(!empty( $ProductStocks ) && is_array($ProductStocks)) {
241 215 $model->unlinkAll('stocks', true);
242 216 $sorted_array = [];
... ... @@ -280,9 +254,8 @@
280 254 } else {
281 255 $model->unlinkAll('stocks', true);
282 256 }
283   -
284 257 $model->stock = $total_quantity;
285   - if($model->save() && $model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  258 + if($model->save() && $model->transactionStatus) {
286 259 return $this->redirect([
287 260 'index',
288 261 'product_id' => $product_id,
... ... @@ -291,20 +264,19 @@
291 264 }
292 265 }
293 266 $groups = $model->getTaxGroupsByLevel(1);
294   -
295 267 return $this->render('update', [
296 268 'model' => $model,
297   - 'model_langs' => $model_langs,
  269 + 'model_langs' => $model->model_langs,
298 270 'groups' => $groups,
299 271 'stocks' => ( !empty( $model->variantStocks ) ) ? $model->variantStocks : [ new ProductStock ],
300 272 ]);
301   -
302 273 }
303 274  
304 275 /**
305 276 * Deletes an existing ProductVariant model.
306 277 * If deletion is successful, the browser will be redirected to the 'index' page.
307 278 *
  279 + * @param integer $product_id
308 280 * @param integer $id
309 281 *
310 282 * @return mixed
... ...
common/modules/product/helpers/ProductHelper.php
... ... @@ -20,7 +20,7 @@
20 20 public static function getCategories()
21 21 {
22 22 return Category::find()
23   - ->getTree();
  23 + ->getTree(null, 'lang');
24 24 }
25 25  
26 26 public static function getBrands()
... ...
common/modules/product/models/Brand.php
... ... @@ -21,6 +21,8 @@
21 21 * @property BrandLang $object_lang
22 22 * @property string $ownerKey
23 23 * @property string $langKey
  24 + * @property BrandLang[] $model_langs
  25 + * @property bool $transactionStatus
24 26 * @method string getOwnerKey()
25 27 * @method void setOwnerKey( string $value )
26 28 * @method string getLangKey()
... ... @@ -28,12 +30,13 @@
28 30 * @method ActiveQuery getLangs()
29 31 * @method ActiveQuery getLang( integer $language_id )
30 32 * @method BrandLang[] generateLangs()
31   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
32   - * @method bool linkLangs( ActiveRecord[] $model_langs )
33   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  33 + * @method void loadLangs( Request $request )
  34 + * @method bool linkLangs()
  35 + * @method bool saveLangs()
  36 + * @method bool getTransactionStatus()
34 37 * * End language behavior *
35 38 */
36   - class Brand extends \yii\db\ActiveRecord
  39 + class Brand extends ActiveRecord
37 40 {
38 41  
39 42 public $_items_count = 0;
... ... @@ -83,8 +86,8 @@
83 86 public function attributeLabels()
84 87 {
85 88 return [
86   - 'brand_id' => Yii::t('product', 'Brand ID'),
87   - 'image' => Yii::t('product', 'Image'),
  89 + 'brand_id' => Yii::t('product', 'Brand ID'),
  90 + 'image' => Yii::t('product', 'Image'),
88 91 ];
89 92 }
90 93  
... ...
common/modules/product/models/Category.php
... ... @@ -4,7 +4,6 @@
4 4  
5 5 use common\behaviors\SaveImgBehavior;
6 6 use common\components\artboxtree\ArtboxTreeBehavior;
7   - use common\components\artboxtree\ArtboxTreeHelper;
8 7 use common\modules\language\behaviors\LanguageBehavior;
9 8 use common\modules\rubrication\models\TaxGroup;
10 9 use Yii;
... ... @@ -16,7 +15,7 @@
16 15 /**
17 16 * This is the model class for table "category".
18 17 * @property integer $category_id
19   - * @property string $remote_id
  18 + * @property integer $remote_id
20 19 * @property integer $parent_id
21 20 * @property string $path
22 21 * @property integer $depth
... ... @@ -28,6 +27,8 @@
28 27 * @property CategoryLang $object_lang
29 28 * @property string $ownerKey
30 29 * @property string $langKey
  30 + * @property CategoryLang[] $model_langs
  31 + * @property bool $transactionStatus
31 32 * @method string getOwnerKey()
32 33 * @method void setOwnerKey( string $value )
33 34 * @method string getLangKey()
... ... @@ -35,15 +36,16 @@
35 36 * @method ActiveQuery getLangs()
36 37 * @method ActiveQuery getLang( integer $language_id )
37 38 * @method CategoryLang[] generateLangs()
38   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
39   - * @method bool linkLangs( ActiveRecord[] $model_langs )
40   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  39 + * @method void loadLangs( Request $request )
  40 + * @method bool linkLangs()
  41 + * @method bool saveLangs()
  42 + * @method bool getTransactionStatus()
41 43 * * End language behavior *
42 44 * @property Product[] $products
43 45 * @property ProductUnit $productUnit
44 46 * @property ProductCategory[] $productCategories
45 47 */
46   - class Category extends \yii\db\ActiveRecord
  48 + class Category extends ActiveRecord
47 49 {
48 50  
49 51 public function behaviors()
... ... @@ -160,18 +162,6 @@
160 162 ->andWhere([ 'level' => $level ]);
161 163 }
162 164  
163   - public function getRemote_category()
164   - {
165   - return ArtboxTreeHelper::getArrayField($this->remote_id);
166   - }
167   -
168   - public function setRemote_category($value)
169   - {
170   - if(!empty( $value ) && is_array($value)) {
171   - $this->remote_id = ArtboxTreeHelper::setArrayField($value, false);
172   - }
173   - }
174   -
175 165 public function beforeSave($insert)
176 166 {
177 167 if(parent::beforeSave($insert)) {
... ... @@ -227,14 +217,14 @@
227 217 0,
228 218 ]);
229 219 $query3 = ( new Query() )->select([
230   - 'tax_option.*',
231   - 'tax_group.*',
232   - 'tax_option.alias as option_alias',
233   - 'tax_group.alias as group_alias',
234   - 'tax_option.value as value',
235   - 'tax_option.sort AS tax_option_sort',
236   - 'tax_group.sort AS tax_group_sort',
237   - ])
  220 + 'tax_option.*',
  221 + 'tax_group.*',
  222 + 'tax_option.alias as option_alias',
  223 + 'tax_group.alias as group_alias',
  224 + 'tax_option.value as value',
  225 + 'tax_option.sort AS tax_option_sort',
  226 + 'tax_group.sort AS tax_group_sort',
  227 + ])
238 228 ->from([ 'tax_option' ])
239 229 ->where([ 'tax_option.tax_option_id' => $query1->union($query2) ])
240 230 ->innerJoin('tax_group', 'tax_group.tax_group_id = tax_option.tax_group_id')
... ... @@ -257,12 +247,19 @@
257 247 )
258 248 )
259 249 AND tax_group.is_menu = TRUE AND tax_group_to_category.category_id = :category_id', [
260   - ':category_id' => $this->category_id,
261   -
262   - ]);
  250 + ':category_id' => $this->category_id,
  251 +
  252 + ]);
263 253 return $command->queryAll();
264 254 }
265 255  
  256 + /**
  257 + * @todo Write doc
  258 + *
  259 + * @param $value
  260 + *
  261 + * @return mixed
  262 + */
266 263 public function setTaxGroup($value)
267 264 {
268 265 return $this->tax_group = $value;
... ...
common/modules/product/models/CategoryLang.php
... ... @@ -57,7 +57,7 @@ class CategoryLang extends \yii\db\ActiveRecord
57 57 {
58 58 return [
59 59 [['name'], 'required'],
60   - [['seo_text'], 'string'],
  60 + [['seo_text', 'alias'], 'string'],
61 61 [['name', 'meta_title', 'meta_robots', 'meta_desc', 'h1'], 'string', 'max' => 255],
62 62 [['category_id', 'language_id'], 'unique', 'targetAttribute' => ['category_id', 'language_id'], 'message' => 'The combination of Category ID and Language ID has already been taken.'],
63 63 [['category_id'], 'exist', 'skipOnError' => true, 'targetClass' => Category::className(), 'targetAttribute' => ['category_id' => 'category_id']],
... ...
common/modules/product/models/CategorySearch.php
... ... @@ -71,14 +71,4 @@ class CategorySearch extends Category
71 71  
72 72 return $dataProvider;
73 73 }
74   -
75   - public static function findByRemoteID($id) {
76   - /** @var CategoryQuery $query */
77   - $query = Category::find()
78   - ->andFilterWhere(['@>', 'remote_id', ArtboxTreeHelper::setArrayField($id)]);
79   - if (($model = $query->one()) !== null) {
80   - return $model;
81   - }
82   - return null;
83   - }
84 74 }
... ...
common/modules/product/models/Export.php
... ... @@ -3,6 +3,7 @@
3 3 namespace common\modules\product\models;
4 4  
5 5 use common\modules\language\models\Language;
  6 + use common\modules\rubrication\models\TaxOption;
6 7 use yii\base\Model;
7 8  
8 9 class Export extends Model
... ... @@ -44,7 +45,10 @@
44 45  
45 46 $language = Language::findOne(\Yii::$app->session->get('export_lang', Language::getDefaultLanguage()->language_id));
46 47 Language::setCurrent($language->url);
47   -
  48 +
  49 + /**
  50 + * @var Product[] $products
  51 + */
48 52 $products = Product::find()
49 53 ->with('variantsWithFilters', 'brand.lang', 'categories.lang', 'filters')
50 54 ->joinWith('lang', true, 'INNER JOIN')
... ... @@ -59,23 +63,26 @@
59 63 $filterString = $this->convertFilterToString($product->filters);
60 64  
61 65 foreach($product->variantsWithFilters as $variant) {
  66 + /**
  67 + * @var ProductVariant $variant
  68 + */
62 69 $color = $variant->lang->name;
63   - $mods[] = $variant->sku . '=' . $this->convertFilterToString($variant->filters) . '=' . $color . '=' . ( ( !empty( $variant->image ) ) ? $variant->image->image : '' ) . '=' . $variant->stock;
  70 + $mods[] = $variant->sku.$this->generateID($variant->remote_id) . '=' . $this->convertFilterToString($variant->filters) . '=' . $color . '=' . ( ( !empty( $variant->image ) ) ? $variant->image->image : '' ) . '=' . $variant->stock;
64 71 }
65 72  
66 73 $fotos = [];
67 74  
68 75 $categories = [];
69 76 foreach($product->categories as $value) {
70   - $categories[] = $value->lang->name;
  77 + $categories[] = $value->lang->name.$this->generateID($value->remote_id);
71 78 }
72 79  
73 80 $categories = implode(',', $categories);
74 81  
75 82 $list = [
76 83 $categories,
77   - ( ( !empty( $product->brand ) ) ? $product->brand->lang->name : '' ),
78   - $product->lang->name,
  84 + ( ( !empty( $product->brand ) ) ? $product->brand->lang->name.$this->generateID($product->brand->remote_id) : '' ),
  85 + $product->lang->name.$this->generateID($product->remote_id),
79 86 '',
80 87 ( ( !empty( $product->lang->description ) ) ? $product->lang->description : '' ),
81 88 $filterString,
... ... @@ -121,8 +128,11 @@
121 128 public function convertFilterToString($filters)
122 129 {
123 130 $fittersArray = [];
  131 + /**
  132 + * @var TaxOption[] $filters
  133 + */
124 134 foreach($filters as $filter) {
125   - $fittersArray[ $filter->taxGroup->alias ][] = $filter->lang->value;
  135 + $fittersArray[ $filter->taxGroup->lang->name.$this->generateID($filter->taxGroup->remote_id) ][] = $filter->lang->value.$this->generateID($filter->remote_id);
126 136 }
127 137 $filterString = [];
128 138  
... ... @@ -132,4 +142,8 @@
132 142 }
133 143 return implode('*', $filterString);
134 144 }
  145 +
  146 + private function generateID(string $id):string {
  147 + return sprintf('(#%s#)', $id);
  148 + }
135 149 }
136 150 \ No newline at end of file
... ...
common/modules/product/models/Import.php
... ... @@ -352,10 +352,11 @@
352 352 if(!empty ( $data[ $i ] )) {
353 353 $mod_arr = explode('=', $data[ $i ]);
354 354 $mod_art = $mod_arr[ 0 ];
  355 + $mod_art_parsed = $this->parseName($mod_art);
355 356 $variant_filters = explode('*', $mod_arr[ 1 ]);
356 357 $mod_name = $mod_arr[ 2 ];
357 358 if(empty( $mod_name )) {
358   - $mod_name = $mod_art;
  359 + $mod_name = $mod_art_parsed['name'];
359 360 }
360 361 $mod_image = $mod_arr[ 3 ];
361 362 $mod_stock = isset( $mod_arr[ 4 ] ) ? $mod_arr[ 4 ] : 1;
... ... @@ -367,12 +368,15 @@
367 368 */
368 369 if(( $_productVariant = ProductVariant::find()
369 370 ->joinWith('lang')
370   - ->andFilterWhere([ 'sku' => $mod_art ])
  371 + ->andFilterWhere([ 'remote_id' => $mod_art_parsed['remote_id'] ])
371 372 ->andFilterWhere([ 'product_variant.product_id' => $product_id ])
372 373 ->one() ) === NULL
373 374 ) {
374 375 $_productVariant = new ProductVariant();
375 376 $_productVariant->product_id = $product_id;
  377 + if(!empty($mod_art_parsed['remote_id'])) {
  378 + $_productVariant->remote_id = $mod_art_parsed['remote_id'];
  379 + }
376 380 $_productVariant->generateLangs();
377 381 $product_variant_langs = $_productVariant->model_langs;
378 382 foreach($product_variant_langs as $product_variant_lang) {
... ... @@ -387,7 +391,7 @@
387 391 }
388 392 }
389 393 $_productVariant->product_unit_id = 1;
390   - $_productVariant->sku = $mod_art;
  394 + $_productVariant->sku = $mod_art_parsed['name'];
391 395 $_productVariant->price = $mod_cost;
392 396 $_productVariant->price_old = $mod_old_cost;
393 397 $_productVariant->stock = $mod_stock;
... ...
common/modules/product/models/Product.php
... ... @@ -39,21 +39,24 @@
39 39 * @property ProductSpec $productSpec
40 40 * @property ProductCertificate[] $productCertificates
41 41 * * From language behavior *
42   - * @property ProductLang $lang
43   - * @property ProductLang[] $langs
44   - * @property ProductLang $object_lang
45   - * @property string $ownerKey
46   - * @property string $langKey
  42 + * @property ProductLang $lang
  43 + * @property ProductLang[] $langs
  44 + * @property ProductLang $object_lang
  45 + * @property string $ownerKey
  46 + * @property string $langKey
  47 + * @property ProductLang[] $model_langs
  48 + * @property bool $transactionStatus
47 49 * @method string getOwnerKey()
48   - * @method void setOwnerKey( string $value )
  50 + * @method void setOwnerKey(string $value)
49 51 * @method string getLangKey()
50   - * @method void setLangKey( string $value )
  52 + * @method void setLangKey(string $value)
51 53 * @method ActiveQuery getLangs()
52 54 * @method ActiveQuery getLang( integer $language_id )
53 55 * @method ProductLang[] generateLangs()
54   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
55   - * @method bool linkLangs( ActiveRecord[] $model_langs )
56   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  56 + * @method void loadLangs(Request $request)
  57 + * @method bool linkLangs()
  58 + * @method bool saveLangs()
  59 + * @method bool getTransactionStatus()
57 60 * * End language behavior *
58 61 */
59 62 class Product extends \yii\db\ActiveRecord
... ...
common/modules/product/models/ProductSearch.php
... ... @@ -110,14 +110,4 @@ class ProductSearch extends Product
110 110  
111 111 return $dataProvider;
112 112 }
113   -
114   - public static function findByRemoteID($id) {
115   - /** @var CategoryQuery $query */
116   - $query = Product::find()
117   - ->andFilterWhere(['remote_id' => $id]);
118   - if (($model = $query->one()) !== null) {
119   - return $model;
120   - }
121   - return null;
122   - }
123 113 }
... ...
common/modules/product/models/ProductUnit.php
1 1 <?php
2   -
3   -namespace common\modules\product\models;
4   -
5   -use common\modules\language\behaviors\LanguageBehavior;
6   -use Yii;
7   -use yii\db\ActiveQuery;
8   -use yii\db\ActiveRecord;
9   -use yii\web\Request;
10   -
11   -/**
12   - * This is the model class for table "product_unit".
13   - *
14   - * @property integer $product_unit_id
15   - * @property boolean $is_default
16   - *
17   - * @property Category[] $categories
18   - * @property ProductVariant[] $productVariants
19   - *
20   - * * From language behavior *
21   - * @property ProductUnitLang $lang
22   - * @property ProductUnitLang[] $langs
23   - * @property ProductUnitLang $object_lang
24   - * @property string $ownerKey
25   - * @property string $langKey
26   - * @method string getOwnerKey()
27   - * @method void setOwnerKey(string $value)
28   - * @method string getLangKey()
29   - * @method void setLangKey(string $value)
30   - * @method ActiveQuery getLangs()
31   - * @method ActiveQuery getLang( integer $language_id )
32   - * @method ProductUnitLang[] generateLangs()
33   - * @method void loadLangs(Request $request, ActiveRecord[] $model_langs)
34   - * @method bool linkLangs(ActiveRecord[] $model_langs)
35   - * @method bool saveLangs(ActiveRecord[] $model_langs)
36   - * * End language behavior *
37   - */
38   -class ProductUnit extends \yii\db\ActiveRecord
39   -{
40   - /**
41   - * @inheritdoc
42   - */
43   - public static function tableName()
44   - {
45   - return 'product_unit';
46   - }
47 2  
48   - public function behaviors()
49   - {
50   - return [
51   - 'language' => [
52   - 'class' => LanguageBehavior::className(),
53   - ],
54   - ];
55   - }
  3 + namespace common\modules\product\models;
  4 +
  5 + use common\modules\language\behaviors\LanguageBehavior;
  6 + use Yii;
  7 + use yii\db\ActiveQuery;
  8 + use yii\db\ActiveRecord;
  9 + use yii\web\Request;
56 10  
57 11 /**
58   - * @inheritdoc
59   - */
60   - public function rules()
61   - {
62   - return [
63   - [['is_default'], 'boolean'],
64   - ];
65   - }
66   -
67   - /**
68   - * @inheritdoc
69   - */
70   - public function attributeLabels()
71   - {
72   - return [
73   - 'product_unit_id' => Yii::t('product', 'Product Unit ID'),
74   - 'is_default' => Yii::t('product', 'Is Default'),
75   - ];
76   - }
77   -
78   - /**
79   - * @return \yii\db\ActiveQuery
80   - */
81   - public function getCategories()
82   - {
83   - return $this->hasMany(Category::className(), ['product_unit_id' => 'product_unit_id']);
84   - }
85   -
86   - /**
87   - * @return \yii\db\ActiveQuery
  12 + * This is the model class for table "product_unit".
  13 + * @property integer $product_unit_id
  14 + * @property boolean $is_default
  15 + * @property Category[] $categories
  16 + * @property ProductVariant[] $productVariants
  17 + * * From language behavior *
  18 + * @property ProductUnitLang $lang
  19 + * @property ProductUnitLang[] $langs
  20 + * @property ProductUnitLang $object_lang
  21 + * @property string $ownerKey
  22 + * @property string $langKey
  23 + * @property ProductUnitLang[] $model_langs
  24 + * @property bool $transactionStatus
  25 + * @method string getOwnerKey()
  26 + * @method void setOwnerKey( string $value )
  27 + * @method string getLangKey()
  28 + * @method void setLangKey( string $value )
  29 + * @method ActiveQuery getLangs()
  30 + * @method ActiveQuery getLang( integer $language_id )
  31 + * @method ProductUnitLang[] generateLangs()
  32 + * @method void loadLangs( Request $request )
  33 + * @method bool linkLangs()
  34 + * @method bool saveLangs()
  35 + * @method bool getTransactionStatus()
  36 + * * End language behavior *
88 37 */
89   - public function getProductVariants()
  38 + class ProductUnit extends ActiveRecord
90 39 {
91   - return $this->hasMany(ProductVariant::className(), ['product_unit_id' => 'product_unit_id']);
  40 +
  41 + /**
  42 + * @inheritdoc
  43 + */
  44 + public static function tableName()
  45 + {
  46 + return 'product_unit';
  47 + }
  48 +
  49 + public function behaviors()
  50 + {
  51 + return [
  52 + 'language' => [
  53 + 'class' => LanguageBehavior::className(),
  54 + ],
  55 + ];
  56 + }
  57 +
  58 + /**
  59 + * @inheritdoc
  60 + */
  61 + public function rules()
  62 + {
  63 + return [
  64 + [
  65 + [ 'is_default' ],
  66 + 'boolean',
  67 + ],
  68 + ];
  69 + }
  70 +
  71 + /**
  72 + * @inheritdoc
  73 + */
  74 + public function attributeLabels()
  75 + {
  76 + return [
  77 + 'product_unit_id' => Yii::t('product', 'Product Unit ID'),
  78 + 'is_default' => Yii::t('product', 'Is Default'),
  79 + ];
  80 + }
  81 +
  82 + /**
  83 + * @return \yii\db\ActiveQuery
  84 + */
  85 + public function getCategories()
  86 + {
  87 + return $this->hasMany(Category::className(), [ 'product_unit_id' => 'product_unit_id' ]);
  88 + }
  89 +
  90 + /**
  91 + * @return \yii\db\ActiveQuery
  92 + */
  93 + public function getProductVariants()
  94 + {
  95 + return $this->hasMany(ProductVariant::className(), [ 'product_unit_id' => 'product_unit_id' ]);
  96 + }
92 97 }
93   -}
... ...
common/modules/product/models/ProductVariant.php
... ... @@ -13,9 +13,10 @@
13 13  
14 14 /**
15 15 * This is the model class for table "product_variant".
  16 + * @todo Refactor
16 17 * @property integer $product_variant_id
17 18 * @property integer $product_id
18   - * @property string $remote_id
  19 + * @property integer $remote_id
19 20 * @property string $sku
20 21 * @property double $price
21 22 * @property double $price_old
... ... @@ -32,6 +33,8 @@
32 33 * @property ProductVariantLang $object_lang
33 34 * @property string $ownerKey
34 35 * @property string $langKey
  36 + * @property ProductVariantLang[] $model_langs
  37 + * @property bool $transactionStatus
35 38 * @method string getOwnerKey()
36 39 * @method void setOwnerKey( string $value )
37 40 * @method string getLangKey()
... ... @@ -39,18 +42,21 @@
39 42 * @method ActiveQuery getLangs()
40 43 * @method ActiveQuery getLang( integer $language_id )
41 44 * @method ProductVariantLang[] generateLangs()
42   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
43   - * @method bool linkLangs( ActiveRecord[] $model_langs )
44   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  45 + * @method void loadLangs( Request $request )
  46 + * @method bool linkLangs()
  47 + * @method bool saveLangs()
  48 + * @method bool getTransactionStatus()
45 49 * * End language behavior *
46 50 */
47   - class ProductVariant extends \yii\db\ActiveRecord
  51 + class ProductVariant extends ActiveRecord
48 52 {
49 53  
50 54 public $sum_cost;
51 55  
52 56 public $product_name;
53 57  
  58 + private $_options;
  59 +
54 60 /** @var array $_images */
55 61 public $imagesUpload = '';
56 62  
... ... @@ -107,11 +113,6 @@
107 113 'max' => 255,
108 114 ],
109 115 [
110   - [ 'remote_id' ],
111   - 'string',
112   - 'max' => 20,
113   - ],
114   - [
115 116 [
116 117 'options',
117 118 'imagesUpload',
... ... @@ -269,7 +270,7 @@
269 270  
270 271 public function setOptions($values)
271 272 {
272   - $this->options = $values;
  273 + $this->_options = $values;
273 274 }
274 275  
275 276 public function getOptions()
... ... @@ -333,29 +334,32 @@
333 334 ->where([ 'tax_group_to_category.category_id' => $categories ])
334 335 ->where([ 'level' => $level ]);
335 336 }
336   -
  337 +
337 338 public function afterSave($insert, $changedAttributes)
338 339 {
339   -
340   - if(!empty($this->_options)){
  340 + parent::afterSave($insert, $changedAttributes);
  341 + if(!empty( $this->_options )) {
341 342 $options = TaxOption::findAll($this->_options);
342   - $this->unlinkAll('options',true);
343   - foreach($options as $option){
  343 + $this->unlinkAll('options', true);
  344 + foreach($options as $option) {
344 345 $this->link('options', $option);
345 346 }
346 347 }
347   -
348   -
349   - if (!empty($this->stocks)) {
350   - ProductStock::deleteAll(['product_variant_id' => $this->product_variant_id]);
  348 +
  349 + if(!empty( $this->stocks )) {
  350 + ProductStock::deleteAll([ 'product_variant_id' => $this->product_variant_id ]);
351 351 $values = [];
352   - foreach ($this->stocks as $id => $quantity) {
353   - $productStock = ProductStock::find()->where(['product_variant_id' => $this->product_variant_id, 'stock_id' => $id])->one();
  352 + foreach($this->stocks as $id => $quantity) {
  353 + $productStock = ProductStock::find()
  354 + ->where([
  355 + 'product_variant_id' => $this->product_variant_id,
  356 + 'stock_id' => $id,
  357 + ])
  358 + ->one();
354 359 $productStock->quantity = $quantity;
355 360 $productStock->save();
356 361 }
357 362 }
358   - parent::afterSave($insert, $changedAttributes);
359 363 }
360 364  
361 365 public function imagesUpload()
... ...
common/modules/product/models/ProductVariantListSearch.php
... ... @@ -34,7 +34,6 @@
34 34 [
35 35 [
36 36 'sku',
37   - 'remote_id',
38 37 ],
39 38 'safe',
40 39 ],
... ... @@ -102,12 +101,7 @@
102 101 'like',
103 102 'sku',
104 103 $this->sku,
105   - ])
106   - ->andFilterWhere([
107   - 'like',
108   - 'remote_id',
109   - $this->remote_id,
110   - ]);
  104 + ]);
111 105  
112 106 return $dataProvider;
113 107 }
... ...
common/modules/product/models/ProductVariantSearch.php
... ... @@ -138,14 +138,4 @@ class ProductVariantSearch extends ProductVariant
138 138 }
139 139 return NULL;
140 140 }
141   -
142   - public static function findByRemoteID($id) {
143   - /** @var CategoryQuery $query */
144   - $query = ProductVariant::find()
145   - ->andFilterWhere(['remote_id' => $id]);
146   - if (($model = $query->one()) !== null) {
147   - return $model;
148   - }
149   - return NULL;
150   - }
151 141 }
... ...
common/modules/product/views/manage/_form.php
... ... @@ -4,6 +4,7 @@
4 4 use common\models\ProductSpecLang;
5 5 use common\modules\language\widgets\LanguageForm;
6 6 use common\modules\product\models\ProductLang;
  7 + use common\modules\rubrication\models\TaxGroup;
7 8 use yii\db\ActiveQuery;
8 9 use yii\helpers\Html;
9 10 use yii\widgets\ActiveForm;
... ... @@ -41,13 +42,14 @@
41 42  
42 43 <?= $form->field($model, 'brand_id')
43 44 ->dropDownList(ArrayHelper::map(ProductHelper::getBrands()
44   - ->all(), 'brand_id', 'brand_id'), [
  45 + ->with('lang')
  46 + ->all(), 'brand_id', 'lang.name'), [
45 47 'prompt' => Yii::t('product', 'Select brand'),
46 48 ]) ?>
47 49  
48 50 <?= $form->field($model, 'categories')
49 51 ->widget(Select2::className(), [
50   - 'data' => ArtboxTreeHelper::treeMap(ProductHelper::getCategories(), 'category_id', 'category_id'),
  52 + 'data' => ArtboxTreeHelper::treeMap(ProductHelper::getCategories(), 'category_id', 'lang.name'),
51 53 'language' => 'ru',
52 54 'options' => [
53 55 'placeholder' => Yii::t('product', 'Select categories'),
... ... @@ -110,16 +112,20 @@
110 112 ],
111 113 ]); ?>
112 114  
113   - <?php if(isset( $groups )) : ?>
114   - <?php foreach($groups->all() as $group) : ?>
115   - <?= $form->field($model, 'options')
116   - ->checkboxList(ArrayHelper::map($group->options, 'tax_option_id', 'tax_option_id'), [
  115 + <?php if(!empty( $groups )) {
  116 + foreach($groups->with('lang')->all() as $group) {
  117 + /**
  118 + * @var TaxGroup $group
  119 + */
  120 + echo $form->field($model, 'options')
  121 + ->checkboxList(ArrayHelper::map($group->getOptions()->with('lang')->all(), 'tax_option_id', 'lang.value'), [
117 122 'multiple' => true,
118 123 'unselect' => NULL,
119 124 ])
120   - ->label($group->tax_group_id); ?>
121   - <?php endforeach ?>
122   - <?php endif ?>
  125 + ->label($group->lang->name);
  126 + }
  127 + }
  128 + ?>
123 129  
124 130 <hr>
125 131  
... ...
common/modules/product/views/variant/_form.php
... ... @@ -2,6 +2,7 @@
2 2  
3 3 use common\modules\language\widgets\LanguageForm;
4 4 use common\modules\product\models\ProductStock;
  5 + use common\modules\product\models\ProductUnit;
5 6 use common\modules\product\models\ProductVariant;
6 7 use common\modules\product\models\ProductVariantLang;
7 8 use yii\db\ActiveQuery;
... ... @@ -145,22 +146,26 @@ $(&quot;.dynamicform_wrapper&quot;).on(&quot;limitReached&quot;, function(e, item) {
145 146 <?php DynamicFormWidget::end(); ?>
146 147  
147 148 <?= $form->field($model, 'product_unit_id')
148   - ->dropDownList(ArrayHelper::map(\common\modules\product\models\ProductUnit::find()
149   - ->all(), 'product_unit_id', 'product_unit_id'), [
  149 + ->dropDownList(ArrayHelper::map(ProductUnit::find()
  150 + ->with('lang')
  151 + ->all(), 'product_unit_id', 'lang.name'), [
150 152 'prompt' => Yii::t('product', 'Unit'),
151 153 ])
152 154 ->label(Yii::t('product', 'Unit')) ?>
153 155  
154   - <?php if(isset( $groups )) : ?>
155   - <?php foreach($groups->all() as $group) : ?>
156   - <?= $form->field($model, 'options')
157   - ->checkboxList(ArrayHelper::map($group->options, 'tax_option_id', 'tax_option_id'), [
158   - 'multiple' => true,
159   - 'unselect' => NULL,
160   - ])
161   - ->label($group->tax_group_id); ?>
162   - <?php endforeach ?>
163   - <?php endif ?>
  156 + <?php if(!empty( $groups )) {
  157 + foreach($groups->with('lang')
  158 + ->all() as $group) {
  159 + echo $form->field($model, 'options')
  160 + ->checkboxList(ArrayHelper::map($group->getOptions()
  161 + ->with('lang')
  162 + ->all(), 'tax_option_id', 'lang.value'), [
  163 + 'multiple' => true,
  164 + 'unselect' => NULL,
  165 + ])
  166 + ->label($group->lang->name);
  167 + }
  168 + } ?>
164 169  
165 170 <div class="form-group">
166 171 <?= Html::submitButton($model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'), [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]) ?>
... ...
common/modules/rubrication/controllers/TaxGroupController.php
... ... @@ -76,12 +76,11 @@
76 76 public function actionCreate($level)
77 77 {
78 78 $model = new TaxGroup();
79   - $model_langs = $model->generateLangs();
80   -
  79 + $model->generateLangs();
81 80 if($model->load(Yii::$app->request->post()) && $model->validate()) {
82   - $model->loadLangs(\Yii::$app->request, $model_langs);
  81 + $model->loadLangs(\Yii::$app->request);
83 82 $model->level = $level;
84   - if($model->save() && $model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  83 + if($model->save() && $model->transactionStatus) {
85 84 return $this->redirect([
86 85 'index',
87 86 'level' => $level,
... ... @@ -90,7 +89,7 @@
90 89 }
91 90 return $this->render('create', [
92 91 'model' => $model,
93   - 'model_langs' => $model_langs,
  92 + 'model_langs' => $model->model_langs,
94 93 ]);
95 94 }
96 95  
... ... @@ -106,11 +105,10 @@
106 105 public function actionUpdate($level, $id)
107 106 {
108 107 $model = $this->findModel($id);
109   - $model_langs = $model->generateLangs();
110   -
  108 + $model->generateLangs();
111 109 if($model->load(Yii::$app->request->post())) {
112   - $model->loadLangs(\Yii::$app->request, $model_langs);
113   - if($model->save() && $model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  110 + $model->loadLangs(\Yii::$app->request);
  111 + if($model->save() && $model->transactionStatus) {
114 112 return $this->redirect([
115 113 'index',
116 114 'level' => $level,
... ... @@ -119,7 +117,7 @@
119 117 }
120 118 return $this->render('update', [
121 119 'model' => $model,
122   - 'model_langs' => $model_langs,
  120 + 'model_langs' => $model->model_langs,
123 121 ]);
124 122 }
125 123  
... ... @@ -149,7 +147,6 @@
149 147 {
150 148 TaxOption::find()
151 149 ->rebuildMP($id);
152   -
153 150 return $this->redirect([ 'index' ]);
154 151 }
155 152  
... ...
common/modules/rubrication/controllers/TaxOptionController.php
... ... @@ -74,24 +74,16 @@
74 74 public function actionCreate()
75 75 {
76 76 $model = new TaxOption();
77   - $model_langs = $model->generateLangs();
  77 + $model->generateLangs();
78 78 $group = TaxGroup::findOne(Yii::$app->request->queryParams[ 'group' ]);
79   -
80   - if($model->load(Yii::$app->request->post()) && $model->save()) {
81   - $model->loadLangs(\Yii::$app->request, $model_langs);
82   -
83   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  79 + if($model->load(Yii::$app->request->post())) {
  80 + $model->loadLangs(\Yii::$app->request);
  81 + if($model->save() && $model->transactionStatus) {
84 82 return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect([
85 83 'view',
86 84 'id' => $model->tax_option_id,
87 85 ]) : $this->redirect(array_merge([ 'create' ], Yii::$app->request->queryParams));
88   - } else {
89   - return $this->redirect([
90   - 'update',
91   - 'id' => $model->tax_option_id,
92   - ]);
93 86 }
94   -
95 87 }
96 88 $model->tax_group_id = $group->tax_group_id;
97 89 if(!empty( Yii::$app->request->queryParams[ 'parent' ] )) {
... ... @@ -99,7 +91,7 @@
99 91 }
100 92 return $this->render('create', [
101 93 'model' => $model,
102   - 'model_langs' => $model_langs,
  94 + 'model_langs' => $model->model_langs,
103 95 'group' => $group,
104 96 ]);
105 97 }
... ... @@ -115,15 +107,13 @@
115 107 public function actionUpdate($id)
116 108 {
117 109 $model = $this->findModel($id);
118   - $model_langs = $model->generateLangs();
  110 + $model->generateLangs();
119 111 $group = TaxGroup::findOne($model->tax_group_id);
120   -
121   - if($model->load(Yii::$app->request->post()) && $model->save()) {
122   - $model->loadLangs(\Yii::$app->request, $model_langs);
123   -
  112 + if($model->load(Yii::$app->request->post())) {
  113 + $model->loadLangs(\Yii::$app->request);
124 114 TaxOption::find()
125 115 ->rebuildMP($model->tax_group_id);
126   - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {
  116 + if($model->save() && $model->transactionStatus) {
127 117 return $this->redirect([
128 118 'view',
129 119 'id' => $model->tax_option_id,
... ... @@ -132,7 +122,7 @@
132 122 }
133 123 return $this->render('update', [
134 124 'model' => $model,
135   - 'model_langs' => $model_langs,
  125 + 'model_langs' => $model->model_langs,
136 126 'group' => $group,
137 127 ]);
138 128 }
... ...
common/modules/rubrication/models/TaxGroup.php
... ... @@ -26,6 +26,8 @@
26 26 * @property TaxGroupLang $object_lang
27 27 * @property string $ownerKey
28 28 * @property string $langKey
  29 + * @property TaxGroupLang[] $model_langs
  30 + * @property bool $transactionStatus
29 31 * @method string getOwnerKey()
30 32 * @method void setOwnerKey( string $value )
31 33 * @method string getLangKey()
... ... @@ -33,12 +35,13 @@
33 35 * @method ActiveQuery getLangs()
34 36 * @method ActiveQuery getLang( integer $language_id )
35 37 * @method TaxGroupLang[] generateLangs()
36   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
37   - * @method bool linkLangs( ActiveRecord[] $model_langs )
38   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  38 + * @method void loadLangs( Request $request )
  39 + * @method bool linkLangs()
  40 + * @method bool saveLangs()
  41 + * @method bool getTransactionStatus()
39 42 * * End language behavior *
40 43 */
41   - class TaxGroup extends \yii\db\ActiveRecord
  44 + class TaxGroup extends ActiveRecord
42 45 {
43 46  
44 47 /**
... ... @@ -146,12 +149,14 @@
146 149 ->inverseOf('taxGroup');
147 150 }
148 151  
149   - public function getAlias() {
  152 + public function getAlias()
  153 + {
150 154 $default_lang = Language::getDefaultLanguage();
151 155 /**
152 156 * @var TaxGroupLang $lang
153 157 */
154   - $lang = $this->getLang($default_lang->language_id)->one();
  158 + $lang = $this->getLang($default_lang->language_id)
  159 + ->one();
155 160 return $lang->alias;
156 161 }
157 162 }
... ...
common/modules/rubrication/models/TaxOption.php
... ... @@ -31,6 +31,8 @@
31 31 * @property TaxOptionLang $object_lang
32 32 * @property string $ownerKey
33 33 * @property string $langKey
  34 + * @property TaxOptionLang[] $model_langs
  35 + * @property bool $transactionStatus
34 36 * @method string getOwnerKey()
35 37 * @method void setOwnerKey( string $value )
36 38 * @method string getLangKey()
... ... @@ -38,12 +40,13 @@
38 40 * @method ActiveQuery getLangs()
39 41 * @method ActiveQuery getLang( integer $language_id )
40 42 * @method TaxOptionLang[] generateLangs()
41   - * @method void loadLangs( Request $request, ActiveRecord[] $model_langs )
42   - * @method bool linkLangs( ActiveRecord[] $model_langs )
43   - * @method bool saveLangs( ActiveRecord[] $model_langs )
  43 + * @method void loadLangs( Request $request )
  44 + * @method bool linkLangs()
  45 + * @method bool saveLangs()
  46 + * @method bool getTransactionStatus()
44 47 * * End language behavior *
45 48 */
46   - class TaxOption extends \yii\db\ActiveRecord
  49 + class TaxOption extends ActiveRecord
47 50 {
48 51  
49 52 public $_items_count;
... ...
common/modules/rubrication/views/tax-group/_form.php
... ... @@ -22,7 +22,7 @@
22 22 <?php $form = ActiveForm::begin([ 'options' => [ 'enctype' => 'multipart/form-data' ] ]); ?>
23 23  
24 24 <?= $form->field($model, 'categories')
25   - ->dropDownList(ArtboxTreeHelper::treeMap(ProductHelper::getCategories(), 'category_id', 'category_id'), [
  25 + ->dropDownList(ArtboxTreeHelper::treeMap(ProductHelper::getCategories(), 'category_id', 'lang.name'), [
26 26 'multiple' => true,
27 27 ])
28 28 ->label('Use in the following categories') ?>
... ...