<?php
|
|
use JVBase\base\Site;
|
use JVBase\managers\Cache;
|
use JVBase\registrar\Registrar;
|
|
if (!defined('ABSPATH')) {
|
exit;
|
}
|
function jvbCheck(string $key, $config = []):bool
|
{
|
return (array_key_exists($key, $config) && $config[$key] === true);
|
}
|
|
function jvbUserIsVerified():bool
|
{
|
$membership = Site::membership();
|
|
return !($membership && $membership->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;
|
}
|
);
|
}
|