| | |
| | | <?php |
| | | |
| | | use JVBase\base\options; |
| | | use JVBase\base\Site; |
| | | use JVBase\managers\Cache; |
| | | use JVBase\registrar\Registrar; |
| | | use JVBase\utility\Features; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | | exit; |
| | |
| | | return (array_key_exists($key, $config) && $config[$key] === true); |
| | | } |
| | | |
| | | function jvbUserIsVerified():bool |
| | | { |
| | | return !(Features::forMembership()->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; |
| | | return Registrar::withFeature('profile_link', 'user'); |
| | | } |
| | | |
| | | 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)) { |
| | | if (!Site::has('limit_hours')) { |
| | | return true; |
| | | } |
| | | if (get_option(BASE.'open_to_public') !== '1') { |
| | | if ( options::get('open_to_public') !== '1') { |
| | | return false; |
| | | } |
| | | //Check if today_hours is set |
| | | if (get_option(BASE.'today_hours')) { |
| | | if (!empty(options::get('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'); |
| | | $cache = Cache::for('termUtility', 'term', 30*60); |
| | | 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 |
| | | if ($tax) { |
| | | $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; |
| | | ]); |
| | | $result = ($query->have_posts()) ? 'true' : 'false'; |
| | | wp_reset_postdata(); |
| | | return $result; |
| | | |
| | | } |
| | | return 'false'; |
| | | } |
| | | ); |
| | | } |