Blame view

frontend/controllers/BookController.php 3.16 KB
8f340aa7   Anastasia   - main page
1
2
3
4
5
6
7
8
9
10
11
  <?php
      /**
       * Created by PhpStorm.
       * User: stes
       * Date: 08.06.18
       * Time: 12:39
       */
      
      namespace frontend\controllers;
      
      use common\models\Book;
146493f1   Anastasia   - catalog books
12
      use yii\data\ActiveDataProvider;
8f340aa7   Anastasia   - main page
13
14
      use yii\web\Controller;
      use yii\web\UploadedFile;
146493f1   Anastasia   - catalog books
15
      
8f340aa7   Anastasia   - main page
16
17
18
19
20
21
22
23
24
25
      class BookController extends Controller
      {
          /**
           * @inheritdoc
           */
          public function beforeAction($action)
          {
              if ($action->id == 'add' or $action->id == 'edit') {
                  $this->enableCsrfValidation = false;
              }
146493f1   Anastasia   - catalog books
26
              
8f340aa7   Anastasia   - main page
27
28
              return parent::beforeAction($action);
          }
146493f1   Anastasia   - catalog books
29
30
31
          
          public function actionAdd()
          {
8f340aa7   Anastasia   - main page
32
              /**
146493f1   Anastasia   - catalog books
33
               * @var \common\models\Author $user ;
8f340aa7   Anastasia   - main page
34
35
36
37
38
39
40
               */
              $user = \Yii::$app->user->identity;
              if (\Yii::$app->user->isGuest) {
                  $this->redirect([ 'site/index' ]);
              }
              $model = new Book();
              if (\Yii::$app->request->isPost) {
8f340aa7   Anastasia   - main page
41
42
43
                  if ($model->load(\Yii::$app->request->post(), '') and $model->validate()) {
                      $model->author_id = $user->id;
                      $model->status = $model::STATUS_MODERATION;
146493f1   Anastasia   - catalog books
44
                      return ( $model->save() && $model->saveImage(UploadedFile::getInstanceByName('file')) );
8f340aa7   Anastasia   - main page
45
46
47
                  } else {
                      return false;
                  }
146493f1   Anastasia   - catalog books
48
                  
8f340aa7   Anastasia   - main page
49
              }
146493f1   Anastasia   - catalog books
50
51
52
53
54
55
              return $this->render(
                  'add',
                  [
                      'book' => [],
                  ]
              );
8f340aa7   Anastasia   - main page
56
57
          }
          
146493f1   Anastasia   - catalog books
58
59
          public function actionEdit($id)
          {
8f340aa7   Anastasia   - main page
60
              $model = Book::findOne($id);
146493f1   Anastasia   - catalog books
61
62
              if ($model->author_id !== \Yii::$app->user->getId()) {
                  return $this->redirect([ 'site/index' ]);
8f340aa7   Anastasia   - main page
63
64
              }
              if (\Yii::$app->request->isPost) {
146493f1   Anastasia   - catalog books
65
                  
8f340aa7   Anastasia   - main page
66
                  if ($model->load(\Yii::$app->request->post(), '') and $model->validate()) {
146493f1   Anastasia   - catalog books
67
                      return ( $model->save() && $model->saveImage(UploadedFile::getInstanceByName('file')) );
8f340aa7   Anastasia   - main page
68
69
70
                  } else {
                      return false;
                  }
146493f1   Anastasia   - catalog books
71
                  
8f340aa7   Anastasia   - main page
72
              }
146493f1   Anastasia   - catalog books
73
74
75
76
77
78
              return $this->render(
                  'add',
                  [
                      'book' => $model->attributes,
                  ]
              );
8f340aa7   Anastasia   - main page
79
80
          }
          
146493f1   Anastasia   - catalog books
81
82
83
84
85
          public function actionIndex()
          {
              $dataProvider = new ActiveDataProvider(
                  [
                      'query'      => Book::find()
82d2fae2   Anastasia   - add alias to books
86
                                          ->with(['author', 'alias'])
146493f1   Anastasia   - catalog books
87
88
89
90
91
92
93
94
95
96
97
98
99
                                          ->where([ 'status' => Book::STATUS_ACTIVE ]),
                      'pagination' => [
                          'pageSize' => 10,
                      ],
                  ]
              );
              return $this->render(
                  'index',
                  [
                      'dataProvider' => $dataProvider,
                  ]
              );
          }
8f340aa7   Anastasia   - main page
100
          
146493f1   Anastasia   - catalog books
101
          public function actionView($id){
95f0b726   Anastasia   - comment answer ...
102
              $model = Book::find()->with(['author', 'activeComments']) ->where(['id' => $id])->one();
146493f1   Anastasia   - catalog books
103
             return $this->render('view', ['model' => $model]);
8f340aa7   Anastasia   - main page
104
105
          }
      }