/**
  * Get recurring dates by interval or $intervalStartDateStamp and $countDates.
  * @param $intervalStartDateStamp
  * @param $intervalEndDateStamp
  * @param null $countDates
  * @return array|bool
  */
 public function getRecurringDates($intervalStartDateStamp, $intervalEndDateStamp, $countDates = NULL)
 {
     if (!($this->getRecurringTypeStepValue() && $this->getRecurringTypeValue())) {
         return false;
     }
     //Correct interval by recurring interval.
     $correctedInterval = $this->_getCorrectedRecurringInterval($intervalStartDateStamp, $intervalEndDateStamp);
     $intervalStartDateStamp = $correctedInterval["start_date_stamp"];
     $intervalEndDateStamp = $correctedInterval["end_date_stamp"];
     $currentRecurringStartDateStamp = $intervalStartDateStamp;
     $recurringDates = array();
     //Generate dates wile next recurring date belongs to interval.
     $countRecurringCycles = 0;
     while (!is_null($countDates) && $countRecurringCycles <= $countDates || $intervalStartDateStamp <= $currentRecurringStartDateStamp && $currentRecurringStartDateStamp <= $intervalEndDateStamp) {
         $countRecurringCycles++;
         $recurringDays = $this->_getRecurringDays($currentRecurringStartDateStamp);
         $recurringDates = array_merge($recurringDates, $recurringDays);
         $recurringTypeStep = $this->getRecurringTypeStepValue();
         switch ($this->getRecurringTypeValue()) {
             case self::REC_TYPE_DAY:
                 $currentRecurringStartDateStamp = SchedulerHelperDate::addDays($currentRecurringStartDateStamp, $recurringTypeStep);
                 break;
             case self::REC_TYPE_WEEK:
                 $currentRecurringStartDateStamp = SchedulerHelperDate::addWeeks($currentRecurringStartDateStamp, $recurringTypeStep);
                 break;
             case self::REC_TYPE_MONTH:
                 $currentRecurringStartDateStamp = SchedulerHelperDate::addMonths($currentRecurringStartDateStamp, $recurringTypeStep);
                 break;
             case self::REC_TYPE_YEAR:
                 $currentRecurringStartDateStamp = SchedulerHelperDate::addYears($currentRecurringStartDateStamp, $recurringTypeStep);
                 break;
         }
     }
     return !is_null($countDates) ? array_splice($recurringDates, count($recurringDates) - $countDates) : $recurringDates;
 }