GIF94;
| Path : /var/www/wordpress/wp-content/plugins/oxygen/plugin/permissions/ |
| Current File : /var/www/wordpress/wp-content/plugins/oxygen/plugin/permissions/user-profile.php |
<?php
namespace Breakdance\Permissions;
use function Breakdance\BreakdanceOxygen\Strings\__bdox;
add_action('breakdance_loaded', function () {
if (BREAKDANCE_MODE === 'breakdance') {
add_action('show_user_profile', '\Breakdance\Permissions\customField');
add_action('edit_user_profile', '\Breakdance\Permissions\customField');
add_action('user_new_form', '\Breakdance\Permissions\customField');
add_action('personal_options_update', '\Breakdance\Permissions\saveCustomField');
add_action('edit_user_profile_update', '\Breakdance\Permissions\saveCustomField');
add_action('user_register', '\Breakdance\Permissions\saveCustomField');
}
});
/**
* @param Permission|null $userPermission
* @param Permission $permission
* @return bool
*/
function isSelected($userPermission, $permission)
{
if (!$userPermission) {
return false;
}
$isOverwritten = $userPermission['overwritten'] ?? false;
return $userPermission['slug'] === $permission['slug'] && $isOverwritten;
}
/**
* @param \WP_User|string $user
* @throws \Exception
*/
function customField($user)
{
$permissions = getPermissions();
$userPermission = null;
if (!current_user_can('manage_options')) {
return;
}
if ($user !== 'add-new-user' && $user instanceof \WP_User) {
$userPermission = getUserPermission($user->ID);
/** @var string $role */
$role = reset($user->roles);
}
?>
<h3><?php echo __bdox('plugin_name'); ?></h3>
<table class="form-table">
<tr>
<th><label for="breakdance-builder-access"><?php echo esc_html__('Builder Access', 'breakdance'); ?></label></th>
<td>
<select name="breakdance_permission" id="breakdance-builder-access">
<option value=""><?php echo esc_html__('Default', 'breakdance'); ?></option>
<?php foreach ($permissions as $permission) { ?>
<?php $selected = isSelected($userPermission, $permission) ? 'selected' : ''; ?>
<option value="<?php echo $permission['slug']; ?>" <?php echo $selected; ?>><?php echo $permission['name']; ?></option>
<?php } ?>
</select>
<div class="breakdance-builder-access__message">
<div class="notice inline notice-warning">
<p><?php echo esc_html__("It's not possible to restrict access for administrators, please give the user another role.", 'breakdance'); ?></p>
</div>
</div>
</td>
</tr>
</table>
<style>
.breakdance-builder-access__message .notice {
display: inline-block;
}
</style>
<script>
(function($) {
const $role = $('#role');
const $builderAccess = $('#breakdance-builder-access');
const $message = $('.breakdance-builder-access__message');
const defaultValue = $builderAccess.val();
function toggleBuilderAccess() {
const selectedRole = $role.val();
if (selectedRole === 'administrator') {
$builderAccess.prop('disabled', true);
$builderAccess.val('');
$message.show();
return;
}
$builderAccess.prop('disabled', false);
$builderAccess.val(defaultValue);
$message.hide();
}
toggleBuilderAccess();
$role.on('change', toggleBuilderAccess);
}(jQuery));
</script>
<?php }
/**
* @param int $userId
* @return false|null
*/
function saveCustomField($userId)
{
if (!current_user_can('manage_options')) {
return false;
}
$permission = sanitize_text_field((string) ($_POST['breakdance_permission'] ?? ''));
// Remove permission if set to default.
if (!$permission) {
revokePermission($userId);
} else {
givePermission($permission, $userId);
}
}