/**
  * Get calendar list heading.
  *
  * Parses calender date format and adapts to current display range.
  *
  * @since  3.0.0
  * @access private
  *
  * @return array
  */
 private function get_heading()
 {
     $calendar = $this->calendar;
     $start = Carbon::createFromTimestamp($this->start, $calendar->timezone);
     $end = Carbon::createFromTimestamp($this->end, $calendar->timezone);
     $date_format = $this->calendar->date_format;
     $date_order = simcal_get_date_format_order($date_format);
     if ($start->day == $end->day && $start->month == $end->month && $start->year == $end->year) {
         // Start and end on the same day.
         // e.g. 1 February 2020
         $large = $small = date_i18n($calendar->date_format, $this->start);
         if ($date_order['d'] !== false && $date_order['m'] !== false) {
             if ($date_order['m'] > $date_order['d']) {
                 if ($date_order['y'] !== false && $date_order['y'] > $date_order['m']) {
                     $small = date_i18n('Y, d M', $this->start);
                 } else {
                     $small = date_i18n('d M Y', $this->start);
                 }
             } else {
                 if ($date_order['y'] !== false && $date_order['y'] > $date_order['m']) {
                     $small = date_i18n('Y, M d', $this->start);
                 } else {
                     $small = date_i18n('M d Y', $this->start);
                 }
             }
         }
     } elseif ($start->month == $end->month && $start->year == $end->year) {
         // Start and end days on the same month.
         // e.g. August 2020
         if ($date_order['y'] === false) {
             // August.
             $large = $small = date_i18n('F', $this->start);
         } else {
             if ($date_order['y'] < $date_order['m']) {
                 // 2020 August.
                 $large = date_i18n('Y F', $this->start);
                 $small = date_i18n('Y M', $this->start);
             } else {
                 // August 2020.
                 $large = date_i18n('F Y', $this->start);
                 $small = date_i18n('M Y', $this->start);
             }
         }
     } elseif ($start->year == $end->year) {
         // Start and end days on months of the same year.
         // e.g. August - September 2020
         if ($date_order['y'] === false) {
             // August - September.
             $large = date_i18n('F', $this->start) . ' - ' . date_i18n('F', $this->end);
             $small = date_i18n('M', $this->start) . ' - ' . date_i18n('M', $this->end);
         } else {
             if ($date_order['y'] < $date_order['m']) {
                 // 2020, August - September.
                 $large = $small = date('Y', $this->start) . ', ';
                 $large .= date_i18n('F', $this->start) . ' - ' . date_i18n('F', $this->end);
                 $small .= date_i18n('M', $this->start) . ' - ' . date_i18n('M', $this->end);
             } else {
                 // August - September, 2020.
                 $large = date_i18n('F', $this->start) . ' - ' . date_i18n('F', $this->end) . ', ';
                 $small = date_i18n('M', $this->start) . ' - ' . date_i18n('M', $this->end) . ' ';
                 $year = date('Y', $this->start);
                 $large .= $year;
                 $small .= $year;
             }
         }
     } else {
         $large = $small = date('Y', $this->start) . ' - ' . date('Y', $this->end);
     }
     return array('small' => $small, 'large' => $large);
 }
 /**
  * Get calendar list heading.
  *
  * Parses calender date format and adapts to current display range.
  *
  * @since  3.0.0
  * @access private
  *
  * @return array
  */
 private function get_heading()
 {
     $calendar = $this->calendar;
     $start = Carbon::createFromTimestamp($calendar->start, $calendar->timezone);
     $end = Carbon::createFromTimestamp($this->end, $calendar->timezone);
     $date_format = $this->calendar->date_format;
     $date_order = simcal_get_date_format_order($date_format);
     if ($this->first_event !== 0) {
         $start = Carbon::createFromTimestamp($this->first_event, $calendar->timezone);
     }
     if ($this->last_event !== 0) {
         $end = Carbon::createFromTimestamp($this->last_event, $calendar->timezone);
     }
     $st = strtotime($start->toDateTimeString());
     $et = strtotime($end->toDateTimeString());
     // TODO Is logic here causing the weird "29 Oct, 2016" format when navigating?
     if ($start->day == $end->day && $start->month == $end->month && $start->year == $end->year) {
         // Start and end on the same day.
         // e.g. 1 February 2020
         $large = $small = date_i18n($calendar->date_format, $st);
         if ($date_order['d'] !== false && $date_order['m'] !== false) {
             if ($date_order['m'] > $date_order['d']) {
                 if ($date_order['y'] !== false && $date_order['y'] > $date_order['m']) {
                     $small = date_i18n('Y, d M', $st);
                 } else {
                     $small = date_i18n('d M Y', $st);
                 }
             } else {
                 if ($date_order['y'] !== false && $date_order['y'] > $date_order['m']) {
                     $small = date_i18n('Y, M d', $st);
                 } else {
                     $small = date_i18n('M d Y', $st);
                 }
             }
         }
     } elseif ($start->month == $end->month && $start->year == $end->year) {
         // Start and end days on the same month.
         // e.g. August 2020
         if ($date_order['y'] === false) {
             // August.
             $large = $small = date_i18n('F', $st);
         } else {
             if ($date_order['y'] < $date_order['m']) {
                 // 2020 August.
                 $large = date_i18n('Y F', $st);
                 $small = date_i18n('Y M', $st);
             } else {
                 // August 2020.
                 $large = date_i18n('F Y', $st);
                 $small = date_i18n('M Y', $st);
             }
         }
     } elseif ($start->year == $end->year) {
         // Start and end days on months of the same year.
         // e.g. August - September 2020
         if ($date_order['y'] === false) {
             // August - September.
             $large = date_i18n('F', $st) . ' - ' . date_i18n('F', $et);
             $small = date_i18n('M', $st) . ' - ' . date_i18n('M', $et);
         } else {
             if ($date_order['y'] < $date_order['m']) {
                 // 2020, August - September.
                 $large = $small = date('Y', $st) . ', ';
                 $large .= date_i18n('F', $st) . ' - ' . date_i18n('F', $et);
                 $small .= date_i18n('M', $st) . ' - ' . date_i18n('M', $et);
             } else {
                 // August - September, 2020.
                 $large = date_i18n('F', $st) . ' - ' . date_i18n('F', $et) . ', ';
                 $small = date_i18n('M', $st) . ' - ' . date_i18n('M', $et) . ' ';
                 $year = date('Y', $st);
                 $large .= $year;
                 $small .= $year;
             }
         }
     } else {
         $large = $small = date('Y', $st) . ' - ' . date('Y', $et);
     }
     return array('small' => $small, 'large' => $large);
 }