Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
bricksforge
/
includes
/
permissions
:
Permissions.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Bricksforge; /** * Permissions Handler */ class Permissions { public function __construct() { add_filter('bricks/builder/elements', [$this, 'render_elements_by_role']); add_action('wp_ajax_create_user_role', [$this, 'create_user_role']); add_action('wp_head', [$this, 'hide_tab_area']); } /** * Render Elements By Role */ public function render_elements_by_role($elements) { if (!is_user_logged_in()) { return $elements; } $user = wp_get_current_user(); $roles = get_option('brf_permissions_roles'); $rendered_elements = array(); $hide_only = false; if (!isset($roles) || empty($roles)) { return $elements; } foreach ($roles as $role) { if (in_array($role->value, $user->roles)) { $role->permissions->elements = array_filter($role->permissions->elements, function ($e) { return $e->active === true; }); if (isset($role->permissions->hideOnly) && $role->permissions->hideOnly == true) { $hide_only = true; } $rendered_elements = array_map(function ($element) { return $element->name; }, $role->permissions->elements); } } ; if ($hide_only === true) { add_action('wp_head', [$this, 'hide_elements']); return $elements; } return $rendered_elements ? $rendered_elements : $elements; } /** * Create User Role */ public function create_user_role() { $role = $_REQUEST['role']; $role = json_decode(stripslashes($role)); if (!isset($role) || !$role) { die; } $cap_array = (array) $role->capabilities; add_role($role->value, $role->label, $cap_array); echo true; die; } /** * Only hide the elements */ public function hide_elements() { $user = wp_get_current_user(); $roles = get_option('brf_permissions_roles'); $rendered_elements = array(); if (!isset($roles) || empty($roles)) { return; } foreach ($roles as $role) { if (in_array($role->value, $user->roles)) { $role->permissions->elements = array_filter($role->permissions->elements, function ($e) { return $e->active === true; }); $rendered_elements = array_map(function ($element) { return $element->name; }, $role->permissions->elements); } } ; echo "<style>"; echo "#bricks-panel-elements-categories .category-layout .sortable-wrapper > li {display: none!important}"; echo "#bricks-panel-elements-categories .category-basic .sortable-wrapper > li {display: none!important}"; echo "#bricks-panel-elements-categories .category-general .sortable-wrapper > li {display: none!important}"; echo "#bricks-panel-elements-categories .category-media .sortable-wrapper > li {display: none!important}"; echo "#bricks-panel-elements-categories .category-wordpress .sortable-wrapper > li {display: none!important}"; echo "#bricks-panel-elements-categories .category-single .sortable-wrapper > li {display: none!important}"; foreach ($rendered_elements as $element) { echo "#bricks-panel-elements-categories .category-layout li[data-element-name=" . $element . "] {display: block!important}"; echo "#bricks-panel-elements-categories .category-basic li[data-element-name=" . $element . "] {display: block!important}"; echo "#bricks-panel-elements-categories .category-general li[data-element-name=" . $element . "] {display: block!important}"; echo "#bricks-panel-elements-categories .category-media li[data-element-name=" . $element . "] {display: block!important}"; echo "#bricks-panel-elements-categories .category-wordpress li[data-element-name=" . $element . "] {display: block!important}"; echo "#bricks-panel-elements-categories .category-single li[data-element-name=" . $element . "] {display: block!important}"; } echo "</style>"; } /** * Hide Tab Area */ public function hide_tab_area() { if (bricks_is_builder()) { $role = $this->get_user_role(); if (!isset($role) || $role == false) { return; } if ($role->permissions->hideTabs === true) { ?> <style> #bricks-panel-sticky { display: none; } </style> <?php } if ($role->permissions->hideStyleTab === true) { ?> <style> #bricks-panel-tabs { display: none; } </style> <?php } if ($role->permissions->cleanUpToolbar === true) { ?> <style> #bricks-toolbar li:not(.logo, [data-balloon="Edit in WordPress"], .new-tab, .preview, .save, .elements) { display: none; } </style> <?php } if ($role->permissions->hasCustomBuilderColor === true) { ?> <style> :root { --builder-bg: <?php echo $role->permissions->builderColorPrimary ?>; --builder-bg-2: <?php echo $role->permissions->builderColorSecondary ?>; --builder-bg-3: <?php echo $role->permissions->builderColorSecondary ?>; --builder-color-accent: <?php echo $role->permissions->builderColorAccent ?>; --builder-color: <?php echo $role->permissions->builderColorText ?>; } #bricks-toolbar .logo { background-color: <?php echo $role->permissions->builderColorAccent ?>; } [data-control=select] li.hover, [data-control=select] li.selected, [data-control=select] li:hover { color: <?php echo $role->permissions->builderColorText ?>; } [data-control=select] li.hover:after, [data-control=select] li.selected:after, [data-control=select] li:hover:after { background-color: <?php echo $role->permissions->builderColorPrimary ?>; } </style> <?php } } } /** * Check for user role */ public function get_user_role() { $user = wp_get_current_user(); $roles = get_option('brf_permissions_roles'); $user_role = null; if (!isset($roles)) { return false; } if ($roles && count($roles) > 0) { foreach ($roles as $role) { if (in_array($role->value, $user->roles)) { $user_role = $role; } } ; } if (isset($user_role)) { return $user_role; } } }