Пример #1
0
 /**
  * Просмотр карточки документа
  * @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]);
 }
Пример #2
0
 /**
  * Лайк документа
  * @param $id - ID документа
  * Отображает количество лайков статьи
  */
 public function actionLike($id)
 {
     Like::check($id);
     $likes = Like::getAll($id);
     echo $likes ? $likes[0]->count : 0;
 }
Пример #3
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;
 }