When\When::prepareDateElements PHP Method

prepareDateElements() protected method

If $limitRange is true, $this->count and $this->until will be set if not already set.
protected prepareDateElements ( $limitRange = true )
    protected function prepareDateElements($limitRange = true)
    {
        // if the interval isn't set, set it.
        if (!isset($this->interval)) {
            $this->interval = 1;
        }
        // must have a frequency
        if (!isset($this->freq) && Valid::byFreqValid($this->freq, $this->byweeknos, $this->byyeardays, $this->bymonthdays)) {
            throw new FrequencyRequired();
        }
        if ($limitRange && !isset($this->count)) {
            $this->count = $this->rangeLimit;
        }
        // "Similarly, if the BYMINUTE, BYHOUR, BYDAY,
        // BYMONTHDAY, or BYMONTH rule part were missing, the appropriate
        // minute, hour, day, or month would have been retrieved from the
        // "DTSTART" property."
        // if there is no startDate, make it now
        if (!$this->startDate) {
            $this->startDate = new \DateTime();
        }
        // the calendar repeats itself every 400 years, so if a date
        // doesn't exist for 400 years, I don't think it will ever
        // occur
        if ($limitRange && !isset($this->until)) {
            $this->until = new \DateTime();
            $this->until->add(new \DateInterval('P400Y'));
        }
        if (!isset($this->byminutes)) {
            $this->byminutes = array((int) $this->startDate->format('i'));
        }
        if (!isset($this->byhours)) {
            $this->byhours = array((int) $this->startDate->format('G'));
        }
        if (!isset($this->byseconds)) {
            $this->byseconds = array((int) $this->startDate->format('s'));
        }
        if (!isset($this->wkst)) {
            $this->wkst = "mo";
        }
        /*if (!isset($this->bydays))
          {
              $dayOfWeek = $this->startDate->format('l');
              $dayOfWeekAbr = strtolower(substr($dayOfWeek, 0, 2));
              $this->bydays = array($dayOfWeekAbr);
          }*/
        if ($this->freq === "monthly") {
            if (!isset($this->bymonthdays) && !isset($this->bydays)) {
                $this->bymonthdays = array((int) $this->startDate->format('j'));
            }
        }
        if ($this->freq === "weekly") {
            if (!isset($this->bymonthdays) && !isset($this->bydays)) {
                $dayOfWeek = $this->startDate->format('l');
                $dayOfWeekAbr = strtolower(substr($dayOfWeek, 0, 2));
                $this->bydays = array("0" . $dayOfWeekAbr);
            }
        }
        if ($this->freq === "yearly") {
            if (!isset($this->bydays) && !isset($this->bymonths) && !isset($this->bymonthdays) && !isset($this->byyeardays) && !isset($this->byweeknos) && !isset($this->bysetpos)) {
                $this->bymonth($this->startDate->format('n'));
            }
        }
    }