From 707f73526dcba7b968525f93816effc7dd8aceeb Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Thu, 13 Apr 2017 08:26:54 -0400 Subject: [PATCH] Implement management option for having multiple active profiles Adding enable_multiple_profiles to data abstract for settingsGeneral. Updating the database version number to 1.1.30 Add check for enable_multiple_profile to be off before trying to reset all other member profiles for the member to inactive. Adding new rewrite rule for appending the member info id to the member detail url's. --- classes/data/settings/dataSettingsGeneral.php | 7 +++++++ index.php | 2 +- models/admin/member/index.php | 16 +++++++++------- models/admin/member/memberInfo.php | 2 +- setup/databaseScripts/dbVersions.php | 3 ++- .../databaseScripts/update_database_V1.1.30.sql | 4 ++-- setup/frontHooks.php | 10 +++++++--- views/admin/management/index.html | 8 +++++++- 8 files changed, 36 insertions(+), 16 deletions(-) diff --git a/classes/data/settings/dataSettingsGeneral.php b/classes/data/settings/dataSettingsGeneral.php index f5ab9bc4..005c735a 100644 --- a/classes/data/settings/dataSettingsGeneral.php +++ b/classes/data/settings/dataSettingsGeneral.php @@ -233,6 +233,13 @@ class GlmDataSettingsGeneral extends GlmDataAbstract 'use' => 'a' ), + // Enable Multiple Active Profiles + 'enable_multiple_profiles' => array( + 'field' => 'enable_multiple_profiles', + 'type' => 'checkbox', + 'use' => 'a' + ), + /* * Member Info edit tab selection */ diff --git a/index.php b/index.php index d6ccbede..e5abbec5 100644 --- a/index.php +++ b/index.php @@ -39,7 +39,7 @@ */ define('GLM_MEMBERS_PLUGIN_VERSION', '2.9.14'); -define('GLM_MEMBERS_PLUGIN_DB_VERSION', '1.1.29'); +define('GLM_MEMBERS_PLUGIN_DB_VERSION', '1.1.30'); // Check if plugin version is not current in WordPress option and if needed updated it if (GLM_MEMBERS_PLUGIN_VERSION != get_option('glmMembersDatabasePluginVersion')) { diff --git a/models/admin/member/index.php b/models/admin/member/index.php index 562d2959..3b82cad1 100644 --- a/models/admin/member/index.php +++ b/models/admin/member/index.php @@ -292,13 +292,15 @@ class GlmMembersAdmin_member_index extends GlmDataMembers // If we do, then activate it if($idTest != null) { - $sql = " - UPDATE ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info - SET status = ".$this->config['status_numb']['Inactive']." - WHERE member = $memberID - AND status = ".$this->config['status_numb']['Active']." - ;"; - $this->wpdb->query($sql); + if ( !$this->config['settings']['enable_multiple_profiles'] ) { + $sql = " + UPDATE ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info + SET status = ".$this->config['status_numb']['Inactive']." + WHERE member = $memberID + AND status = ".$this->config['status_numb']['Active']." + ;"; + $this->wpdb->query($sql); + } $sql = " UPDATE ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info diff --git a/models/admin/member/memberInfo.php b/models/admin/member/memberInfo.php index 38f99bb7..a9a2dadd 100644 --- a/models/admin/member/memberInfo.php +++ b/models/admin/member/memberInfo.php @@ -215,7 +215,7 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo $memberUpdated = false; $memberUpdateError = false; $categories = false; - $multipleProfileEnabeled = true; + $multipleProfileEnabeled = $this->config['settings']['enable_multiple_profiles']; // Check for action option - Should be one of the values in the "switch" statement below $option = false; diff --git a/setup/databaseScripts/dbVersions.php b/setup/databaseScripts/dbVersions.php index 1da40a3a..de82af3b 100644 --- a/setup/databaseScripts/dbVersions.php +++ b/setup/databaseScripts/dbVersions.php @@ -60,7 +60,8 @@ $glmMembersDbVersions = array( '1.1.26' => array('version' => '1.1.26', 'tables' => 18, 'date' => '03/08/17'), '1.1.27' => array('version' => '1.1.27', 'tables' => 19, 'date' => '03/29/17'), '1.1.28' => array('version' => '1.1.28', 'tables' => 19, 'date' => '04/04/17'), - '1.1.29' => array('version' => '1.1.29', 'tables' => 19, 'date' => '04/10/17') + '1.1.29' => array('version' => '1.1.29', 'tables' => 19, 'date' => '04/10/17'), + '1.1.30' => array('version' => '1.1.30', 'tables' => 19, 'date' => '04/12/17') ); diff --git a/setup/databaseScripts/update_database_V1.1.30.sql b/setup/databaseScripts/update_database_V1.1.30.sql index 599cf054..e113e3d2 100644 --- a/setup/databaseScripts/update_database_V1.1.30.sql +++ b/setup/databaseScripts/update_database_V1.1.30.sql @@ -1,6 +1,6 @@ -- Gaslight Media Members Database --- File Created: 03/29/17 --- Database Version: 1.1.29 +-- File Created: 04/12/17 +-- Database Version: 1.1.30 -- Database Update From Previous Version Script -- -- To permit each query below to be executed separately, diff --git a/setup/frontHooks.php b/setup/frontHooks.php index 7f80dded..3ee03cb1 100644 --- a/setup/frontHooks.php +++ b/setup/frontHooks.php @@ -30,12 +30,16 @@ add_filter( 'rewrite_rules_array', function($rules) { $newrules = array(); $newrules['('.$this->config['settings']['canonical_member_page'].')/([^/]*)/([^/]*)$']='index.php?pagename=$matches[1]&memberslug=$matches[2]&profile=$matches[3]'; - $newrules['('.$this->config['settings']['canonical_member_page'].')/([^/]*)$']='index.php?pagename=$matches[1]&memberslug=$matches[2]'; + if ( isset( $this->config['settings']['enable_multiple_profiles'] ) && $this->config['settings']['enable_multiple_profiles'] ) { + $newrules['('.$this->config['settings']['canonical_member_page'].')/([^/]*)$']='index.php?pagename=$matches[1]&memberslug=$matches[2]'; + } return $newrules + $rules; }); add_filter( 'query_vars', function($vars) { array_push($vars, 'memberslug'); - array_push($vars, 'profile'); + if ( isset( $this->config['settings']['enable_multiple_profiles'] ) && $this->config['settings']['enable_multiple_profiles'] ) { + array_push($vars, 'profile'); + } return $vars; }); add_action('wp_loaded', function() { @@ -45,7 +49,7 @@ add_action('wp_loaded', function() { global $wp_rewrite; $wp_rewrite->flush_rules(); } - if ( ! isset( $rules['('.$this->config['settings']['canonical_member_page'].')/([^/]*)/([^/]*)$'] ) ) { + if ( isset( $this->config['settings']['enable_multiple_profiles'] ) && $this->config['settings']['enable_multiple_profiles'] && ! isset( $rules['('.$this->config['settings']['canonical_member_page'].')/([^/]*)/([^/]*)$'] ) ) { trigger_error('Doing rewrite flush - Member detail page', E_USER_NOTICE); // Logging that this is happening so we can track when that happens. global $wp_rewrite; $wp_rewrite->flush_rules(); diff --git a/views/admin/management/index.html b/views/admin/management/index.html index d8806fe2..2ca5d40c 100644 --- a/views/admin/management/index.html +++ b/views/admin/management/index.html @@ -103,6 +103,12 @@ + + Enable Multiple Active Member Profiles: + + + + Member Info Tabs Selection: @@ -117,7 +123,7 @@ - +

Misc. Settings

Google Maps API Key: -- 2.17.1