ClientSettings.php 1014 Bytes
<?php
class ClientSettings {
    const CAPABILITY = 'edit_client_settings';
    const ADMIN_PAGE = 'client-settings';

    public static function make() {
        static $made = false;
        if ($made) {
            throw new OverflowException('ClientSettings has already been initialized');
        }
        $made = true;

        $role = get_role('administrator');
        $role->add_cap(self::CAPABILITY);

        add_actions('ClientSettings_Actions');
    }

    public static function viewOptionsPage() {
    }
}

// register_setting()
// settings_fields()

// add_settings_section()
// add_settings_field()
// settings_fields()

// do_settings_section()

class ClientSettings_Actions {
    public static function admin_menu() {
        $display = (current_user_can('manage_options') ? 'Client Settings' : 'Settings');

        add_utility_page($display, $display, ClientSettings::CAPABILITY, ClientSettings::ADMIN_PAGE, Array('ClientSettings', 'viewOptionsPage'));
    }
}

    ClientSettings::make();
?>