public function run() { $feedId = \Yii::$app->request->get('feed_id'); /** @var FeedModel $feed */ $feed = FeedModel::findOne($feedId); if ($feed && $feed->user == \Yii::$app->user->identity->id) { NewModel::updateAll(['read' => 1], ['feed' => $feedId, 'read' => 0]); \Yii::$app->cache->delete($this->getNewsCacheKey($feedId)); \Yii::$app->cache->delete($this->getFeedsCacheKey()); } return $this->controller->redirect(['/user/news/list', 'feed_id' => $feedId, 'page' => 1]); }
public function run() { $feedId = \Yii::$app->request->get('feed_id'); /** @var FeedModel $feed */ $feed = FeedModel::findOne($feedId); if ($feed && $feed->user == \Yii::$app->user->identity->id) { NewModel::deleteAll(['feed' => $feedId]); $feed->delete(); $iconPath = FeedModel::getIconPath($feed->id); if (file_exists($iconPath)) { unlink($iconPath); } \Yii::$app->cache->delete($this->getNewsCacheKey($feedId)); \Yii::$app->cache->delete($this->getFeedsCacheKey()); } return $this->controller->redirect(['/user/news/list', 'feed_id' => '', 'page' => 1]); }
/** * @return \yii\db\ActiveQuery */ public function getNewsQuery() { return $this->hasMany(NewModel::className(), ['feed' => 'id']); }
private function getFeedsList() { if (!($feeds = \Yii::$app->cache->get($this->getFeedsCacheKey()))) { $noReadCountQuery = (new Query())->select('COUNT(id)')->from(NewModel::tableName())->where(new Expression('feed = feeds.id'))->andWhere(['read' => 0]); $feeds = (new Query())->select(['*', 'no_read_count' => $noReadCountQuery])->from(FeedModel::tableName())->where(['user' => \Yii::$app->user->identity->id])->all(); $this->injectFeedIcons($feeds); \Yii::$app->cache->set($this->getFeedsCacheKey(), $feeds); } return $feeds; }