update_option('glmMembersDatabaseContactsPluginVersion', GLM_MEMBERS_CONTACTS_PLUGIN_VERSION);
// Set Roles and Capabilities for this plugin
- require_once GLM_MEMBERS_CONTACTS_PLUGIN_SETUP_PATH.'/rolesAndCapabilities.php';
- }
- /*
- * Add a capability to all current roles
- *
- * @param string $capability Name of capability to add
- * @param array $default Whether capability should be on by default
- * array(
- * 'author' => false,
- * 'contributor' => false,
- * 'editor' => false,
- * 'subscriber' => false
- * )
- *
- * @return void
- * @access private
- */
- private function addRoleCapability($capability, $default)
- {
- // Get list of role objects
- $roleObjects = $GLOBALS['wp_roles']->role_objects;
+ global $wp_roles;
- // Get list of roles we can edit
- $roles = get_editable_roles();
-
- // For each role object
- foreach ($roleObjects as $key => $role) {
-
- // Check if the role exists in list of editable roles and
- // the capability does not exist
- if (isset($roles[$key]) && ! isset($role->capabilities[$capability])) {
-
- // Check if a default value has been specified in the $default array
- $enabled = false;
- if (isset($default[$role->name])) {
-
- // It has, so use that
- $enabled = $default[$role->name];
-
- }
+/*
+ remove_role('glm_members_manager');
+ remove_role('glm_members_own_entity_manager');
+ remove_role('glm_members_member_contact');
+ remove_role('glm_members_restricted_contact');
+*/
+
+ /*
+ * Check if we need to update the roles and capabilities
+ *
+ * *** BE SURE TO UPDATE THE VERSION BELOW ANY TIME THERE'S A ROLE/CAPABILITIES CHANGE ***
+ */
+
+ $capabilitiesVersion = 1;
+
+ // Check if the capabilities version is not current
+ if (get_option('glmMembersContactsCapabilitiesVersion') != $capabilitiesVersion ) {
+
+ // Set the capabilities version to this version
+ update_option('glmMembersContactsCapabilitiesVersion', $capabilitiesVersion);
+
+ // If this is the first time, start by deleting all of our custom capabilities
+ // This is needed due to the way they had been added in the past
+
+ if ($capabilitiesVersion == 1) {
+
+ $this->deleteRoleCapability('glm_members_main_menu');
+ $this->deleteRoleCapability('glm_members_management');
+ $this->deleteRoleCapability('glm_members_member');
+ $this->deleteRoleCapability('glm_members_configure');
+ $this->deleteRoleCapability('glm_members_shortcodes');
+ $this->deleteRoleCapability('glm_members_widget');
+ $this->deleteRoleCapability('glm_members_add_new_member');
+ $this->deleteRoleCapability('glm_members_view_any_member');
+ $this->deleteRoleCapability('glm_members_edit_any_member');
+ $this->deleteRoleCapability('glm_members_delete_any_member');
+ $this->deleteRoleCapability('glm_members_moderate_any_member_info');
+ $this->deleteRoleCapability('glm_members_view_my_member');
+ $this->deleteRoleCapability('glm_members_edit_my_member');
+ $this->deleteRoleCapability('glm_members_delete_my_member_info');
+ $this->deleteRoleCapability('glm_members_moderate_my_member_info');
+ $this->deleteRoleCapability('glm_members_view_my_entity');
+ $this->deleteRoleCapability('glm_members_edit_my_entity');
+ $this->deleteRoleCapability('glm_members_delete_my_entity_info');
+ $this->deleteRoleCapability('glm_members_moderate_my_entity_info');
+ $this->deleteRoleCapability('glm_members_view_my_entity_info');
+ $this->deleteRoleCapability('glm_members_edit_my_contact_info');
+ $this->deleteRoleCapability('glm_members_my_edits_moderated');
+ }
- // Add the role
- $role->add_cap($capability, $enabled);
+ // Now add any roles we need that don't already exist and then add all needed capabilities for each role
+
+ // Role: Administrator - Just add GLM capabilities
+ $wp_roles->add_cap('administrator', 'glm_members_main_menu');
+ $wp_roles->add_cap('administrator', 'glm_members_management');
+ $wp_roles->add_cap('administrator', 'glm_members_member');
+ $wp_roles->add_cap('administrator', 'glm_members_configure');
+ $wp_roles->add_cap('administrator', 'glm_members_shortcodes');
+ $wp_roles->add_cap('administrator', 'glm_members_widget');
+ $wp_roles->add_cap('administrator', 'glm_members_add_new_member');
+ $wp_roles->add_cap('administrator', 'glm_members_view_any_member');
+ $wp_roles->add_cap('administrator', 'glm_members_edit_any_member');
+ $wp_roles->add_cap('administrator', 'glm_members_delete_any_member');
+ $wp_roles->add_cap('administrator', 'glm_members_moderate_any_member_info');
+ $wp_roles->add_cap('administrator', 'glm_members_view_my_member');
+ $wp_roles->add_cap('administrator', 'glm_members_edit_my_member');
+ $wp_roles->add_cap('administrator', 'glm_members_delete_my_member_info');
+ $wp_roles->add_cap('administrator', 'glm_members_moderate_my_member_info');
+ $wp_roles->add_cap('administrator', 'glm_members_view_my_entity');
+ $wp_roles->add_cap('administrator', 'glm_members_edit_my_entity');
+ $wp_roles->add_cap('administrator', 'glm_members_delete_my_entity_info');
+ $wp_roles->add_cap('administrator', 'glm_members_moderate_my_entity_info');
+ $wp_roles->add_cap('administrator', 'glm_members_view_my_entity_info');
+ $wp_roles->add_cap('administrator', 'glm_members_edit_my_contact_info');
+
+ // Role: GLM Members Manager
+ $wp_roles->add_role('glm_members_manager', 'GLM Members Manager');
+
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_main_menu');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_member');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_configure');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_shortcodes');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_widget');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_add_new_member');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_view_any_member');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_edit_any_member');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_delete_any_member');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_moderate_any_member_info');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_view_my_member');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_edit_my_member');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_delete_my_member_info');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_moderate_my_member_info');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_view_my_entity');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_edit_my_entity');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_delete_my_entity_info');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_moderate_my_entity_info');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_view_my_entity_info');
+ $wp_roles->add_cap('glm_members_manager', 'glm_members_edit_my_contact_info');
+
+ // Role: GLM Own Entity Manager
+ $wp_roles->add_role('glm_members_own_entity_manager', 'GLM Own Entity Manager');
+
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_main_menu');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_member');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_widget');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_view_my_member');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_edit_my_member');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_view_my_entity');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_edit_my_entity');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_delete_my_entity_info');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_moderate_my_entity_info');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_view_my_entity_info');
+ $wp_roles->add_cap('glm_members_own_entity_manager', 'glm_members_edit_my_contact_info');
+
+ // Role: GLM Member Contact
+ $wp_roles->add_role('glm_members_member_contact', 'GLM Member Contact');
+
+ $wp_roles->add_cap('glm_members_member_contact', 'glm_members_main_menu');
+ $wp_roles->add_cap('glm_members_member_contact', 'glm_members_view_my_member');
+ $wp_roles->add_cap('glm_members_member_contact', 'glm_members_view_my_entity');
+ $wp_roles->add_cap('glm_members_member_contact', 'glm_members_view_my_entity_info');
+ $wp_roles->add_cap('glm_members_member_contact', 'glm_members_edit_my_contact_info');
+
+ // Role: GLM Member Restricted Contact
+ // Note that there are no default capabilities for a restricted contact
+ $wp_roles->add_role('glm_members_restricted_contact', 'GLM Member Restricted Contact');
- }
}
+
}
* @return void
* @access private
*/
- private function deleteRoleCapability($capability)
+ public function deleteRoleCapability($capability)
{
// Get list of role objects
$roleObjects = $GLOBALS['wp_roles']->role_objects;
}
-
-?>
+++ /dev/null
-<?php
-/**
- * Gaslight Media Members Database
- * Member Contact Set Add-On Roles and Permissions
- *
- * PHP version 5.5
- *
- * @category glmWordPressPlugin
- * @package glmMembersDatabase
- * @author Chuck Scott <cscott@gaslightmedia.com>
- * @license http://www.gaslightmedia.com Gaslightmedia
- * @release rolesAndPermissions.php,v 1.0 2014/10/31 19:31:47 cscott Exp $
- * @link http://dev.gaslightmedia.com/
- */
-
-/**
- * NOTE: This file is only included in the activate.php process.
- * It is not regularly used during operation.
- */
-
-
-/*
- * Some maintenance items first
- */
-
-/*
-// Un-comment to fully reset all contact roles
-remove_role('glm_members_manager');
-remove_role('glm_members_own_entity_manager');
-remove_role('glm_members_member_contact');
-remove_role('glm_members_restricted_contact');
-
-// Un-comment the following lines to reset all contacts capabilities to default
-$this->deleteRoleCapability('glm_members_login');
-$this->deleteRoleCapability('glm_members_add_new_member');
-$this->deleteRoleCapability('glm_members_view_any_member');
-$this->deleteRoleCapability('glm_members_edit_any_member');
-$this->deleteRoleCapability('glm_members_delete_any_member');
-$this->deleteRoleCapability('glm_members_moderate_any_member_info');
-$this->deleteRoleCapability('glm_members_view_my_member');
-$this->deleteRoleCapability('glm_members_edit_my_member');
-$this->deleteRoleCapability('glm_members_delete_my_member_info');
-$this->deleteRoleCapability('glm_members_moderate_my_member_info');
-$this->deleteRoleCapability('glm_members_view_my_entity');
-$this->deleteRoleCapability('glm_members_edit_my_entity');
-$this->deleteRoleCapability('glm_members_delete_my_entity_info');
-$this->deleteRoleCapability('glm_members_moderate_my_entity_info');
-$this->deleteRoleCapability('glm_members_view_my_entity_info');
-$this->deleteRoleCapability('glm_members_edit_my_contact_info');
-$this->deleteRoleCapability('glm_members_my_edits_moderated');
-*/
-
-/*
- * Add contacts roles and set capabilities added in main member DB plugin
- */
-
-// Members Manager - Full control of all members and their data
-add_role(
- 'glm_members_manager',
- 'GLM Members Manager',
- array(
- 'read' => true,
- 'glm_members_main_menu' => true,
- 'glm_members_member' => true,
- 'glm_members_configure' => true,
- 'glm_members_management' => false,
- 'glm_members_shortcodes' => true,
- 'glm_members_widget' => true
- )
-);
-
-// Own Entity Manager - Full control of own entity (location, facility, activity, ...)
-add_role(
- 'glm_members_own_entity_manager',
- 'GLM Own Entity Manager',
- array(
- 'read' => true,
- 'glm_members_main_menu' => true,
- 'glm_members_member' => true,
- 'glm_members_configure' => false,
- 'glm_members_management' => false,
- 'glm_members_shortcodes' => false,
- 'glm_members_widget' => true
- )
-);
-
-// Member Contact - Standard contact for own member, location, facility, ... - no edit of member data
-add_role(
- 'glm_members_member_contact',
- 'GLM Member Contact',
- array(
- 'read' => true,
- 'glm_members_main_menu' => true,
- 'glm_members_member' => false,
- 'glm_members_configure' => false,
- 'glm_members_management' => false,
- 'glm_members_shortcodes' => false,
- 'glm_members_widget' => false
- )
-);
-
-// Restricted Member Contact - No login capability - capabilities aren't used
-add_role(
- 'glm_members_restricted_contact',
- 'GLM Member Restricted Contact',
- array(
- 'read' => true,
- 'glm_members_main_menu' => false,
- 'glm_members_member' => false,
- 'glm_members_configure' => false,
- 'glm_members_management' => false,
- 'glm_members_shortcodes' => false,
- 'glm_members_widget' => false
- )
-);
-
-/*
- * Add contacts capabilities
- *
- * Note that the glm_members_management capability is created by the main Member DB plugin
- */
-
-// May log in through members only area
-$this->addRoleCapability(
- 'glm_members_login',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => true,
- 'glm_members_member_contact' => true,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May add new members
-$this->addRoleCapability(
- 'glm_members_add_new_member',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => false,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May add view information for any member
-$this->addRoleCapability(
- 'glm_members_view_any_member',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => false,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May edit information for any member
-$this->addRoleCapability(
- 'glm_members_edit_any_member',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => false,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May delete any member
-$this->addRoleCapability(
- 'glm_members_delete_any_member',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => false,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May moderate any member
-$this->addRoleCapability(
- 'glm_members_moderate_any_member_info',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => false,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May view information for my own member
-$this->addRoleCapability(
- 'glm_members_view_my_member',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => true,
- 'glm_members_member_contact' => true,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May edit any information for my own member
-$this->addRoleCapability(
- 'glm_members_edit_my_member',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => true,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May delete information for my own member
-$this->addRoleCapability(
- 'glm_members_delete_my_member_info',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => false,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May moderate any information for my own member
-$this->addRoleCapability(
- 'glm_members_moderate_my_member_info',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => false,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May view information for my own entity (i.e. location, facility, activity, ...)
-$this->addRoleCapability(
- 'glm_members_view_my_entity',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => true,
- 'glm_members_member_contact' => true,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May edit any information for my own entity (i.e. location, facility, activity, ...)
-$this->addRoleCapability(
- 'glm_members_edit_my_entity',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => true,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May delete any information for my own entity (i.e. location, facility, activity, ...)
-$this->addRoleCapability(
- 'glm_members_delete_my_entity_info',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => true,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May moderate any information for my own entity (i.e. location, facility, activity, ...)
-$this->addRoleCapability(
- 'glm_members_moderate_my_entity_info',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => true,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May view any information for my own entity (i.e. location, facility, activity, ...)
-$this->addRoleCapability(
- 'glm_members_view_my_entity_info',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => true,
- 'glm_members_member_contact' => true,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// May edit own contact information
-$this->addRoleCapability(
- 'glm_members_edit_my_contact_info',
- array(
- 'administrator' => true,
- 'glm_members_manager' => true,
- 'glm_members_own_entity_manager' => true,
- 'glm_members_member_contact' => true,
- 'glm_members_restricted_contact' => false
- )
-);
-
-// User's changes are moderated
-$this->addRoleCapability(
- 'glm_members_my_edits_moderated',
- array(
- 'administrator' => false,
- 'glm_members_manager' => false,
- 'glm_members_own_entity_manager' => false,
- 'glm_members_member_contact' => false,
- 'glm_members_restricted_contact' => false
- )
-);
-
-?>
\ No newline at end of file