* hash in the name, we need a way to invalidate them all at once. * * When using default WP transients we're able to do this with a DB query to * delete transients manually. * * With external cache however, this isn't possible. Instead, this function is used * to append a unique string (based on time()) to each transient. When transients * are invalidated, the transient version will increment and data will be regenerated. * * @param string $group Name for the group of transients we need to invalidate * @param boolean $refresh true to force a new version * @return string transient version based on time(), 10 digits */ public static function get_transient_version($group, $refresh = false) { $transient_name = $group . '-transient-version'; $transient_value = get_transient($transient_name); if (false === $transient_value || true === $refresh) { self::delete_version_transients($transient_value); set_transient($transient_name, $transient_value = time()); } return $transient_value; } /** * When the transient version increases, this is used to remove all past transients to avoid filling the DB. * * Note; this only works on transients appended with the transient version, and when object caching is not being used. */ private static function delete_version_transients($version) { if (!wp_using_ext_object_cache() && !empty($version)) {
return true; } } /** * True if an the user can post a event. If accounts are required, and reg is enabled, users can post (they signup at the same time). * * @return bool */ function event_manager_user_can_post_event() { $can_post = true; if (!is_user_logged_in()) { if (event_manager_user_requires_account() && !event_manager_enable_registration()) { $can_post = false; } } return apply_filters('event_manager_user_can_post_event', $can_post); } /** * True if an the user can edit a event. * * @return bool */ function event_manager_user_can_edit_event($event_id) { $can_edit = true; if (!is_user_logged_in() || !$event_id) { $can_edit = false; } else { $event = get_post($event_id); if (!$event || absint($event->post_author) !== get_current_user_id() && !current_user_can('edit_post', $event_id)) { $can_edit = false; } } return apply_filters('event_manager_user_can_edit_event', $can_edit, $event_id); } /** * True if registration is enabled. * * @return bool */ function event_manager_enable_registration() { return apply_filters('event_manager_enable_registration', get_option('event_manager_enable_registration') == 1 ? true : false);