Collections functions
General functions
Render functions
Theme permission functions
User functions
Resource functions

collection_readable()

Description

Returns true if the current user has read access to the given collection.

Parameters

ColumnTypeDefaultDescription
$collection integer

Return

boolean

Location

include/collections_functions.php lines 728 to 786

Definition

 
function collection_readable($collection)
    {
    global 
$userref$usergroup$ignore_collection_access$collection_commenting;

    
$k getval('k''');

    
# Fetch collection details.
    
if (!is_numeric($collection)) {return false;}
    
$collectiondata=get_collection($collection);
    if(
$collectiondata === false)
        {
        return 
false;
        }

    
# Load a list of attached users
    
$attached ps_array("SELECT user value FROM user_collection WHERE collection = ?",["i",$collection]);
    
$attached_groups ps_array("SELECT usergroup value FROM usergroup_collection WHERE collection = ?",["i",$collection]);

    
# Access if collection_commenting is enabled and request feedback checked
    # Access if it's a public collection (or featured collection to which user has access to)
    # Access if k is not empty or option to ignore collection access is enabled and k is empty
    
if (
        (
$collection_commenting && $collectiondata['request_feedback'] == 1)
        || 
$collectiondata['type'] == COLLECTION_TYPE_PUBLIC
        
|| ($collectiondata['type'] == COLLECTION_TYPE_FEATURED && featured_collection_check_access_control($collection))
        || 
$k!=""
        
|| ($k=="" && $ignore_collection_access)
    )
        {
        return 
true;
        }

    
# Perform these checks only if a user is logged in
    
if (is_numeric($userref))
        {
        
# Access if:
        #    - It's their collection
        #     - It's a public collection (or featured collection to which user has access to)
        #    - They have the 'access and edit all collections' admin permission
        #     - They are attached to this collection
        #   - Option to ignore collection access is enabled and k is empty
        
if(
            
$userref == $collectiondata["user"]
            || 
$collectiondata['type'] == COLLECTION_TYPE_PUBLIC
            
|| ($collectiondata['type'] == COLLECTION_TYPE_FEATURED && featured_collection_check_access_control($collection))
            || 
checkperm("h")
            || 
in_array($userref$attached)
            || 
in_array($usergroup$attached_groups)
            || 
checkperm("R")
            || 
$k!=""
            
|| ($k=="" && $ignore_collection_access)
        )
            {
            return 
true;
            }
        }

    return 
false;
    }

This article was last updated 2nd December 2023 07:35 Europe/London time based on the source file dated 21st November 2023 15:25 Europe/London time.