/** * Displays a grid containing all Objects of this API. * @param integer $id * @param boolean $propose * @param boolean $followed * @param boolean $followersNotified * @return mixed */ public function actionView($id, $propose = false, $followed = null, $followersNotified = null) { $searchModel = new ObjectsSearch(); $dataProvider = $searchModel->search(['ObjectsSearch' => ['api' => $id]]); $commentSearchModel = new CommentsSearch(); $commentsProvider = $commentSearchModel->findCommentsNotReplies(['CommentsSearch' => ['api' => $id]]); $repliesProvider = $commentSearchModel->findReplies(['CommentsSearch' => ['api' => $id]]); $repliesProvider->setPagination(false); $commentsModel = new Comments(); $commentsModel->api = $id; if ($commentsModel->load(Yii::$app->request->post())) { $commentsModel->save(); } $myId = \Yii::$app->user->id; $followUserAPI = FollowUserApi::findOne(['follower' => $myId, 'api' => $id]); $doIFollow = false; if ($followUserAPI) { $doIFollow = true; $followUserAPI->last_seen = date('Y-m-d H:i:s'); $followUserAPI->changed_name = false; $followUserAPI->changed_descr = false; $followUserAPI->changed_version = false; $followUserAPI->changed_proposed = false; $followUserAPI->changed_published = false; $followUserAPI->changed_privacy = false; $followUserAPI->changed_upvotes = 0; $followUserAPI->changed_downvotes = 0; $followUserAPI->changed_objects_number = 0; $followUserAPI->save(); } $followers = FollowUserApi::find()->where(['api' => $id])->count(); $this->view->params['followers_notified'] = $followersNotified; $this->view->params['propose'] = $propose; $this->view->params['followed'] = $followed; // Elastic Search Query for Recommendations $esq = new ElasticSearchQuery(); $api = $this->findModel($id); $esq->setApi($api); $esq->MakeJSON(); $recommend = $esq->Build(); return $this->render('view', ['model' => $this->findModel($id), 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'doIFollow' => $doIFollow, 'followers' => $followers, 'commentsProvider' => $commentsProvider, 'repliesProvider' => $repliesProvider, 'commentsModel' => $commentsModel, 'recommend' => $recommend]); }
/** * Clears Up all API-related notifications * @param integer $id */ public function clearAllAPIChangesIFollow($id) { $query = FollowUserApi::find(['follower' => $id, ['or', ['changed_name' => 1, 'changed_descr' => 1, ['not', 'changed_upvotes', 0], ['not', 'changed_downvotes', 0], 'changed_proposed' => 1, 'changed_published' => 1, 'changed_privacy' => 1, ['not', 'changed_objects_number', 0]]]])->all(); foreach ($query as $fUA) { $fUA->changed_name = 0; $fUA->changed_upvotes = 0; $fUA->changed_downvotes = 0; $fUA->changed_proposed = 0; $fUA->changed_published = 0; $fUA->changed_privacy = 0; $fUA->changed_objects_number = 0; $fUA->update(); } }