function acfe_is_object_performance_enabled()

in web/wp-content/plugins/acf-extended/includes/modules/performance/module-performance-functions.php [103:212]


function acfe_is_object_performance_enabled($post_id = 0){
    
    // check setting
    if(!acfe_is_performance_enabled()){
        return false;
    }
    
    // check post id
    if(!$post_id){
        return false;
    }
    
    // check local post id
    if(acfe_is_local_post_id($post_id)){
        return false;
    }
    
    // get config
    $config = acfe_get_performance_config();
    
    // validate engine exists
    if(!acfe_get_performance_engine($config['engine'])){
        return false;
    }
    
    /**
     * @var $type
     * @var $id
     */
    extract(acf_decode_post_id($post_id));
    
    // validate id
    if(!$id){
        return false;
    }
    
    switch($type){
        
        // post types
        case 'post': {
    
            // get post type
            $post_type = get_post_type($id);
            
            // validate
            if(!$post_type){
                return false;
            }
            
            return acfe_is_object_type_performance_enabled('post', $post_type);
            
        }
        
        // taxonomies
        case 'term': {
    
            // get term
            $term = get_term($id);
    
            // validate
            if(is_wp_error($term) || !is_a($term, 'WP_Term')){
                return false;
            }
    
            // get taxonomy
            $taxonomy = $term->taxonomy;
    
            return acfe_is_object_type_performance_enabled('term', $taxonomy);
            
        }
        
        // users
        case 'user': {
    
            // get user
            $user = get_userdata($id);
    
            // validate
            if(!($user) || !is_a($user, 'WP_User')){
                return false;
            }
    
            // get roles
            $roles = acf_get_array($user->roles);
    
            // array of users
            foreach($roles as $role){
                if(acfe_is_object_type_performance_enabled('user', $role)){
                    return true;
                }
            }
            
            return false;
            
        }
        
        // options pages
        case 'option': {
    
            return acfe_is_object_type_performance_enabled('option', $id);
            
        }
        
    }
    
    // type not supported
    // block types...
    return false;
    
}