Example #1
0
 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();
 }