private function _reset_expired_bookings($since) { //$rsvps = Eab_EventModel::get_bookings(Eab_EventModel::BOOKING_YES, $since); $rsvps = Eab_EventModel::get_bookings(Eab_EventModel::BOOKING_YES); // Just reset all the expired bookings. $now = eab_current_time(); $cutoff_limit = $this->_data->get_option('rsvp_auto_reset-cutoff'); $cutoff_limit = $cutoff_limit ? $cutoff_limit : 3600; $callback = (int) $this->_data->get_option('rsvp_auto_reset-remove_attendance') ? 'delete_attendance' : 'cancel_attendance'; $events = array(); // Events cache foreach ($rsvps as $rsvp) { // Check time difference $time_diff = $now - strtotime($rsvp->timestamp); if ($time_diff < $cutoff_limit) { continue; } // This one still has time to pay // Check event premium status if (empty($events[$rsvp->event_id])) { $events[$rsvp->event_id] = new Eab_EventModel(get_post($rsvp->event_id)); } if (!$events[$rsvp->event_id]->is_premium()) { continue; } // Not a paid event, carry on // Check user payment if ($events[$rsvp->event_id]->user_paid($rsvp->user_id)) { continue; } // User paid for event, we're good here. // If we got here, we should reset the users RSVP if (is_callable(array($events[$rsvp->event_id], $callback))) { $events[$rsvp->event_id]->{$callback}($rsvp->user_id); } } }