PHP Class: x_class_perm
The x_class_perm
class provides a comprehensive system for managing permissions associated with references in a database. It supports creating tables, retrieving, adding, and removing permissions for specific references.
Use the class by including /_framework/classes/x_class_perm.php
.
Dependencies
- PHP 7.0-7.4
- PHP 8.0-8.4
PHP-Modules
mysqli
: The PHP MySQLi extension must be installed and enabled.
PHP-Classes
x_class_mysql
: Required for database operations.
Table
This section describes the table structure used by the Permissions class to store permissions for various objects. The table is automatically created by the class if required for its functionality. Below is a summary of the columns and keys used in the table, along with their purposes.
The table will be automatically installed upon constructor execution.
Column Name | Data Type | Attributes | Description |
---|---|---|---|
id |
int(10) |
NOT NULL , AUTO_INCREMENT , PRIMARY KEY |
A unique identifier for each permission entry, ensuring that each record can be individually tracked. |
ref |
int(10) |
NOT NULL |
A reference number associated with the permission, used to link the permission to a specific object or entity. |
content |
text |
NOT NULL |
Contains the permission data in serialized or structured format, defining the access rights. |
section |
varchar(128) |
DEFAULT NULL |
For Multi Site Purposes to split database data in categories. |
creation |
datetime |
DEFAULT CURRENT_TIMESTAMP |
The timestamp when the permission entry was created. Automatically set upon insertion. |
modification |
datetime |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
The timestamp of the last modification to the permission entry. Automatically updated on changes. |
Key Name | Key Type | Columns | Usage |
---|---|---|---|
PRIMARY KEY |
Primary | id |
Ensures that each permission entry is uniquely identifiable. |
x_class_perm |
Unique | ref , section |
Ensures that each combination of reference and section is unique, preventing duplicate permissions for the same section. |
Methods
__construct(...)
Initializes an instance of the x_class_perm
class and creates the table if it does not exist.
Parameter | Type | Description |
---|---|---|
$mysql |
object |
An instance of the MySQL class used for database operations. |
$tablename |
string |
The name of the table where permissions are stored. |
$section |
string |
Optional section identifier for permissions. Default is an empty string. |
create_table(...)
Creates the permissions table if it does not exist.
Parameter | Type | Description |
---|---|---|
None | - | Creates a table with columns for ID, reference, content, section, creation, and modification timestamps. |
get_perm(...)
Retrieves permissions for a specific reference.
Parameter | Type | Description |
---|---|---|
$ref |
int |
The reference identifier to get permissions for. |
Returns: array
- An array of permissions associated with the reference.
has_perm(...)
Checks if a specific permission is assigned to a reference.
Parameter | Type | Description |
---|---|---|
$ref |
int |
The reference identifier to check permissions for. |
$permname |
string |
The name of the permission to check. |
Returns: bool
- true
if the permission exists, false
otherwise.
add_perm(...)
Adds a new permission to a reference.
Parameter | Type | Description |
---|---|---|
$ref |
int |
The reference identifier to add a permission to. |
$permname |
string |
The name of the permission to add. |
Returns: bool
- Always returns true
if the operation is successful.
check_perm(...)
Checks if a reference has multiple permissions.
Parameter | Type | Description |
---|---|---|
$ref |
int |
The reference identifier to check permissions for. |
$array |
array |
Array of permission names to check. |
$or |
bool |
Optional. If true , checks if any permission matches; if false , checks if all match. Default is false . |
Returns: bool
- true
if the condition is met based on the $or
parameter.
set_perm(...)
Sets permissions for a specific reference.
Parameter | Type | Description |
---|---|---|
$ref |
int |
The reference identifier to set permissions for. |
$array |
array |
The array of permissions to set. |
Returns: bool
- true
if the operation is successful.
remove_perm(...)
Removes a specific permission from a reference.
Parameter | Type | Description |
---|---|---|
$ref |
int |
The reference identifier to remove a permission from. |
$permname |
string |
The name of the permission to remove. |
Returns: bool
- true
if the operation is successful.
remove_perms(...)
Removes all permissions for a specific reference.
Parameter | Type | Description |
---|---|---|
$ref |
int |
The reference identifier to remove all permissions for. |
Returns: bool
- true
if the operation is successful.
delete_ref(...)
Deletes a reference and its associated permissions from the table.
Parameter | Type | Description |
---|---|---|
$ref |
int |
The reference identifier to delete from the table. |
Returns: bool
- true
if the operation is successful.
item(...)
Gets an instance of x_class_perm_item
for a specific reference.
Parameter | Type | Description |
---|---|---|
$ref |
int |
The reference identifier for which to get an item. |
Returns: x_class_perm_item
- An instance of the x_class_perm_item
class with permissions for the specified reference.