<?php /** * Objects merge/update * Add New capability: mgm_home dashboard options to admin role */ $obj_role = new mgm_roles(); $obj_role->update_capability_role('administrator', 'mgm_home', true); // end file
<?php /** * Objects merge/update * Add New capability: mgm_widget_dashboard_statistics to admin role */ $obj_role = new mgm_roles(); $obj_role->update_capability_role('administrator', 'mgm_widget_dashboard_statistics', true); // end file
<?php /** * Objects merge/update * Update capability: mgm_addons , mgm_post_purchases , mgm_addon_purchases , mgm_payment_history to admin role */ $obj_role = new mgm_roles(); $obj_role->update_capability_role('administrator', 'mgm_post_purchases', true); $obj_role->update_capability_role('administrator', 'mgm_addons', true); $obj_role->update_capability_role('administrator', 'mgm_addon_purchases', true); $obj_role->update_capability_role('administrator', 'mgm_payment_history', true); // end file
/** * Check secondary menu is enabled for the logged in user * @param string $primary_menu * @param string $secondary_menu * @return boolean */ function mgm_is_mgm_menu_enabled($type = 'primary', $primary_menu, $secondary_menu = null) { $user_id = get_current_user_id(); $obj_roles = new mgm_roles(); // for the firsttime load if (!get_option('rolebasedmenu_init')) { // update administrator role with capabilities $custom_caps = $obj_roles->get_custom_capabilities(); foreach ($custom_caps as $cap) { $obj_roles->update_capability_role('administrator', $cap, true); } // set init value update_option('rolebasedmenu_init', 1); } $capabilities = $obj_roles->get_loggedinuser_custom_capabilities($user_id); $system_obj = mgm_get_class('system'); // common setting $dml = $system_obj->setting['enable_role_based_menu_loading']; // if dynamic menu loading is disabled/priamry and secondary menus are enabled return is_super_admin() && !bool_from_yn($dml) || (bool_from_yn($dml) && ($type == 'primary' && in_array($primary_menu, $capabilities)) || $type == 'secondary' && in_array($primary_menu, $capabilities) && in_array($secondary_menu, $capabilities)); // check secondary menu capability is loaded }
<?php /** * Objects merge/update * Add New System Setting: enable_role_based_menu_loading * Populate Custom MGM capabilities for 'administrator' role */ // read $system_obj = mgm_get_class('system'); if (!isset($system_obj->setting['enable_role_based_menu_loading'])) { // default to 'NO' $system_obj->setting['enable_role_based_menu_loading'] = 'N'; // save $system_obj->save(); } //default MGM custom capabilities to true for administrator role: $obj_role = new mgm_roles(); $custom_caps = $obj_role->get_custom_capabilities(); foreach ($custom_caps as $cap) { $obj_role->update_capability_role('administrator', $cap, true); } // end file
<?php /** * Objects merge/update * Add New capability: mgm_widget dashboard membership options to admin role */ $obj_role = new mgm_roles(); $obj_role->update_capability_role('administrator', 'mgm_widget_dashboard_membership_options', true); // end file
function roles_capabilities_edit() { global $wpdb, $current_user; if (isset($_POST['save_roles'])) { $objrole = new mgm_roles(); extract($_POST); $status = 'error'; $role_type = ''; $message = array(); if (!empty($rolename)) { $error = false; foreach ($rolename as $role => $value) { //added later to consider only the edited role: if ($role == $selected_role) { $value = trim(mgm_escape($value)); if (empty($value)) { $message[] = __('Role cannot be blank', 'mgm'); $error = true; } elseif (!preg_match("/^[A-Za-z0-9_,\\s]+\$/", $value)) { $message[] = __('Role cannot contain special characters.', 'mgm'); $error = true; } elseif (!$objrole->is_role_unique($value, true, $role)) { $message[] = __('Role/capability already exists.', 'mgm'); $error = true; } if (!isset($chk_capability[$role]) || isset($chk_capability[$role]) && empty($chk_capability[$role])) { $message[] = __('Capability must be selected', 'mgm'); $error = true; } break; } } if (!$error) { //save roles: foreach ($rolename as $role => $value) { if ($role == $selected_role) { $key = $role; //save Role name: if (!in_array($role, $objrole->default_roles)) { //please note: this will return the edited role $role = $objrole->edit_role($role, $value); } //remove if (!empty($chk_capability[$key])) { //save capabilities: $arr_previous_caps = $objrole->get_capabilities($role); $arr_new_caps = $chk_capability[$key]; $arr_to_add = array_diff($arr_new_caps, $arr_previous_caps); $arr_to_remove = array_diff($arr_previous_caps, $arr_new_caps); //add new capabilities: if (!empty($arr_to_add)) { foreach ($arr_to_add as $cap) { $cap = mgm_escape($cap); //grant access $objrole->update_capability_role($role, $cap, true); } } //remove access if any capabilities unchecked if (!empty($arr_to_remove)) { foreach ($arr_to_remove as $cap) { $cap = mgm_escape($cap); //remove access $objrole->update_capability_role($role, $cap, false); } } } break; } } $type = $role_type; //from post $message[] = __('Successfully saved the changes.', 'mgm'); $status = 'success'; } } echo json_encode(array('status' => $status, 'message' => implode("<br/>", $message), 'type' => $type)); exit; } }