Exemplo n.º 1
0
    /**
     * 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;
    }