public static function getEventsByDateRange($start, $end, $cal_ids)
 {
     $evt_start = 'start>="' . $start . '"';
     $evt_end = 'start<="' . $end . '"';
     $rec_start = 'start<="' . $end . '"';
     $rec_end = '(last_occurrence>="' . $start . '" OR last_occurrence is null)';
     $events = array();
     $query = CalendarEvent::find()->andFilterWhere(['and', $evt_start, $evt_end])->orFilterWhere(['and', $rec_start, $rec_end])->andWhere(['calendar_id' => $cal_ids]);
     foreach ($query->all() as $evt) {
         $events = array_merge($events, self::getDatesByEventID($evt->id, $start, $end));
     }
     return $events;
 }