public function getAllEvents($lastIds = [], $lastDate = 0, $orderBy = self::ORDER_BY_DATE, $dateCreateType = self::DATE_CREATE_ALL, $userId = false, $limit = false) { $query = Event::find()->from(["t" => Event::tableName()])->andWhere('t.deleted = 0')->addSelect('*'); if ($lastDate != 0) { if ($dateCreateType == self::DATE_CREATE_AFTER) { $query = $query->andWhere('t.date >= :date', [':date' => $lastDate]); } else { $query = $query->andWhere('t.date <= :date', [':date' => $lastDate]); } if (!empty($lastIds)) { $query = $query->andWhere(['not in', 'id', $lastIds]); } } // Определяем сортировку if ($orderBy == self::ORDER_BY_ID) { $query = $query->orderBy('id DESC'); } elseif ($orderBy == self::ORDER_BY_DATE) { if ($dateCreateType == self::DATE_CREATE_AFTER) { $query = $query->orderBy('date ASC'); } else { $query = $query->orderBy('date DESC'); } } // Определяем за какой период будем показывать if (!empty($limit)) { $query = $query->limit((int) $limit); } elseif ($dateCreateType == self::DATE_CREATE_ALL) { $query = $query->limit(20); } elseif ($dateCreateType == self::DATE_CREATE_BEFORE) { $query = $query->andWhere('t.date <= :date', [':date' => time()])->limit(20); } elseif ($dateCreateType == self::DATE_CREATE_AFTER) { $query = $query->andWhere('t.date >= :date', [':date' => time()])->limit(20); } if (!empty($userId)) { $query = $query->andWhere('user_id = :userId', [':userId' => $userId]); } $query = $query->with(['tagEntity', 'tagEntity.tags']); return $query->all(); }