77d30544
Yarik
Начата разработка...
|
1
2
3
|
<?php
namespace common\modules\blog\controllers;
|
ecf03367
Yarik
TEst
|
4
5
6
7
|
use common\components\rules\CommentRule;
use common\components\rules\DeleteRule;
use common\components\rules\UpdateRule;
use common\components\rules\ViewRule;
|
4921cad4
Yarik
Добален блог v 0....
|
8
|
use common\models\Language;
|
1175ed37
Yarik
Добавлена миграция
|
9
|
use common\modules\blog\models\Article;
|
4921cad4
Yarik
Добален блог v 0....
|
10
11
12
|
use common\modules\blog\models\ArticleLang;
use common\modules\blog\models\ArticleMedia;
use common\modules\blog\models\ArticleToCategory;
|
1175ed37
Yarik
Добавлена миграция
|
13
|
use yii\data\ActiveDataProvider;
|
ecf03367
Yarik
TEst
|
14
|
use yii\rbac\DbManager;
|
77d30544
Yarik
Начата разработка...
|
15
|
use yii\web\Controller;
|
4921cad4
Yarik
Добален блог v 0....
|
16
|
use yii\web\UploadedFile;
|
77d30544
Yarik
Начата разработка...
|
17
18
19
|
class ArticleController extends Controller
{
|
4921cad4
Yarik
Добален блог v 0....
|
20
|
|
1175ed37
Yarik
Добавлена миграция
|
21
22
|
public function actionIndex()
{
|
ecf03367
Yarik
TEst
|
23
|
var_dump(\Yii::$app->options->rule);
|
1175ed37
Yarik
Добавлена миграция
|
24
25
26
27
28
29
30
31
|
$dataProvider = new ActiveDataProvider([
'query' => Article::find(),
'pagination' => [
'pageSize' => 1,
],
]);
return $this->render('index', ['dataProvider' => $dataProvider]);
}
|
18ac4398
Yarik
Добавлен блог (ча...
|
32
33
34
|
public function actionCreate()
{
|
4921cad4
Yarik
Добален блог v 0....
|
35
36
|
$article_langs = array();
$article = new Article();
|
6506d20d
Yarik
Коммит 25.15.2015...
|
37
|
$default_lang = Language::getDefaultLang();
|
4921cad4
Yarik
Добален блог v 0....
|
38
|
$images = array();
|
6506d20d
Yarik
Коммит 25.15.2015...
|
39
40
41
|
$images[$default_lang->language_id]['full'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_FULL]);
$images[$default_lang->language_id]['preview'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_PREVIEW]);
$images[0]['additional'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]);
|
4921cad4
Yarik
Добален блог v 0....
|
42
43
|
$article->loadDefaultValues();
$langs = Language::getActiveLanguages();
|
4921cad4
Yarik
Добален блог v 0....
|
44
45
46
47
|
$isValid = false;
if(!empty(\Yii::$app->request->post())) {
$isValid = true;
$article->load(\Yii::$app->request->post());
|
e3105834
Yarik
Стандартизация
|
48
|
$article->user_id = \Yii::$app->user->getId();
|
4921cad4
Yarik
Добален блог v 0....
|
49
|
$isValid = $article->validate();
|
6506d20d
Yarik
Коммит 25.15.2015...
|
50
51
52
53
|
foreach(\Yii::$app->request->post()['ArticleMedia'] as $lang => $value) {
foreach($value as $type => $fields) {
$images[$lang][$type] = new ArticleMedia(['scenario' => $type]);
$images[$lang][$type]->type = $type;
|
e3105834
Yarik
Стандартизация
|
54
|
$images[$lang][$type]->language_id = $lang;
|
6506d20d
Yarik
Коммит 25.15.2015...
|
55
56
|
$images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile");
$isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid;
|
4921cad4
Yarik
Добален блог v 0....
|
57
|
}
|
4921cad4
Yarik
Добален блог v 0....
|
58
|
}
|
e3105834
Yarik
Стандартизация
|
59
|
$images[0]['additional']->language_id = 0;
|
6506d20d
Yarik
Коммит 25.15.2015...
|
60
61
|
$images[0]['additional']->type = 'additional';
$images[0]['additional']->imageFile = UploadedFile::getInstances($images[0]['additional'], "[0][additional]imageFile");
|
4921cad4
Yarik
Добален блог v 0....
|
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
if(empty(\Yii::$app->request->post()['ArticleLang'])) {
$article_langs[$default_lang->language_id] = new ArticleLang();
$isValid = ArticleLang::validateMultiple($article_langs) && $isValid;
} else {
foreach(\Yii::$app->request->post()['ArticleLang'] as $index => $article_lang) {
$article_langs[$index] = new ArticleLang();
}
ArticleLang::loadMultiple($article_langs, \Yii::$app->request->post());
$isValid = ArticleLang::validateMultiple($article_langs) && $isValid;
}
} else {
$article_langs[$default_lang->language_id] = new ArticleLang();
}
if($isValid) {
$article->save(false);
$article_categories = \Yii::$app->request->post('Article')['articleCategoriesArray'];
if(!empty($article_categories)) {
foreach($article_categories as $article_category) {
$articletocategory[$article_category] = new ArticleToCategory();
|
e3105834
Yarik
Стандартизация
|
81
|
$articletocategory[$article_category]->article_category_id = $article_category;
|
4921cad4
Yarik
Добален блог v 0....
|
82
83
84
85
|
$articletocategory[$article_category]->link('article', $article);
}
}
$first = 1;
|
6506d20d
Yarik
Коммит 25.15.2015...
|
86
87
|
foreach($images as $lang => $value) {
foreach($value as $type => $fields) {
|
e3105834
Yarik
Стандартизация
|
88
|
$images[$lang][$type]->upload($article->article_id);
|
6506d20d
Yarik
Коммит 25.15.2015...
|
89
90
91
|
if($first && $type != 'additional') {
$media_clone = clone $images[$lang][$type];
$media_clone->setIsNewRecord(true);
|
e3105834
Yarik
Стандартизация
|
92
93
94
|
unset($media_clone->article_media_id);
$media_clone->language_id = 0;
$media_clone->upload($article->article_id);
|
6506d20d
Yarik
Коммит 25.15.2015...
|
95
96
97
98
|
unset($media_clone);
$first = 0;
}
}
|
4921cad4
Yarik
Добален блог v 0....
|
99
|
}
|
6506d20d
Yarik
Коммит 25.15.2015...
|
100
|
$first = 1;
|
4921cad4
Yarik
Добален блог v 0....
|
101
102
103
|
foreach($article_langs as $article_lang) {
if($first) {
$article_lang_clone = clone $article_lang;
|
e3105834
Yarik
Стандартизация
|
104
|
$article_lang_clone->language_id = 0;
|
4921cad4
Yarik
Добален блог v 0....
|
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
$article_lang_clone->link('article', $article);
unset($article_lang_clone);
}
$article_lang->link('article', $article);
$first = 0;
}
echo "ok";
//$this->redirect('index');
} else {
return $this->render('create', [
'article_langs' => $article_langs,
'article' => $article,
'langs' => $langs,
'images' => $images
]);
}
}
public function actionUpdate($id)
{
$article = Article::findOne($id);
|
6506d20d
Yarik
Коммит 25.15.2015...
|
126
127
128
129
|
$imagestack = $article->getArticleMedia()->all();
$images = [];
$images[0]['additional'][0] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]);
$images[0]['additional'][0]->type = 'additional';
|
e3105834
Yarik
Стандартизация
|
130
|
$images[0]['additional'][0]->language_id = 0;
|
6506d20d
Yarik
Коммит 25.15.2015...
|
131
132
|
foreach($imagestack as $image) {
if(in_array($image->type, ['full', 'preview'])) {
|
e3105834
Yarik
Стандартизация
|
133
134
|
$images[$image->language_id][$image->type] = $image;
$images[$image->language_id][$image->type]->scenario = $image->type;
|
6506d20d
Yarik
Коммит 25.15.2015...
|
135
|
} else {
|
e3105834
Yarik
Стандартизация
|
136
137
|
$images[$image->language_id][$image->type][$image->article_media_id] = $image;
$images[$image->language_id][$image->type][$image->article_media_id]->scenario = $image->type;
|
6506d20d
Yarik
Коммит 25.15.2015...
|
138
|
}
|
4921cad4
Yarik
Добален блог v 0....
|
139
|
}
|
6506d20d
Yarik
Коммит 25.15.2015...
|
140
141
|
foreach($images as $lang => $value) {
$images[$lang]['additional'][0] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]);
|
4921cad4
Yarik
Добален блог v 0....
|
142
|
}
|
e3105834
Yarik
Стандартизация
|
143
|
$article_langs = $article->getArticleLangs()->where(['>=', 'language_id', '1'])->indexBy('language_id')->all();
|
4921cad4
Yarik
Добален блог v 0....
|
144
145
146
147
148
149
|
$langs = Language::getActiveLanguages();
$default_lang = Language::getDefaultLang();
$isValid = false;
if(!empty(\Yii::$app->request->post())) {
$isValid = true;
$article->load(\Yii::$app->request->post());
|
e3105834
Yarik
Стандартизация
|
150
|
ArticleToCategory::deleteAll(['article_id' => $article->article_id]);
|
4921cad4
Yarik
Добален блог v 0....
|
151
152
153
154
|
$article_categories = \Yii::$app->request->post('Article')['articleCategoriesArray'];
if(!empty($article_categories)) {
foreach($article_categories as $article_category) {
$articletocategory[$article_category] = new ArticleToCategory();
|
e3105834
Yarik
Стандартизация
|
155
|
$articletocategory[$article_category]->article_category_id = $article_category;
|
4921cad4
Yarik
Добален блог v 0....
|
156
157
158
159
|
$articletocategory[$article_category]->link('article', $article);
}
}
$isValid = $article->validate();
|
6506d20d
Yarik
Коммит 25.15.2015...
|
160
|
$images[0]['additional'][0]->type = 'additional';
|
e3105834
Yarik
Стандартизация
|
161
|
$images[0]['additional'][0]->language_id = 0;
|
6506d20d
Yarik
Коммит 25.15.2015...
|
162
163
164
165
166
167
|
$images[0]['additional'][0]->imageFile = UploadedFile::getInstances($images[0]['additional'][0], "[0][additional]imageFile");
$isValid = $images[0]['additional'][0]->validate(['imageFile']) && $isValid;
foreach(\Yii::$app->request->post()['ArticleMedia'] as $lang => $value) {
foreach($value as $type => $fields) {
if(!in_array($type, ['full', 'preview'])) continue;
$images[$lang][$type] = new ArticleMedia(['scenario' => $type]);
|
e3105834
Yarik
Стандартизация
|
168
|
$images[$lang][$type]->language_id = $lang;
|
6506d20d
Yarik
Коммит 25.15.2015...
|
169
170
171
|
$images[$lang][$type]->type = $type;
$images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile");
$isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid;
|
4921cad4
Yarik
Добален блог v 0....
|
172
173
174
175
176
177
178
179
|
}
}
if(empty(\Yii::$app->request->post()['ArticleLang'])) {
$isValid = ArticleLang::validateMultiple($article_langs) && $isValid;
} else {
foreach(\Yii::$app->request->post()['ArticleLang'] as $index => $article_lang) {
if (!array_key_exists($index, $article_langs)) {
$article_langs[$index] = new ArticleLang();
|
e3105834
Yarik
Стандартизация
|
180
|
$article_langs[$index]->article_id = $article->article_id;
|
4921cad4
Yarik
Добален блог v 0....
|
181
182
183
184
185
186
187
188
|
}
}
ArticleLang::loadMultiple($article_langs, \Yii::$app->request->post());
$isValid = ArticleLang::validateMultiple($article_langs) && $isValid;
}
}
if($isValid) {
$article->save(false);
|
6506d20d
Yarik
Коммит 25.15.2015...
|
189
190
191
192
193
194
|
foreach($images as $lang => $value) {
foreach($value as $type => $fields) {
if($type == 'additional') {
$images[$lang][$type][0]->upload($article->id);
} else {
if(!empty($images[$lang][$type]->imageFile)) {
|
e3105834
Yarik
Стандартизация
|
195
|
$images[$lang][$type]->replace($article->article_id);
|
6506d20d
Yarik
Коммит 25.15.2015...
|
196
|
}
|
4921cad4
Yarik
Добален блог v 0....
|
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
}
}
}
foreach($article_langs as $article_lang) {
$article_lang->save(false);
}
echo "ok";
//$this->redirect('index');
} else {
return $this->render('update', [
'article_langs' => $article_langs,
'article' => $article,
'langs' => $langs,
'images' => $images
]);
}
}
public function actionDelete($id)
{
$this->findModel($id)->delete();
return $this->redirect(['index']);
}
protected function findModel($id)
{
if (($model = Article::findOne($id)) !== null) {
return $model;
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
|
18ac4398
Yarik
Добавлен блог (ча...
|
228
|
}
|
77d30544
Yarik
Начата разработка...
|
229
|
}
|