Blame view

frontend/controllers/BookController.php 4.03 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;
f51c0b7c   Anastasia   - support in card
12
      use common\models\Support;
146493f1   Anastasia   - catalog books
13
      use yii\data\ActiveDataProvider;
8f340aa7   Anastasia   - main page
14
15
      use yii\web\Controller;
      use yii\web\UploadedFile;
146493f1   Anastasia   - catalog books
16
      
8f340aa7   Anastasia   - main page
17
18
19
20
21
22
23
24
25
26
      class BookController extends Controller
      {
          /**
           * @inheritdoc
           */
          public function beforeAction($action)
          {
              if ($action->id == 'add' or $action->id == 'edit') {
                  $this->enableCsrfValidation = false;
              }
146493f1   Anastasia   - catalog books
27
              
8f340aa7   Anastasia   - main page
28
29
              return parent::beforeAction($action);
          }
146493f1   Anastasia   - catalog books
30
31
32
          
          public function actionAdd()
          {
8f340aa7   Anastasia   - main page
33
              /**
146493f1   Anastasia   - catalog books
34
               * @var \common\models\Author $user ;
8f340aa7   Anastasia   - main page
35
36
37
38
39
40
41
               */
              $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
42
43
44
                  if ($model->load(\Yii::$app->request->post(), '') and $model->validate()) {
                      $model->author_id = $user->id;
                      $model->status = $model::STATUS_MODERATION;
146493f1   Anastasia   - catalog books
45
                      return ( $model->save() && $model->saveImage(UploadedFile::getInstanceByName('file')) );
8f340aa7   Anastasia   - main page
46
47
48
                  } else {
                      return false;
                  }
146493f1   Anastasia   - catalog books
49
                  
8f340aa7   Anastasia   - main page
50
              }
146493f1   Anastasia   - catalog books
51
52
53
54
55
56
              return $this->render(
                  'add',
                  [
                      'book' => [],
                  ]
              );
8f340aa7   Anastasia   - main page
57
58
          }
          
146493f1   Anastasia   - catalog books
59
60
          public function actionEdit($id)
          {
8f340aa7   Anastasia   - main page
61
              $model = Book::findOne($id);
146493f1   Anastasia   - catalog books
62
63
              if ($model->author_id !== \Yii::$app->user->getId()) {
                  return $this->redirect([ 'site/index' ]);
8f340aa7   Anastasia   - main page
64
65
              }
              if (\Yii::$app->request->isPost) {
146493f1   Anastasia   - catalog books
66
                  
8f340aa7   Anastasia   - main page
67
                  if ($model->load(\Yii::$app->request->post(), '') and $model->validate()) {
146493f1   Anastasia   - catalog books
68
                      return ( $model->save() && $model->saveImage(UploadedFile::getInstanceByName('file')) );
8f340aa7   Anastasia   - main page
69
70
71
                  } else {
                      return false;
                  }
146493f1   Anastasia   - catalog books
72
                  
8f340aa7   Anastasia   - main page
73
              }
146493f1   Anastasia   - catalog books
74
75
76
77
78
79
              return $this->render(
                  'add',
                  [
                      'book' => $model->attributes,
                  ]
              );
8f340aa7   Anastasia   - main page
80
81
          }
          
146493f1   Anastasia   - catalog books
82
83
84
85
86
          public function actionIndex()
          {
              $dataProvider = new ActiveDataProvider(
                  [
                      'query'      => Book::find()
f51c0b7c   Anastasia   - support in card
87
88
89
90
91
92
                                          ->with(
                                              [
                                                  'author',
                                                  'alias',
                                              ]
                                          )
146493f1   Anastasia   - catalog books
93
94
95
96
97
98
99
100
101
102
103
104
105
                                          ->where([ 'status' => Book::STATUS_ACTIVE ]),
                      'pagination' => [
                          'pageSize' => 10,
                      ],
                  ]
              );
              return $this->render(
                  'index',
                  [
                      'dataProvider' => $dataProvider,
                  ]
              );
          }
8f340aa7   Anastasia   - main page
106
          
f51c0b7c   Anastasia   - support in card
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
          public function actionView($id)
          {
              $model = Book::find()
                           ->with(
                               [
                                   'author',
                                   'activeComments',
                               ]
                           )
                           ->where([ 'id' => $id ])
                           ->one();
              $support = Support::find()
                                ->where([ 'book_id' => $model->id ])
                                ->all();
              return $this->render(
                  'view',
                  [
                      'model'   => $model,
                      'support' => $support,
                  ]
              );
8f340aa7   Anastasia   - main page
128
          }
7a3112b5   Anastasia   add book succes ...
129
130
131
132
          
          public function actionSuccess(){
              return $this->render('success');
          }
8f340aa7   Anastasia   - main page
133
      }