/** * Do the actual work of saving a recurring series of events * @param array $postId The event that is being saved * @return void */ public static function saveEvents($postId) { extract(TribeEventsRecurrenceMeta::getRecurrenceMeta($postId)); $rules = TribeEventsRecurrenceMeta::getSeriesRules($postId); // use the recurrence start meta if necessary because we can't guarantee which order the start date will come back in $recStart = strtotime(get_post_meta($postId, '_EventStartDate', true)); $eventEnd = strtotime(get_post_meta($postId, '_EventEndDate', true)); $duration = $eventEnd - $recStart; $recEnd = $recEndType == "On" ? strtotime(TribeDateUtils::endOfDay($recEnd)) : $recEndCount - 1; // subtract one because event is first occurrence // different update types delete_post_meta($postId, '_EventStartDate'); delete_post_meta($postId, '_EventEndDate'); delete_post_meta($postId, '_EventDuration'); // add back original start and end date add_post_meta($postId, '_EventStartDate', date(DateSeriesRules::DATE_FORMAT, $recStart)); add_post_meta($postId, '_EventEndDate', date(DateSeriesRules::DATE_FORMAT, $eventEnd)); add_post_meta($postId, '_EventDuration', $duration); if ($recType != "None") { $recurrence = new TribeRecurrence($recStart, $recEnd, $rules, $recEndType == "After"); $dates = (array) $recurrence->getDates(); // add meta for all dates in recurrence foreach ($dates as $date) { add_post_meta($postId, '_EventStartDate', date(DateSeriesRules::DATE_FORMAT, $date)); } } }
private static function getRecurrenceForEvent($event_id) { /** @var string $recType */ /** @var string $recEndType */ /** @var string $recEnd */ /** @var int $recEndCount */ extract(TribeEventsRecurrenceMeta::getRecurrenceMeta($event_id)); if ($recType == 'None') { require_once dirname(__FILE__) . '/tribe-null-recurrence.php'; return new TribeNullRecurrence(); } $rules = TribeEventsRecurrenceMeta::getSeriesRules($event_id); $recStart = strtotime(get_post_meta($event_id, '_EventStartDate', true) . '+00:00'); switch ($recEndType) { case 'On': // @todo use tribe_events_end_of_day() ? $recEnd = strtotime(TribeDateUtils::endOfDay($recEnd)); break; case 'Never': $recEnd = TribeRecurrence::NO_END; break; case 'After': default: $recEnd = $recEndCount - 1; // subtract one because event is first occurrence break; } $recurrence = new TribeRecurrence($recStart, $recEnd, $rules, $recEndType == "After", get_post($event_id)); return $recurrence; }
private static function getRecurrenceForEvent($event_id) { /** @var string $recType */ /** @var string $recEndType */ /** @var string $recEnd */ /** @var int $recEndCount */ extract(TribeEventsRecurrenceMeta::getRecurrenceMeta($event_id)); if ($recType == 'None') { return NULL; } $rules = TribeEventsRecurrenceMeta::getSeriesRules($event_id); $recStart = strtotime(get_post_meta($event_id, '_EventStartDate', TRUE)); switch ($recEndType) { case 'On': $recEnd = strtotime(TribeDateUtils::endOfDay($recEnd)); break; case 'Never': $recEnd = TribeRecurrence::NO_END; break; case 'After': default: $recEnd = $recEndCount - 1; // subtract one because event is first occurrence break; } $recurrence = new TribeRecurrence($recStart, $recEnd, $rules, $recEndType == "After", get_post($event_id)); return $recurrence; }
private static function getRecurrenceForEvent($event_id) { /** @var string $recType */ /** @var string $recEndType */ /** @var string $recEnd */ /** @var int $recEndCount */ extract(TribeEventsRecurrenceMeta::getRecurrenceMeta($event_id)); if ($recType == 'None') { return NULL; } $rules = TribeEventsRecurrenceMeta::getSeriesRules($event_id); // use the recurrence start meta if necessary because we can't guarantee which order the start date will come back in $recStart = strtotime(self::get_series_start_date($event_id)); switch ($recEndType) { case 'On': $recEnd = strtotime(TribeDateUtils::endOfDay($recEnd)); break; case 'Never': $recEnd = TribeRecurrence::NO_END; break; case 'After': default: $recEnd = $recEndCount - 1; // subtract one because event is first occurrence break; } $recurrence = new TribeRecurrence($recStart, $recEnd, $rules, $recEndType == "After", get_post($event_id)); return $recurrence; }
/** * Checks the recurrence amount and adds a filter to display an errir if it is not correct. * * @since 3.0 * @author Paul Hughes * * @param int $post_id The post id. * @return void */ public function checkRecurrenceAmount($post_id) { $is_success = true; if (get_post_type($post_id) == TribeEvents::POSTTYPE && get_post_meta($post_id, '_EventRecurrence')) { extract(TribeEventsRecurrenceMeta::getRecurrenceMeta($post_id)); $rules = TribeEventsRecurrenceMeta::getSeriesRules($post_id); // use the recurrence start meta if necessary because we can't guarantee which order the start date will come back in $recStart = strtotime(get_post_meta($post_id, '_EventStartDate', true)); $eventEnd = strtotime(get_post_meta($post_id, '_EventEndDate', true)); $duration = $eventEnd - $recStart; $recEnd = $recEndType == "On" ? strtotime(TribeDateUtils::endOfDay($recEnd)) : $recEndCount - 1; // subtract one because event is first occurrence $old_start_dates = get_post_meta($post_id, '_EventStartDate'); if ($recType != "None") { $recurrence = new TribeRecurrence($recStart, $recEnd, $rules, $recEndType == "After", get_post($post_id)); $dates = (array) $recurrence->getDates(true, $old_start_dates); $max_recurrences = apply_filters('tribe_events_max_recurrences', 199); if (count($dates) > $max_recurrences) { add_filter('redirect_post_location', array(__CLASS__, 'tooManyRecurrencesError')); $is_success = false; } } } return $is_success; }