public function run() { $tipsModel = ArrayHelper::map(RightLink::find()->where(['type' => RightLink::RIGHT_LINK_TYPE_TIPS])->all(), 'content', 'title'); $tips = array_rand($tipsModel); $recommendResources = ArrayHelper::map(RightLink::find()->where(['type' => RightLink::RIGHT_LINK_TYPE_RSOURCES])->all(), 'title', 'url'); $links = RightLink::find()->where(['type' => RightLink::RIGHT_LINK_TYPE_LINKS])->all(); $sameTopics = []; if ($this->node) { $sameTopics = ArrayHelper::map(Topic::find()->where('status >= :status', [':status' => Topic::STATUS_ACTIVE])->andWhere(['post_meta_id' => $this->node->id, 'type' => 'topic'])->limit(200)->all(), 'title', function ($e) { return Url::to(['/topic/default/view', 'id' => $e->id]); }); if (count($sameTopics) > 10) { $sameTopics = Arr::arrayRandomAssoc($sameTopics, 10); } if ($this->type == 'view' && (in_array($this->node->alias, params('donateNode')) || array_intersect(explode(',', $this->tags), params('donateTag')))) { $donate = Donate::findOne(['user_id' => Topic::findOne(['id' => request()->get('id')])->user_id, 'status' => Donate::STATUS_ACTIVE]); } } return $this->render('topicSidebar', ['category' => PostMeta::blogCategory(), 'config' => ['type' => $this->type, 'node' => $this->node], 'sameTopics' => $sameTopics, 'tips' => $tips, 'donate' => isset($donate) ? $donate : [], 'recommendResources' => $recommendResources, 'links' => $links]); }
/** * 话题详细页 * @param integer $id * @return mixed */ public function actionView($id) { $model = Topic::findTopic($id); //登录才能访问的节点内容 if (\Yii::$app->user->isGuest && in_array($model->category->alias, params('loginNode'))) { $this->flash('查看本主题需要登录!', 'warning'); return $this->redirect(['/site/login']); } $dataProvider = new ActiveDataProvider(['query' => PostComment::findCommentList($id), 'pagination' => ['pageSize' => self::PAGE_SIZE], 'sort' => ['defaultOrder' => ['created_at' => SORT_ASC]]]); // 文章浏览次数 Topic::updateAllCounters(['view_count' => 1], ['id' => $id]); //内容页面打赏 if (in_array($model->category->alias, params('donateNode')) || array_intersect(explode(',', $model->tags), params('donateTag'))) { $donate = Donate::findOne(['user_id' => $model->user_id, 'status' => Donate::STATUS_ACTIVE]); } /** @var User $user */ $user = Yii::$app->user->identity; $admin = $user && ($user->isAdmin($user->username) || $user->isSuperAdmin($user->username)) ? true : false; return $this->render('view', ['model' => $model, 'dataProvider' => $dataProvider, 'comment' => new PostComment(), 'admin' => $admin, 'donate' => isset($donate) ? $donate : []]); }
/** * 打赏设置 * @return mixed */ public function actionDonate() { /** @var Donate $model */ $model = Donate::findOne(['user_id' => Yii::$app->user->id]) ?: new Donate(['scenario' => 'create']); $oldQrCode = $model->qr_code; $model->description ?: ($model->description = '如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。'); if ($model->load(Yii::$app->request->post())) { if ($image = $model->uploadImage()) { \yii\helpers\FileHelper::createDirectory(\Yii::$app->basePath . \Yii::$app->params['qrCodePath']); $model->deleteImage(); $image->saveAs(\Yii::$app->basePath . \Yii::$app->params['qrCodePath'] . $model->qr_code); } if ($image === false && !empty($oldQrCode)) { $model->qr_code = $oldQrCode; } $model->user_id = Yii::$app->user->id; if ($model->save()) { Yii::$app->session->setFlash('success', '您的打赏信息修改成功'); } else { Yii::$app->session->setFlash('error', '您的打赏信息更新失败'); } return $this->refresh(); } return $this->render('donate', ['model' => $model]); }
<div class="col-lg-offset-3 col-lg-9"> <?php echo Html::img(Yii::$app->params['qrCodeUrl'] . $model->qr_code, ['class' => 'img']); ?> </div> </div> <?php } ?> <?php echo $form->field($model, 'qr_code')->fileInput(); ?> <br> <?php echo $form->field($model, 'status')->dropDownList(\frontend\modules\user\models\Donate::getStatuses()); ?> <?php echo $form->field($model, 'description')->textarea(['rows' => 2]); ?> <div class="form-group"> <div class="col-lg-offset-3 col-lg-9"> <?php echo Html::submitButton(Yii::t('app', 'Save'), ['class' => 'btn btn-success']); ?> <br> </div> </div>