Blame view

frontend/controllers/PageController.php 3.47 KB
a0e8d4e0   Alexey Boroda   first commit
1
2
3
4
5
  <?php
      namespace frontend\controllers;
      
      use artbox\core\components\SeoComponent;
      use artbox\core\models\Page;
c61dbbfb   Alexey Boroda   -Categories ready
6
7
      use artbox\core\models\PageCategory;
      use yii\db\ActiveQuery;
a0e8d4e0   Alexey Boroda   first commit
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
      use yii\web\Controller;
      use yii\web\NotFoundHttpException;
      use Yii;
      
      /**
       * Class PageController
       *
       * @package frontend\controllers
       */
      class PageController extends Controller
      {
          public function actionView($id)
          {
              $model = $this->findModel($id);
              
              /**
               * @var SeoComponent $seo
               */
              $seo = Yii::$app->get('seo');
              $seo->setModel($model->lang);
              
              if (strpos($model->lang->body, '[[gallery]]')) {
                  $splited = explode('[[gallery]]', $model->lang->body);
                  $body = array_shift($splited);
                  $lefts = implode('', $splited);
              } else {
                  $body = $model->lang->body;
                  $lefts = null;
              }
              
c61dbbfb   Alexey Boroda   -Categories ready
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
              $categories = PageCategory::find()
                                        ->with('lang')
                                        ->with(
                                            [
                                                'pages' => function (ActiveQuery $query) use ($id) {
                                                    $query->with('lang.alias');
                                                    $query->where(
                                                        [
                                                            'not',
                                                            [
                                                                'id' => $id,
                                                            ],
                                                        ]
                                                    );
                                                },
                                            ]
                                        )
                                        ->all();
a0e8d4e0   Alexey Boroda   first commit
56
              
8b510776   Alexey Boroda   -Made something t...
57
58
59
60
61
62
63
64
65
              if ($model->id == 6) {
                  return $this->render(
                      '@frontend/views/site/about',
                      [
                          'page_about' => $model,
                      ]
                  );
              }
              
a0e8d4e0   Alexey Boroda   first commit
66
67
68
              return $this->render(
                  'view',
                  [
c61dbbfb   Alexey Boroda   -Categories ready
69
70
71
72
73
                      'model'      => $model,
                      'categories' => $categories,
                      'body'       => $body,
                      'lefts'      => $lefts,
                      'images'     => $model->getImages(),
a0e8d4e0   Alexey Boroda   first commit
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
                  ]
              );
          }
          
          protected function findModel($id)
          {
              /**
               * @var Page         $model
               * @var SeoComponent $seo
               */
              $seo = \Yii::$app->get('seo');
              $model = Page::find()
                           ->where(
                               [
                                   'id' => $id,
                               ]
                           )
                           ->with('lang')
                           ->one();
              
              if (!empty($model)) {
                  if ($model->lang->alias_id !== $seo->aliasId) {
                      throw new NotFoundHttpException('Wrong language');
                  }
                  return $model;
              } else {
                  throw new NotFoundHttpException('Model not found');
              }
          }
      }