OphTrOperationbooking_Operation_Sequence::getDateListForMonths PHP Метод

getDateListForMonths() публичный Метод

public getDateListForMonths ( $num_months )
    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;
    }