PageController::actionView()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 31
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 21
nc 2
nop 1
dl 0
loc 31
c 0
b 0
f 0
cc 2
rs 9.584
1
<?php
2
3
namespace app\controllers;
4
5
use Yii;
6
use yii\data\Pagination;
7
use yii\web\NotFoundHttpException;
8
use yii\filters\{AccessControl, VerbFilter};
9
use yii\helpers\ArrayHelper;
10
use app\models\{Page, Article};
11
12
/**
13
 * Class PageController
14
 *
15
 * @package app\controllers
16
 */
17
class PageController extends BaseController
18
{
19
    /**
20
     * @return array
21
     */
22
    public function behaviors()
23
    {
24
        return ArrayHelper::merge(parent::behaviors(), [
25
            'access' => [
26
                'class' => AccessControl::class,
27
                'rules' => [
28
                    [
29
                        'allow' => true,
30
                        'actions' => ['view'],
31
                        'roles' => ['?', '@'],
32
                    ],
33
                ],
34
            ],
35
            'verbs' => [
36
                'class' => VerbFilter::class,
37
                'actions' => [
38
                    'view' => ['get'],
39
                ],
40
            ],
41
        ]);
42
    }
43
44
    /**
45
     * Displays page with articles.
46
     * @param $alias
47
     * @return string
48
     * @throws NotFoundHttpException
49
     */
50
    public function actionView($alias)
51
    {
52
        $model = Page::find()->where([
53
            'alias' => $alias
54
        ])->andWhere([
55
            'active' => 1
56
        ])->one();
57
58
        if (null === $model) {
59
            throw new NotFoundHttpException('Page not fount with alias = '.$alias.'.');
60
        }
61
62
        $this->setMetaParams($model);
0 ignored issues
show
Bug introduced by
It seems like $model can also be of type array; however, parameter $model of app\controllers\BaseController::setMetaParams() does only seem to accept null|yii\db\ActiveRecord, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

62
        $this->setMetaParams(/** @scrutinizer ignore-type */ $model);
Loading history...
63
64
        $articlesQuery = Article::find()->where([
65
            'pageId' => $model->id
66
        ])->andWhere([
67
            'active' => 1
68
        ]);
69
70
        $pagination = new Pagination([
71
            'totalCount' => $articlesQuery->count(),
72
            'defaultPageSize' => Yii::$app->params['defaultPageSize']
73
        ]);
74
75
        return $this->render('view', [
76
            'model' => $model,
77
            'pagination' => $pagination,
78
            'articles' => $articlesQuery->offset($pagination->offset)
79
                ->limit($pagination->limit)
80
                ->all()
81
        ]);
82
    }
83
}
84