From: Steve Sutton Date: Thu, 16 Oct 2014 19:39:46 +0000 (-0400) Subject: Adding a new capability for this plugin. X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=f1b1279113a6e88fc756adef67dc5c328f516683;p=WP-Plugins%2FGlmQuickSite.git Adding a new capability for this plugin. has defines on top for the name of the capability and the minimum required capability for it to be added to the role. --- diff --git a/GlmQuickSite.php b/GlmQuickSite.php index b1d1b3b..c149a56 100644 --- a/GlmQuickSite.php +++ b/GlmQuickSite.php @@ -7,12 +7,33 @@ * Author URI: http://www.gaslightmedia.com * License: All right reserved */ +define('GLM_NEW_CAPABILITY', 'glmquicksite_edit_client'); +define('BUILT_IN_CAPABILITY', 'edit_posts'); add_action( 'admin_menu', 'glmQuickSite_add_admin_menu' ); add_action( 'admin_init', 'glmQuickSite_settings_init' ); register_activation_hook(__FILE__, 'glmQuickSite_install_plugin_data'); register_deactivation_hook(__FILE__, 'glmQuickSite_remove_plugin_data'); +function add_capability() { + $roles = get_editable_roles(); + foreach ($GLOBALS['wp_roles']->role_objects as $key => $role) { + if (isset($roles[$key]) && $role->has_cap(BUILT_IN_CAPABILITY)) { + $role->add_cap(GLM_NEW_CAPABILITY); + } + } +} + +function remove_capability() { + $roles = get_editable_roles(); + foreach ($GLOBALS['wp_roles']->role_objects as $key => $role) { + if (isset($roles[$key]) && $role->has_cap(GLM_NEW_CAPABILITY)) { + $role->remove_cap(GLM_NEW_CAPABILITY); + } + } +} + function glmQuickSite_install_plugin_data(){ + add_capability(); // [status_US] array of states and their abbr. $states_US[''] = '-- Select --';// {{{ $states_US['AL'] = 'Alabama'; @@ -100,13 +121,15 @@ function glmQuickSite_install_plugin_data(){ } function glmQuickSite_remove_plugin_data() { + remove_capability(); delete_option( 'glmquicksite_settings' ); delete_option( 'glmquicksite_states' ); + } function glmQuickSite_add_admin_menu( ) { - add_menu_page( 'Gaslight Client Info', 'GLM Client Info', 'delete_posts', 'glmquicksite', 'glmquicksite_options_page' ); + add_menu_page( 'Gaslight Client Info', 'GLM Client Info', GLM_NEW_CAPABILITY, 'glmquicksite', 'glmquicksite_options_page' ); } @@ -148,7 +171,6 @@ function glmQuickSiteAddSettingTextField($name, $label, $type) { function glmQuickSite_settings_init( ) { - register_setting( 'pluginPage', 'glmQuickSite_settings' ); add_filter('option_page_capability_pluginPage', 'glmQuickSite_option_page_capability'); @@ -269,10 +291,11 @@ function glmQuickSite_settings_section_callback( ) { } function glmQuickSite_option_page_capability($capability) { - return 'edit_posts'; + return GLM_NEW_CAPABILITY; } function glmquicksite_options_page( ) { + if (current_user_can(GLM_NEW_CAPABILITY)) { ?>
@@ -289,6 +312,11 @@ function glmquicksite_options_page( ) {
+

You do not have permission to edit Client Info

+