public function getDateListForMonths($num_months)
{
$initialEndDate = strtotime('+' . $num_months . ' months');
$startDate = strtotime($this->start_date);
if ($this->end_date && strtotime($this->end_date) < $initialEndDate) {
$endDate = strtotime($this->end_date);
} else {
$endDate = $initialEndDate;
}
$dateList = array();
if ($this->interval_id == 1) {
$dateList[] = $this->start_date;
} elseif ($this->interval_id == 6 && $this->week_selection) {
$date = date('Y-m-d', $startDate);
$time = $startDate;
while (date('N', $time) != date('N', strtotime($this->start_date))) {
$date = date('Y-m-d', mktime(0, 0, 0, date('m', $time), date('d', $time) + 1, date('Y', $time)));
$time = strtotime($date);
}
$dateList = $this->getWeekOccurrences($this->weekday, $this->week_selection, $time, $endDate, $date, date('Y-m-d', $endDate));
} else {
$interval = $this->interval->getInteger($endDate);
$days = $interval / 24 / 60 / 60;
$nextStartDate = $startDate;
$date = date('Y-m-d', $nextStartDate);
$time = $nextStartDate;
while (date('N', $time) != date('N', strtotime($this->start_date))) {
$date = date('Y-m-d', mktime(0, 0, 0, date('m', $time), date('d', $time) + 1, date('Y', $time)));
$time = strtotime($date);
}
while ($time <= $endDate) {
$dateList[] = $date;
$date = date('Y-m-d', mktime(0, 0, 0, date('m', $time), date('d', $time) + $days, date('Y', $time)));
$time = strtotime($date);
}
}
return $dateList;
}