function acfe_is_object_type_performance_enabled()

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


function acfe_is_object_type_performance_enabled($type, $object){
    
    // get config
    $config = acfe_get_performance_config();
    
    switch($type){
        
        // post types
        case 'post': {
            
            /**
             * $post_types
             *
             * false         = disallow all
             * true          = allow all
             * array()       = allow all
             * array('post') = allow specific
             */
            
            // vars
            $restricted = acfe_get_setting('reserved_post_types', array());
            $post_types = $config['post_types'];
            
            // no post types allowed
            if($post_types === false){
                return false;
            }
            
            // reserved post type
            if(in_array($object, $restricted)){
                return false;
            }
            
            // allow all post types
            if($post_types === true){
                return true;
            }
            
            // array of specific post types
            if(!empty($post_types)){
                
                // always append 'revision' to allowed post types
                if(!in_array('revision', $post_types)){
                    $post_types[] = 'revision';
                }
                
                if(!in_array($object, $post_types)){
                    return false;
                }
                
            }
    
            // allowed (empty array)
            return true;
            
        }
        
        // taxonomies
        case 'term': {
            
            /**
             * $taxonomies
             *
             * false        = disallow all
             * true         = allow all
             * array()      = allow all
             * array('cat') = allow specific
             */
            
            // vars
            $restricted = acfe_get_setting('reserved_taxonomies', array());
            $taxonomies = $config['taxonomies'];
            
            // no taxonomies allowed
            if($taxonomies === false){
                return false;
            }
            
            // reserved taxonomy
            if(in_array($object, $restricted)){
                return false;
            }
            
            // allow all taxonomies
            if($taxonomies === true){
                return true;
            }
            
            // taxonomy not allowed
            if(!empty($taxonomies) && !in_array($object, $taxonomies)){
                return false;
            }
            
            // allowed (empty array)
            return true;
            
        }
        
        // users
        case 'user': {
            
            /**
             * $users
             *
             * false           = disallow all
             * true            = allow all
             * array()         = allow all
             * array('editor') = allow specific
             */
            
            // vars
            $users = $config['users'];
            
            // no users allowed
            if($users === false){
                return false;
    
            // allow all users
            }elseif($users === true){
                return true;
            }
    
            // taxonomy not allowed
            if(!empty($users) && !in_array($object, $users)){
                return false;
            }
            
            // allowed (empty array)
            return true;
            
        }
        
        // options pages
        case 'option': {
            
            /**
             * $options
             *
             * false            = disallow all
             * true             = allow all
             * array()          = allow all
             * array('options') = allow specific
             */
            
            // vars
            $options = $config['options'];
            
            // no options allowed
            if($options === false){
                return false;
                
            // allow all options
            }elseif($options === true){
                return true;
            }
            
            // option not allowed
            if(!empty($options) && !in_array($object, $options)){
                return false;
            }
    
            // allowed (empty array)
            return true;
            
        }
        
    }
    
    // type not supported
    // block types...
    return false;
    
}