/** * Просмотр карточки документа * @param $id - ID документа * @return string * @throws NotFoundHttpException */ public function actionView($id) { $model = Document::findOne($id); if ($model == null) { throw new NotFoundHttpException(Yii::t('document', 'Запрашиваемая страница не найдена.')); } $views = Visit::getAll($model->id); // Считаем просмотры $likes = Like::getAll($model->id); // Считаем лайки return $this->render('view', ['model' => $model, 'views' => $views ? $views[0]->count : 0, 'likes' => $likes ? $likes[0]->count : 0]); }
/** * Лайк документа * @param $id - ID документа * Отображает количество лайков статьи */ public function actionLike($id) { Like::check($id); $likes = Like::getAll($id); echo $likes ? $likes[0]->count : 0; }
/** * Получить Лайки документа/ов * при shedule = flase - общее количество за все время * при shedule = true - количество лайков, сгруппированные по дням * @param null $document_ids - ID документа (-ов) * @param bool $shedule - включить расписание просмотров? * @return array|\yii\db\ActiveRecord[] - возвращает только дату, id документа, кол-во лайков */ public static function getAll($document_ids = null, $shedule = false) { $table = self::tableName(); $group_by = $shedule ? 'DATE(created_at)' : 'document_id'; if ($document_ids) { $ids = is_array($document_ids) ? implode(',', $document_ids) : $document_ids; $sql = 'SELECT date(created_at) as created_at , document_id, count(document_id) as count FROM `' . $table . '` where document_id IN (' . $ids . ') GROUP BY ' . $group_by; } else { $sql = 'SELECT date(created_at) as created_at , document_id, count(document_id) as count FROM `' . $table . '` GROUP BY ' . $group_by; } $model = Like::findBySql($sql)->all(); return $model; }