/** * Adds new custom role. */ public static function wpcf_access_add_role_ajax() { if (!current_user_can('manage_options')) { echo json_encode(array('error' => 'false', 'output' => '<div class="error toolset-alert toolset-alert-error js-toolset-alert">' . __('There are security problems. You do not have permissions.', 'wpcf-access') . '</div>')); die; } TAccess_Loader::load('CLASS/Admin_Edit'); $model = TAccess_Loader::get('MODEL/Access'); $access_roles = $model->getAccessRoles(); $capabilities = array('level_0' => true, 'read' => true); $caps = Access_Helper::wpcf_access_types_caps(); foreach ($caps as $cap => $data) { if ($data['predefined'] == 'read') { $capabilities[$cap] = true; } } $capabilities['wpcf_access_role'] = true; $role_slug = str_replace('-', '_', sanitize_title($_POST['role'])); $role_slug = str_replace('%', '', $role_slug); $success = add_role($role_slug, sanitize_text_field($_POST['role']), $capabilities); if (!is_null($success)) { $access_roles[$role_slug] = array('name' => sanitize_text_field($_POST['role']), 'caps' => $capabilities); $model->updateAccessRoles($access_roles); } //taccess_log(array($_POST['role'], $access_roles)); echo json_encode(array('error' => is_null($success) ? 'true' : 'false', 'output' => is_null($success) ? ' <div class="error toolset-alert toolset-alert-error js-toolset-alert">' . __('Role already exists', 'wpcf-access') . ' </div>' : Access_Admin_Edit::wpcf_access_admin_set_custom_roles_level_form(Access_Helper::wpcf_get_editable_roles()))); die; }