[ 'class' => AccessControl::className(), 'except' => ['index'], 'rules' => [ [ 'allow' => true, 'roles' => ['@'], ], ], ], ]; } public function actionIndex($id) { $user = User::find()->where(['id' => $id])->one(); if (empty($user)) { throw new NotFoundHttpException('用户不存在!'); } $monthStart = strtotime(date('Y-m-1')); $monthEnd = strtotime("+1 month", $monthStart); $signDays = Sign::find()->where(['user_id' => $id])->andWhere(['between', 'sign_at', $monthStart, $monthEnd])->select(new Expression('FROM_UNIXTIME(sign_at, "%d")'))->column(); $daysNum = date('t'); $year = date('Y'); $month = date('m'); $weeks = []; $i = 0; foreach (range(1, $daysNum) as $day) { $w = date('w', strtotime($year . '-' . $month . '-' . $day)); $weeks[$i][$w]['day'] = $day; $weeks[$i][$w]['sign'] = in_array($day, $signDays); if ($w == 6) { $i++; } } return $this->render('index', [ 'user' => $user, 'weeks' => $weeks ]); } public function actionArticleList() { $query = Article::find()->my()->notTrashed(); $dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort' => [ 'defaultOrder' => [ 'id' => SORT_DESC ] ] ]); $pages = $dataProvider->getPagination(); $models = $dataProvider->getModels(); return $this->render('article/list', [ 'models' => $models, 'pages' => $pages, ]); } public function actionCreateArticle($module = 'base') { $model = new Article(['module' => $module]); $moduleClass = $model->findModuleClass(); $moduleModel = new $moduleClass(); if ($model->load(\Yii::$app->request->post()) && $moduleModel->load(\Yii::$app->request->post()) && $model->validate() && $moduleModel->validate() && $model->save(false)) { $moduleModel->id = $model->id; if ($moduleModel->save(false)) { \Yii::$app->session->setFlash('success', '发布成功!'); return $this->redirect(['create-article']); } } return $this->render('article/create', [ 'model' => $model, 'moduleModel' => $moduleModel ]); } public function actionUpdateArticle($id) { $model = Article::find()->where(['id' => $id])->my()->with('data')->one(); if ($model == null) { throw new NotFoundHttpException('文章不存在或者不属于你'); } $moduleModel = $model->data; if ( $model->load(\Yii::$app->request->post()) && $model->validate() && $moduleModel->load(\Yii::$app->request->post()) && $moduleModel->validate() && $model->save(false) && $moduleModel->save(false) ) { \Yii::$app->session->setFlash('success', '修改成功!'); return $this->redirect(['update-article', 'id' => $id]); } return $this->render('article/update', [ 'model' => $model, 'moduleModel' => $moduleModel ]); } public function actionDeleteArticle($id) { $model = Article::find()->where(['id' => $id])->my()->one(); if ($model == null) { throw new NotFoundHttpException('文章不存在或者不属于你'); } if ($model->softDelete()) { \Yii::$app->session->setFlash('success', '删除成功!'); return $this->redirect(['article-list']); } } public function actionFavourite() { $userId = \Yii::$app->user->id; $dataProvider = new ActiveDataProvider([ 'query' => Favourite::find()->where(['user_id' => $userId]), 'sort' => [ 'defaultOrder' => [ 'id' => SORT_DESC ] ] ]); return $this->render('favourite/index', [ 'dataProvider' => $dataProvider ]); } public function actionNotice() { Yii::$app->notify->readAll(); $dataProvider = Yii::$app->notify->getDataProvider(); return $this->render('notice/index', [ 'dataProvider' => $dataProvider ]); } }