|
Server IP : 10.131.40.8 / Your IP : 216.73.216.37 Web Server : Apache System : Linux webd008.cluster131.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64 User : ludmqhh ( 137773) PHP Version : 8.4.10 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0705) : /home/ludmqhh/www/hotel-forum/wp-content/plugins/wp-hotelier/includes/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
/**
* Roles and Capabilities
*
* @author Benito Lopez <hello@lopezb.com>
* @category Class
* @package Hotelier/Classes
* @version 2.6.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
if ( ! class_exists( 'HTL_Roles' ) ) :
/**
* HTL_Roles Class
*
* Role creation and assignment of capabilities for those roles.
*
*/
class HTL_Roles {
/**
* Add new hotel roles
*
* @access public
* @return void
*/
public function add_roles() {
add_role( 'hotel_manager', esc_html__( 'Hotel Manager', 'wp-hotelier' ), array(
'read' => true,
'read_private_pages' => true,
'read_private_posts' => true,
'edit_users' => true,
'edit_posts' => true,
'edit_pages' => true,
'edit_published_posts' => true,
'edit_published_pages' => true,
'edit_private_pages' => true,
'edit_private_posts' => true,
'edit_others_posts' => true,
'edit_others_pages' => true,
'publish_posts' => true,
'publish_pages' => true,
'delete_posts' => true,
'delete_pages' => true,
'delete_private_pages' => true,
'delete_private_posts' => true,
'delete_published_pages' => true,
'delete_published_posts' => true,
'delete_others_posts' => true,
'delete_others_pages' => true,
'manage_categories' => true,
'manage_links' => true,
'moderate_comments' => true,
'unfiltered_html' => true,
'upload_files' => true,
'export' => true,
'import' => true,
'list_users' => true
) );
}
/**
* Add new hotel-specific capabilities
*
* @access public
* @global WP_Roles $wp_roles
* @return void
*/
public function add_caps() {
global $wp_roles;
if ( class_exists( 'WP_Roles' ) ) {
if ( ! isset( $wp_roles ) ) {
$wp_roles = new WP_Roles();
}
}
if ( is_object( $wp_roles ) ) {
$wp_roles->add_cap( 'hotel_manager', 'manage_hotelier' );
$wp_roles->add_cap( 'administrator', 'manage_hotelier' );
// Add the main post type capabilities
$capabilities = $this->get_core_caps();
foreach ( $capabilities as $cap_group ) {
foreach ( $cap_group as $cap ) {
$wp_roles->add_cap( 'hotel_manager', $cap );
$wp_roles->add_cap( 'administrator', $cap );
}
}
}
}
/**
* Gets the core post type capabilities
*
* @access public
* @return array $capabilities Core post type capabilities
*/
public function get_core_caps() {
$capabilities = array();
$capability_types = array( 'room', 'room_reservation', 'coupon', 'extra' );
foreach ( $capability_types as $capability_type ) {
$capabilities[ $capability_type ] = array(
// Post type
"edit_{$capability_type}",
"read_{$capability_type}",
"delete_{$capability_type}",
"edit_{$capability_type}s",
"edit_others_{$capability_type}s",
"publish_{$capability_type}s",
"read_private_{$capability_type}s",
"delete_{$capability_type}s",
"delete_private_{$capability_type}s",
"delete_published_{$capability_type}s",
"delete_others_{$capability_type}s",
"edit_private_{$capability_type}s",
"edit_published_{$capability_type}s",
// Terms
"manage_{$capability_type}_terms",
"edit_{$capability_type}_terms",
"delete_{$capability_type}_terms",
"assign_{$capability_type}_terms",
);
}
return $capabilities;
}
/**
* Remove core post type capabilities (called on uninstall)
*
* @access public
*/
public function remove_roles() {
global $wp_roles;
if ( class_exists( 'WP_Roles' ) ) {
if ( ! isset( $wp_roles ) ) {
$wp_roles = new WP_Roles();
}
}
if ( is_object( $wp_roles ) ) {
$wp_roles->remove_cap( 'hotel_manager', 'manage_hotelier' );
$wp_roles->remove_cap( 'administrator', 'manage_hotelier' );
$capabilities = $this->get_core_caps();
foreach ( $capabilities as $cap_group ) {
foreach ( $cap_group as $cap ) {
$wp_roles->remove_cap( 'hotel_manager', $cap );
$wp_roles->remove_cap( 'administrator', $cap );
}
}
}
remove_role( 'hotel_manager' );
}
}
endif;
