/** * 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); }