Blame view

frontend/controllers/PageController.php 3.52 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();
6179ff51   Timur Kastemirov   language markup f...
56
57
      
              $this->view->params['model'] = $model;
a0e8d4e0   Alexey Boroda   first commit
58
              
8b510776   Alexey Boroda   -Made something t...
59
60
61
62
63
64
65
66
67
              if ($model->id == 6) {
                  return $this->render(
                      '@frontend/views/site/about',
                      [
                          'page_about' => $model,
                      ]
                  );
              }
              
a0e8d4e0   Alexey Boroda   first commit
68
69
70
              return $this->render(
                  'view',
                  [
c61dbbfb   Alexey Boroda   -Categories ready
71
72
73
74
75
                      'model'      => $model,
                      'categories' => $categories,
                      'body'       => $body,
                      'lefts'      => $lefts,
                      'images'     => $model->getImages(),
a0e8d4e0   Alexey Boroda   first commit
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
104
105
                  ]
              );
          }
          
          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');
              }
          }
      }