コード例 #1
0
 /**
  * Convert the event recurrence meta into a human readable string
  *
  * @param array $postId The recurring event
  *
  * @return The human readable string
  */
 public static function recurrenceToText($recurrence_rules = array(), $start_date)
 {
     $text = '';
     $custom_text = '';
     $occurrence_text = '';
     $recType = '';
     $recEndType = '';
     $recEndCount = '';
     $recCustomType = '';
     $recCustomInterval = null;
     $recCustomMonthNumber = null;
     $recCustomYearMonthNumber = null;
     $recCustomYearFilter = '';
     $recCustomYearMonth = '';
     $recCustomYearMonthDay = '';
     extract($recurrence_rules);
     if ($recType == 'Every Day') {
         $text = __('Every day', 'tribe-events-calendar-pro');
         $occurrence_text = sprintf(_n(' for %d day', ' for %d days', $recEndCount, 'tribe-events-calendar-pro'), $recEndCount);
         $custom_text = '';
     } elseif ($recType == 'Every Week') {
         $text = __('Every week', 'tribe-events-calendar-pro');
         $occurrence_text = sprintf(_n(' for %d week', ' for %d weeks', $recEndCount, 'tribe-events-calendar-pro'), $recEndCount);
     } elseif ($recType == 'Every Month') {
         $text = __('Every month', 'tribe-events-calendar-pro');
         $occurrence_text = sprintf(_n(' for %d month', ' for %d months', $recEndCount, 'tribe-events-calendar-pro'), $recEndCount);
     } elseif ($recType == 'Every Year') {
         $text = __('Every year', 'tribe-events-calendar-pro');
         $occurrence_text = sprintf(_n(' for %d year', ' for %d years', $recEndCount, 'tribe-events-calendar-pro'), $recEndCount);
     } elseif ($recType == 'Custom') {
         if ($recCustomType == 'Daily') {
             $text = $recCustomInterval == 1 ? __('Every day', 'tribe-events-calendar-pro') : sprintf(__('Every %d days', 'tribe-events-calendar-pro'), $recCustomInterval);
             $occurrence_text = sprintf(_n(', recurring %d time', ', recurring %d times', $recEndCount, 'tribe-events-calendar-pro'), $recEndCount);
         } elseif ($recCustomType == 'Weekly') {
             $text = $recCustomInterval == 1 ? __('Every week', 'tribe-events-calendar-pro') : sprintf(__('Every %d weeks', 'tribe-events-calendar-pro'), $recCustomInterval);
             $custom_text = sprintf(__(' on %s', 'tribe-events-calendar-pro'), self::daysToText($recCustomWeekDay));
             $occurrence_text = sprintf(_n(', recurring %d time', ', recurring %d times', $recEndCount, 'tribe-events-calendar-pro'), $recEndCount);
         } elseif ('Monthly' == $recCustomType) {
             $text = $recCustomInterval == 1 ? __('Every month', 'tribe-events-calendar-pro') : sprintf(__('Every %d months', 'tribe-events-calendar-pro'), $recCustomInterval);
             $number_display = is_numeric($recCustomMonthNumber) ? Tribe__Events__Date_Utils::number_to_ordinal($recCustomMonthNumber) : strtolower(esc_attr__($recCustomMonthNumber, 'tribe-events-calendar-pro'));
             $custom_text = sprintf(__(' on the %s %s', 'tribe-events-calendar-pro'), $number_display, is_numeric($recCustomMonthNumber) ? __('day', 'tribe-events-calendar-pro') : self::daysToText($recCustomMonthDay));
             $occurrence_text = sprintf(_n(', recurring %d time', ', recurring %d times', $recEndCount, 'tribe-events-calendar-pro'), $recEndCount);
         } elseif ($recCustomType == 'Yearly') {
             $text = $recCustomInterval == 1 ? __('Every year', 'tribe-events-calendar-pro') : sprintf(__('Every %d years', 'tribe-events-calendar-pro'), $recCustomInterval);
             $customYearNumber = $recCustomYearMonthNumber != -1 ? Tribe__Events__Date_Utils::number_to_ordinal($recCustomYearMonthNumber) : __('last', 'tribe-events-calendar-pro');
             $day = $recCustomYearFilter ? $customYearNumber : Tribe__Events__Date_Utils::number_to_ordinal(date('j', strtotime($start_date)));
             $of_week = $recCustomYearFilter ? self::daysToText($recCustomYearMonthDay) : '';
             $months = self::monthsToText($recCustomYearMonth);
             $custom_text = sprintf(__(' on the %s %s of %s', 'tribe-events-calendar-pro'), $day, $of_week, $months);
             $occurrence_text = sprintf(_n(', recurring %d time', ', recurring %d times', $recEndCount, 'tribe-events-calendar-pro'), $recEndCount);
         }
     }
     // end text
     if ($recEndType == 'On') {
         $endText = ' ' . sprintf(__(' until %s', 'tribe-events-calendar-pro'), date_i18n(get_option('date_format'), strtotime($recEnd)));
     } elseif ($recEndType == 'Never') {
         $endText = '';
     } else {
         $endText = $occurrence_text;
     }
     return sprintf(__('%s%s%s', 'tribe-events-calendar-pro'), $text, $custom_text, $endText);
 }