has('member_verified')) || current_user_can('skip_moderation'); } function jvbUserTypes():array { $types = get_option(BASE.'user_types'); if (JVB_TESTING) { $types = false; } if ($types === false) { $types = []; foreach (JVB_USER as $type => $config) { if (array_key_exists('profile', $config)) { $types[$type] = BASE.$config['profile']; } } update_option(BASE.'user_types', $types); } return $types; } function isJVBContentTax():bool { return is_tax(array_map(function ($tax) { return jvbCheckBase($tax); }, Registrar::getFeatured('is_content', 'term'))); } function taxIsJVBContentTax($tax):bool { $allowed = Registrar::getFeatured('is_content', 'term'); $tax = jvbNoBase($tax); return in_array($tax, $allowed); } function jvbIsOpen():bool { if (!jvbCheck('limit_hours', JVB_SITE)) { return true; } if (get_option(BASE.'open_to_public') !== '1') { return false; } //Check if today_hours is set if (get_option(BASE.'today_hours')) { return jvbIsTimeBetween(); } //Default to the stored settings return jvbIsCurrentlyOpen(); } function jvbTermHasPosts(int $termID, string $taxonomy):bool { $cache = Cache::for('termUtility', 30*60)->connect('taxonomy'); return $cache->remember( $termID, function() use($taxonomy, $termID) { $taxonomy = jvbCheckBase($taxonomy); $tax = get_taxonomy($taxonomy); $query = new WP_Query([ 'post_type' => $tax->object_type, 'posts_per_page' => 1, 'fields' => 'ids', 'tax_query' => [ [ 'taxonomy' => $taxonomy, 'terms' => $termID ] ] ]); $result = ($query->have_posts()) ? 'true' : 'false'; wp_reset_postdata(); return $result; } ); }