Commit f202ab2b57b31def6c257f2dc3060aada96bef8b

Authored by Yarik
1 parent 5c2eb7c8

Article table refactor.

backend/assets/AdminLteAsset.php
... ... @@ -27,9 +27,7 @@ class AdminLteAsset extends AssetBundle
27 27 ];
28 28 public $depends = [
29 29 'yii\web\YiiAsset',
30   - 'common\modules\file\FileUploadAsset',
31 30 'yii\bootstrap\BootstrapPluginAsset',
32 31 'backend\assets\FontAwesomeAsset',
33   -
34 32 ];
35 33 }
36 34 \ No newline at end of file
... ...
backend/controllers/ArticlesController.php renamed to backend/controllers/ArticleController.php
... ... @@ -2,18 +2,18 @@
2 2  
3 3 namespace backend\controllers;
4 4  
  5 + use common\models\Article;
  6 + use common\models\ArticleSearch;
5 7 use Yii;
6   - use common\models\Articles;
7   - use common\models\ArticlesSearch;
8 8 use yii\web\Controller;
9 9 use yii\web\NotFoundHttpException;
10 10 use yii\filters\VerbFilter;
11 11 use developeruz\db_rbac\behaviors\AccessBehavior;
12 12  
13 13 /**
14   - * ArticlesController implements the CRUD actions for Articles model.
  14 + * ArticleController implements the CRUD actions for Article model.
15 15 */
16   - class ArticlesController extends Controller
  16 + class ArticleController extends Controller
17 17 {
18 18  
19 19 /**
... ... @@ -46,12 +46,12 @@
46 46 }
47 47  
48 48 /**
49   - * Lists all Articles models.
  49 + * Lists all Article models.
50 50 * @return mixed
51 51 */
52 52 public function actionIndex()
53 53 {
54   - $searchModel = new ArticlesSearch();
  54 + $searchModel = new ArticleSearch();
55 55 $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
56 56  
57 57 return $this->render('index', [
... ... @@ -61,7 +61,7 @@
61 61 }
62 62  
63 63 /**
64   - * Displays a single Articles model.
  64 + * Displays a single Article model.
65 65 *
66 66 * @param integer $id
67 67 *
... ... @@ -75,13 +75,13 @@
75 75 }
76 76  
77 77 /**
78   - * Creates a new Articles model.
  78 + * Creates a new Article model.
79 79 * If creation is successful, the browser will be redirected to the 'view' page.
80 80 * @return mixed
81 81 */
82 82 public function actionCreate()
83 83 {
84   - $model = new Articles();
  84 + $model = new Article();
85 85 $model->generateLangs();
86 86 if($model->load(Yii::$app->request->post())) {
87 87 $model->loadLangs(\Yii::$app->request);
... ... @@ -99,7 +99,7 @@
99 99 }
100 100  
101 101 /**
102   - * Updates an existing Articles model.
  102 + * Updates an existing Article model.
103 103 * If update is successful, the browser will be redirected to the 'view' page.
104 104 *
105 105 * @param integer $id
... ... @@ -126,7 +126,7 @@
126 126 }
127 127  
128 128 /**
129   - * Deletes an existing Articles model.
  129 + * Deletes an existing Article model.
130 130 * If deletion is successful, the browser will be redirected to the 'index' page.
131 131 *
132 132 * @param integer $id
... ... @@ -142,17 +142,17 @@
142 142 }
143 143  
144 144 /**
145   - * Finds the Articles model based on its primary key value.
  145 + * Finds the Article model based on its primary key value.
146 146 * If the model is not found, a 404 HTTP exception will be thrown.
147 147 *
148 148 * @param integer $id
149 149 *
150   - * @return Articles the loaded model
  150 + * @return Article the loaded model
151 151 * @throws NotFoundHttpException if the model cannot be found
152 152 */
153 153 protected function findModel($id)
154 154 {
155   - if(( $model = Articles::find()
  155 + if(( $model = Article::find()
156 156 ->where([ 'id' => $id ])
157 157 ->with('lang')
158 158 ->one() ) !== NULL
... ...
backend/views/articles/_form.php renamed to backend/views/article/_form.php
1 1 <?php
2   - use common\models\Articles;
3   - use common\models\ArticlesLang;
  2 + use common\models\Article;
  3 + use common\models\ArticleLang;
4 4 use common\modules\language\widgets\LanguageForm;
5 5 use yii\helpers\Html;
6 6 use yii\web\View;
7 7 use yii\widgets\ActiveForm;
8   - use mihaildev\ckeditor\CKEditor;
9   - use mihaildev\elfinder\ElFinder;
10 8 use yii\jui\DatePicker;
11 9  
12 10 /**
13   - * @var View $this
14   - * @var Articles $model
15   - * @var ArticlesLang[] $model_langs
16   - * @var ActiveForm $form
  11 + * @var View $this
  12 + * @var Article $model
  13 + * @var ArticleLang[] $model_langs
  14 + * @var ActiveForm $form
17 15 */
18 16 ?>
19 17  
20   -<div class="articles-form">
  18 +<div class="article-form">
21 19  
22 20 <?php $form = ActiveForm::begin([
23 21 'enableClientValidation' => false,
... ... @@ -25,7 +23,7 @@
25 23 ]); ?>
26 24  
27 25  
28   - <?= $form->field($model, 'date')
  26 + <?= $form->field($model, 'created_at')
29 27 ->widget(DatePicker::className(), [
30 28 'dateFormat' => 'dd-MM-yyyy',
31 29 ]) ?>
... ... @@ -54,13 +52,13 @@
54 52 <?php
55 53 echo LanguageForm::widget([
56 54 'model_langs' => $model_langs,
57   - 'formView' => '@backend/views/articles/_form_language',
  55 + 'formView' => '@backend/views/article/_form_language',
58 56 'form' => $form,
59 57 ]);
60 58 ?>
61 59  
62 60 <div class="form-group">
63   - <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]) ?>
  61 + <?= Html::submitButton($model->isNewRecord ? \Yii::t('app', 'Create') : \Yii::t('app', 'Update'), [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]) ?>
64 62 </div>
65 63  
66 64 <?php ActiveForm::end(); ?>
... ...
backend/views/articles/_form_language.php renamed to backend/views/article/_form_language.php
1 1 <?php
2   - use common\models\ArticlesLang;
  2 + use common\models\ArticleLang;
3 3 use common\modules\language\models\Language;
4 4 use mihaildev\ckeditor\CKEditor;
5 5 use mihaildev\elfinder\ElFinder;
... ... @@ -7,10 +7,10 @@
7 7 use yii\widgets\ActiveForm;
8 8  
9 9 /**
10   - * @var ArticlesLang $model_lang
11   - * @var Language $language
12   - * @var ActiveForm $form
13   - * @var View $this
  10 + * @var ArticleLang $model_lang
  11 + * @var Language $language
  12 + * @var ActiveForm $form
  13 + * @var View $this
14 14 */
15 15 ?>
16 16 <?= $form->field($model_lang, '[' . $language->language_id . ']title')
... ...
backend/views/articles/_search.php renamed to backend/views/article/_search.php
backend/views/articles/create.php renamed to backend/views/article/create.php
1 1 <?php
2   - use common\models\Articles;
3   - use common\models\ArticlesLang;
  2 + use common\models\Article;
  3 + use common\models\ArticleLang;
4 4 use yii\helpers\Html;
5 5 use yii\web\View;
6 6  
7 7 /**
8 8 * @var View $this
9   - * @var Articles $model
10   - * @var ArticlesLang[] $model_langs
  9 + * @var Article $model
  10 + * @var ArticleLang[] $model_langs
11 11 */
12   - $this->title = \Yii::t('app', 'Create Articles');
  12 + $this->title = \Yii::t('app', 'Create Article');
13 13 $this->params[ 'breadcrumbs' ][] = [
14   - 'label' => \Yii::t('app', 'Articles'),
  14 + 'label' => \Yii::t('app', 'Article'),
15 15 'url' => [ 'index' ],
16 16 ];
17 17 $this->params[ 'breadcrumbs' ][] = $this->title;
18 18 ?>
19   -<div class="articles-create">
  19 +<div class="article-create">
20 20  
21 21 <h1><?= Html::encode($this->title) ?></h1>
22 22  
... ...
backend/views/articles/index.php renamed to backend/views/article/index.php
... ... @@ -4,9 +4,9 @@
4 4 use yii\grid\GridView;
5 5  
6 6 /**
7   - * @var yii\web\View $this
8   - * @var common\models\ArticlesSearch $searchModel
9   - * @var yii\data\ActiveDataProvider $dataProvider
  7 + * @var yii\web\View $this
  8 + * @var common\models\ArticleSearch $searchModel
  9 + * @var yii\data\ActiveDataProvider $dataProvider
10 10 */
11 11  
12 12 $this->title = \Yii::t('app', 'Articles');
... ... @@ -26,7 +26,7 @@
26 26 'attribute' => 'title',
27 27 'value' => 'lang.title',
28 28 ],
29   - 'date:date',
  29 + 'created_at:date',
30 30 'imageUrl:image',
31 31 [ 'class' => 'yii\grid\ActionColumn' ],
32 32 ],
... ...
backend/views/articles/update.php renamed to backend/views/article/update.php
1 1 <?php
2   - use common\models\Articles;
3   - use common\models\ArticlesLang;
  2 + use common\models\Article;
  3 + use common\models\ArticleLang;
4 4 use yii\helpers\Html;
5 5 use yii\web\View;
6 6  
7 7 /**
8   - * @var View $this
9   - * @var Articles $model
10   - * @var ArticlesLang[] $model_langs
  8 + * @var View $this
  9 + * @var Article $model
  10 + * @var ArticleLang[] $model_langs
11 11 */
12   - $this->title = \Yii::t('app', 'Update Articles').': ' . $model->id;
  12 + $this->title = \Yii::t('app', 'Update Article') . ': ' . $model->lang->title;
13 13 $this->params[ 'breadcrumbs' ][] = [
14   - 'label' => \Yii::t('app', 'Articles'),
  14 + 'label' => \Yii::t('app', 'Article'),
15 15 'url' => [ 'index' ],
16 16 ];
17 17 $this->params[ 'breadcrumbs' ][] = [
18   - 'label' => $model->id,
  18 + 'label' => $model->lang->title,
19 19 'url' => [
20 20 'view',
21 21 'id' => $model->id,
... ... @@ -23,7 +23,7 @@
23 23 ];
24 24 $this->params[ 'breadcrumbs' ][] = \Yii::t('app', 'Update');
25 25 ?>
26   -<div class="articles-update">
  26 +<div class="article-update">
27 27  
28 28 <h1><?= Html::encode($this->title) ?></h1>
29 29  
... ...
backend/views/articles/view.php renamed to backend/views/article/view.php
... ... @@ -4,18 +4,18 @@
4 4 use yii\widgets\DetailView;
5 5  
6 6 /**
7   - * @var yii\web\View $this
8   - * @var common\models\Articles $model
  7 + * @var yii\web\View $this
  8 + * @var common\models\Article $model
9 9 */
10 10  
11 11 $this->title = $model->lang->title;
12 12 $this->params[ 'breadcrumbs' ][] = [
13   - 'label' => \Yii::t('app', 'Articles'),
  13 + 'label' => \Yii::t('app', 'Article'),
14 14 'url' => [ 'index' ],
15 15 ];
16 16 $this->params[ 'breadcrumbs' ][] = $this->title;
17 17 ?>
18   -<div class="articles-view">
  18 +<div class="article-view">
19 19 <h1><?= Html::encode($this->title) ?></h1>
20 20 <p>
21 21 <?= Html::a(\Yii::t('app', 'Update'), [
... ... @@ -37,7 +37,7 @@
37 37 'model' => $model,
38 38 'attributes' => [
39 39 'id',
40   - 'date:date',
  40 + 'created_at:date',
41 41 'lang.title',
42 42 'lang.body:html',
43 43 'imageUrl:image',
... ...
backend/views/layouts/main-sidebar.php
... ... @@ -117,8 +117,8 @@ use yii\widgets\Menu;
117 117 [
118 118 'label' => 'Статьи',
119 119 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-pencil"></i> <span>{label}</span></a>',
120   - 'url' => ['/articles/index'],
121   - 'options' => ['class'=>\Yii::$app->user->can('articles') ? '' :'hide'],
  120 + 'url' => ['/article/index'],
  121 + 'options' => ['class'=>\Yii::$app->user->can('article') ? '' :'hide'],
122 122 ],
123 123 [
124 124 'label' => 'Акции',
... ...
common/behaviors/NotifyBehavior.php
... ... @@ -2,7 +2,7 @@
2 2  
3 3 namespace common\behaviors;
4 4  
5   - use common\models\Articles;
  5 + use common\models\Article;
6 6 use common\modules\comment\models\CommentModel;
7 7 use common\modules\product\models\Product;
8 8 use common\widgets\Mailer;
... ... @@ -53,15 +53,15 @@
53 53 * @todo Change that statements
54 54 */
55 55 if($model::className() == Product::className()) {
56   - $url .= '/product/'.$model->alias.'#artbox-comment';
57   - } elseif($model::className() == Articles::className()) {
58   - $url .= '/blog/'.$model->translit.'#artbox-comment';
  56 + $url .= '/product/' . $model->alias . '#artbox-comment';
  57 + } elseif($model::className() == Article::className()) {
  58 + $url .= '/blog/' . $model->translit . '#artbox-comment';
59 59 }
60 60 $mailer = Mailer::widget([
61 61 'type' => 'comment_notify',
62 62 'params' => [
63   - 'model' => $model,
64   - 'url' => $url,
  63 + 'model' => $model,
  64 + 'url' => $url,
65 65 'comment' => $owner,
66 66 ],
67 67 'subject' => 'Ваш комментарий опубликован',
... ...
common/behaviors/RatingBehavior.php
... ... @@ -2,7 +2,7 @@
2 2  
3 3 namespace common\behaviors;
4 4  
5   - use common\models\Articles;
  5 + use common\models\Article;
6 6 use common\modules\comment\models\CommentModel;
7 7 use common\modules\product\models\Product;
8 8 use yii\base\Behavior;
... ... @@ -31,7 +31,7 @@
31 31 * @var CommentModel $owner
32 32 */
33 33 $owner = $this->owner;
34   - if($owner->entity == Product::className() || $owner->entity == Articles::className()) {
  34 + if($owner->entity == Product::className() || $owner->entity == Article::className()) {
35 35 $entity = $owner->entity;
36 36 $model = $entity::findOne($owner->entity_id);
37 37 if($model != NULL) {
... ...
common/models/Articles.php renamed to common/models/Article.php
... ... @@ -4,8 +4,8 @@
4 4  
5 5 use common\modules\language\behaviors\LanguageBehavior;
6 6 use common\behaviors\SaveImgBehavior;
7   - use common\modules\comment\models\CommentModel;
8 7 use Yii;
  8 + use yii\behaviors\TimestampBehavior;
9 9 use yii\db\ActiveQuery;
10 10 use yii\db\ActiveRecord;
11 11 use yii\web\Request;
... ... @@ -13,16 +13,15 @@
13 13 /**
14 14 * This is the model class for table "articles".
15 15 * @property integer $id
16   - * @property integer $date
  16 + * @property integer $created_at
17 17 * @property string $image
18   - * @property ArticleToRating $averageRating
19 18 * * From language behavior *
20   - * @property ArticlesLang $lang
21   - * @property ArticlesLang[] $langs
22   - * @property ArticlesLang $object_lang
  19 + * @property ArticleLang $lang
  20 + * @property ArticleLang[] $langs
  21 + * @property ArticleLang $object_lang
23 22 * @property string $ownerKey
24 23 * @property string $langKey
25   - * @property ArticlesLang[] $model_langs
  24 + * @property ArticleLang[] $model_langs
26 25 * @property bool $transactionStatus
27 26 * @method string getOwnerKey()
28 27 * @method void setOwnerKey( string $value )
... ... @@ -30,7 +29,7 @@
30 29 * @method void setLangKey( string $value )
31 30 * @method ActiveQuery getLangs()
32 31 * @method ActiveQuery getLang( integer $language_id )
33   - * @method ArticlesLang[] generateLangs()
  32 + * @method ArticleLang[] generateLangs()
34 33 * @method void loadLangs( Request $request )
35 34 * @method bool linkLangs()
36 35 * @method bool saveLangs()
... ... @@ -43,7 +42,7 @@
43 42 * @method string|null getImageUrl( int $field )
44 43 * * End SaveImgBehavior
45 44 */
46   - class Articles extends ActiveRecord
  45 + class Article extends ActiveRecord
47 46 {
48 47  
49 48 /**
... ... @@ -51,7 +50,7 @@
51 50 */
52 51 public static function tableName()
53 52 {
54   - return 'articles';
  53 + return 'article';
55 54 }
56 55  
57 56 /**
... ... @@ -65,13 +64,17 @@
65 64 'fields' => [
66 65 [
67 66 'name' => 'image',
68   - 'directory' => 'articles',
  67 + 'directory' => 'article',
69 68 ],
70 69 ],
71 70 ],
72 71 'language' => [
73 72 'class' => LanguageBehavior::className(),
74 73 ],
  74 + [
  75 + 'class' => TimestampBehavior::className(),
  76 + 'updatedAtAttribute' => false,
  77 + ],
75 78 ];
76 79 }
77 80  
... ... @@ -82,18 +85,11 @@
82 85 {
83 86 return [
84 87 [
85   - [ 'date' ],
86   - 'default',
87   - 'value' => function() {
88   - return time();
89   - },
90   - ],
91   - [
92   - [ 'date' ],
  88 + [ 'created_at' ],
93 89 'safe',
94 90 ],
95 91 [
96   - [ 'date' ],
  92 + [ 'created_at' ],
97 93 'filter',
98 94 'filter' => function($value) {
99 95 return strtotime($value) ? : time();
... ... @@ -108,53 +104,10 @@
108 104 public function attributeLabels()
109 105 {
110 106 return [
111   - 'id' => Yii::t('app', 'ID'),
112   - 'date' => Yii::t('app', 'Date'),
113   - 'image' => Yii::t('app', 'Image'),
114   - 'imageUrl' => Yii::t('app', 'Image'),
  107 + 'id' => Yii::t('app', 'ID'),
  108 + 'created_at' => Yii::t('app', 'Date'),
  109 + 'image' => Yii::t('app', 'Image'),
  110 + 'imageUrl' => Yii::t('app', 'Image'),
115 111 ];
116 112 }
117   -
118   - public function recalculateRating()
119   - {
120   - /**
121   - * @var ArticleToRating $averageRating
122   - */
123   - $average = $this->getComments()
124   - ->joinWith('rating')
125   - ->select([ 'average' => 'avg(artbox_comment_rating.value)::float' ])
126   - ->scalar();
127   - if(!$average) {
128   - $average = 0;
129   - }
130   - $averageRating = $this->averageRating;
131   - if(!empty( $averageRating )) {
132   - $averageRating->value = $average;
133   - } else {
134   - $averageRating = new ArticleToRating([
135   - 'articles_id' => $this->id,
136   - 'value' => $average,
137   - ]);
138   - }
139   - if($averageRating->save()) {
140   - return true;
141   - } else {
142   - return false;
143   - }
144   - }
145   -
146   - public function getComments()
147   - {
148   - return $this->hasMany(CommentModel::className(), [ 'entity_id' => 'id' ])
149   - ->where([
150   - 'artbox_comment.entity' => self::className(),
151   - 'artbox_comment.status' => CommentModel::STATUS_ACTIVE,
152   - 'artbox_comment.artbox_comment_pid' => NULL,
153   - ]);
154   - }
155   -
156   - public function getAverageRating()
157   - {
158   - return $this->hasOne(ArticleToRating::className(), [ 'articles_id' => 'id' ]);
159   - }
160 113 }
... ...
common/models/ArticlesLang.php renamed to common/models/ArticleLang.php
... ... @@ -7,8 +7,8 @@
7 7 use yii\db\ActiveRecord;
8 8  
9 9 /**
10   - * This is the model class for table "articles_lang".
11   - * @property integer $articles_id
  10 + * This is the model class for table "article_lang".
  11 + * @property integer $article_id
12 12 * @property integer $language_id
13 13 * @property string $title
14 14 * @property string $body
... ... @@ -19,16 +19,16 @@
19 19 * @property string $h1
20 20 * @property string $body_preview
21 21 * @property string $alias
22   - * @property Articles $articles
  22 + * @property Article $article
23 23 * @property Language $language
24 24 */
25   - class ArticlesLang extends ActiveRecord
  25 + class ArticleLang extends ActiveRecord
26 26 {
27 27  
28 28 public static function primaryKey()
29 29 {
30 30 return [
31   - 'articles_id',
  31 + 'article_id',
32 32 'language_id',
33 33 ];
34 34 }
... ... @@ -38,7 +38,7 @@
38 38 */
39 39 public static function tableName()
40 40 {
41   - return 'articles_lang';
  41 + return 'article_lang';
42 42 }
43 43  
44 44 public function behaviors()
... ... @@ -88,22 +88,22 @@
88 88 ],
89 89 [
90 90 [
91   - 'articles_id',
  91 + 'article_id',
92 92 'language_id',
93 93 ],
94 94 'unique',
95 95 'targetAttribute' => [
96   - 'articles_id',
  96 + 'article_id',
97 97 'language_id',
98 98 ],
99   - 'message' => 'The combination of Articles ID and Language ID has already been taken.',
  99 + 'message' => 'The combination of Article ID and Language ID has already been taken.',
100 100 ],
101 101 [
102   - [ 'articles_id' ],
  102 + [ 'article_id' ],
103 103 'exist',
104 104 'skipOnError' => true,
105   - 'targetClass' => Articles::className(),
106   - 'targetAttribute' => [ 'articles_id' => 'id' ],
  105 + 'targetClass' => Article::className(),
  106 + 'targetAttribute' => [ 'article_id' => 'id' ],
107 107 ],
108 108 [
109 109 [ 'language_id' ],
... ... @@ -121,7 +121,7 @@
121 121 public function attributeLabels()
122 122 {
123 123 return [
124   - 'articles_id' => Yii::t('app', 'lang-Articles ID'),
  124 + 'article_id' => Yii::t('app', 'lang-Article ID'),
125 125 'language_id' => Yii::t('app', 'lang-Language ID'),
126 126 'title' => Yii::t('app', 'lang-Title'),
127 127 'body' => Yii::t('app', 'lang-Body'),
... ... @@ -137,9 +137,9 @@
137 137 /**
138 138 * @return \yii\db\ActiveQuery
139 139 */
140   - public function getArticles()
  140 + public function getArticle()
141 141 {
142   - return $this->hasOne(Articles::className(), [ 'id' => 'articles_id' ])
  142 + return $this->hasOne(Article::className(), [ 'id' => 'article_id' ])
143 143 ->inverseOf('langs');
144 144 }
145 145  
... ...
common/models/ArticlesSearch.php renamed to common/models/ArticleSearch.php
... ... @@ -6,9 +6,9 @@
6 6 use yii\data\ActiveDataProvider;
7 7  
8 8 /**
9   - * ArticlesSearch represents the model behind the search form about `common\models\Articles`.
  9 + * ArticleSearch represents the model behind the search form about `common\models\Article`.
10 10 */
11   - class ArticlesSearch extends Articles
  11 + class ArticleSearch extends Article
12 12 {
13 13  
14 14 public $title;
... ... @@ -53,8 +53,8 @@
53 53 */
54 54 public function search($params)
55 55 {
56   - $query = Articles::find()
57   - ->joinWith('lang', true, 'INNER JOIN');
  56 + $query = Article::find()
  57 + ->joinWith('lang');
58 58  
59 59 // add conditions that should always apply here
60 60  
... ... @@ -64,8 +64,8 @@
64 64 'attributes' => [
65 65 'id',
66 66 'title' => [
67   - 'asc' => [ 'articles_lang.title' => SORT_ASC ],
68   - 'desc' => [ 'articles_lang.title' => SORT_DESC ],
  67 + 'asc' => [ 'article_lang.title' => SORT_ASC ],
  68 + 'desc' => [ 'article_lang.title' => SORT_DESC ],
69 69 ],
70 70 ],
71 71 ],
... ... @@ -86,7 +86,7 @@
86 86  
87 87 $query->andFilterWhere([
88 88 'like',
89   - 'articles_lang.title',
  89 + 'article_lang.title',
90 90 $this->title,
91 91 ]);
92 92  
... ...
common/models/ArticleToRating.php deleted
1   -<?php
2   -
3   - namespace common\models;
4   -
5   - use yii\db\ActiveRecord;
6   -
7   - /**
8   - * This is the model class for table "article_to_rating".
9   - * @property integer $article_to_rating_id
10   - * @property integer $articles_id
11   - * @property double $value
12   - * @property Articles $articles
13   - */
14   - class ArticleToRating extends ActiveRecord
15   - {
16   -
17   - /**
18   - * @inheritdoc
19   - */
20   - public static function tableName()
21   - {
22   - return 'article_to_rating';
23   - }
24   -
25   - /**
26   - * @inheritdoc
27   - */
28   - public function rules()
29   - {
30   - return [
31   - [
32   - [ 'articles_id' ],
33   - 'required',
34   - ],
35   - [
36   - [ 'articles_id' ],
37   - 'integer',
38   - ],
39   - [
40   - [ 'value' ],
41   - 'number',
42   - ],
43   - [
44   - [ 'articles_id' ],
45   - 'exist',
46   - 'skipOnError' => true,
47   - 'targetClass' => Articles::className(),
48   - 'targetAttribute' => [ 'articles_id' => 'id' ],
49   - ],
50   - ];
51   - }
52   -
53   - /**
54   - * @inheritdoc
55   - */
56   - public function attributeLabels()
57   - {
58   - return [
59   - 'article_to_rating_id' => 'Article To Rating ID',
60   - 'articles_id' => 'Articles ID',
61   - 'value' => 'Value',
62   - ];
63   - }
64   -
65   - /**
66   - * @return \yii\db\ActiveQuery
67   - */
68   - public function getArticles()
69   - {
70   - return $this->hasOne(Articles::className(), [ 'id' => 'articles_id' ]);
71   - }
72   - }
console/controllers/SiteMapController.php
... ... @@ -2,22 +2,16 @@
2 2  
3 3 namespace console\controllers;
4 4  
5   -use common\models\Articles;
  5 +use common\models\Article;
6 6 use common\models\Seo;
7   -use common\modules\product\helpers\FilterHelper;
8   -use common\modules\product\models\Brand;
9 7 use common\modules\product\models\Category;
10 8 use common\modules\product\models\Product;
11 9 use frontend\models\ProductFrontendSearch;
12 10 use Yii;
13 11 use common\models\Page;
14   -use common\models\PageSearch;
15 12 use yii\helpers\ArrayHelper;
16 13 use yii\helpers\Url;
17 14 use yii\console\Controller;
18   -use yii\web\NotFoundHttpException;
19   -use yii\filters\VerbFilter;
20   -use developeruz\db_rbac\behaviors\AccessBehavior;
21 15 /**
22 16 * PageController implements the CRUD actions for Page model.
23 17 */
... ... @@ -71,7 +65,7 @@ class SiteMapController extends Controller
71 65  
72 66  
73 67 public function getArticles(){
74   - return Articles::find()->all();
  68 + return Article::find()->all();
75 69 }
76 70  
77 71 public function getBrands($category){
... ...
console/migrations/m160926_122456_create_articles_lang_table.php
... ... @@ -3,9 +3,9 @@
3 3 use yii\db\Migration;
4 4  
5 5 /**
6   - * Handles the creation for table `articles_lang`.
  6 + * Handles the creation for table `article_lang`.
7 7 */
8   - class m160926_122456_create_articles_lang_table extends Migration
  8 + class m160926_122456_create_article_lang_table extends Migration
9 9 {
10 10  
11 11 /**
... ... @@ -13,8 +13,8 @@
13 13 */
14 14 public function up()
15 15 {
16   - $this->createTable('articles_lang', [
17   - 'articles_id' => $this->integer()
  16 + $this->createTable('article_lang', [
  17 + 'article_id' => $this->integer()
18 18 ->notNull(),
19 19 'language_id' => $this->integer()
20 20 ->notNull(),
... ... @@ -30,12 +30,12 @@
30 30 'body_preview' => $this->text(),
31 31 ]);
32 32  
33   - $this->createIndex('articles_lang_article_language_key', 'articles_lang', [
34   - 'articles_id',
  33 + $this->createIndex('article_lang_article_language_key', 'article_lang', [
  34 + 'article_id',
35 35 'language_id',
36 36 ], true);
37 37  
38   - $this->addForeignKey('articles_fk', 'articles_lang', 'articles_id', 'articles', 'id', 'CASCADE', 'CASCADE');
  38 + $this->addForeignKey('article_fk', 'article_lang', 'article_id', 'article', 'id', 'CASCADE', 'CASCADE');
39 39 $this->addForeignKey('language_fk', 'articles_lang', 'language_id', 'language', 'language_id', 'RESTRICT', 'CASCADE');
40 40 }
41 41  
... ... @@ -44,6 +44,6 @@
44 44 */
45 45 public function down()
46 46 {
47   - $this->dropTable('articles_lang');
  47 + $this->dropTable('article_lang');
48 48 }
49 49 }
... ...
... ... @@ -82,4 +82,10 @@ Fix по существующему:
82 82 6. backend/config/bootstrap.php
83 83 7. Сделать behavior для комментов/рейтинга
84 84 8. Category->setTaxGroup() ???
85   -9. Избавиться от Mailer widget
86 85 \ No newline at end of file
  86 +9. Избавиться от Mailer widget
  87 +10. На статьях включить клиентскую валидацию
  88 +11. Спросить у Виталика или нужно вернуть модуль file (используется elfinder ?)
  89 +
  90 +
  91 +Комментарии (создать поведение):
  92 +1. Добавить к Article с рейтингом
87 93 \ No newline at end of file
... ...