From c20aaf825753a45bcaad757540f71daead320c50 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Wed, 12 Apr 2017 15:46:30 -0400 Subject: [PATCH] New feature branch for adding management option Management option for having multiple active profiles. --- models/admin/member/memberInfo.php | 9 ++++---- models/front/members/detail.php | 22 +++++++++++++------ ...1.1.29.sql => create_database_V1.1.30.sql} | 7 +++--- .../update_database_V1.1.30.sql | 10 +++++++++ setup/frontHooks.php | 7 ++++++ 5 files changed, 41 insertions(+), 14 deletions(-) rename setup/databaseScripts/{create_database_V1.1.29.sql => create_database_V1.1.30.sql} (99%) create mode 100644 setup/databaseScripts/update_database_V1.1.30.sql diff --git a/models/admin/member/memberInfo.php b/models/admin/member/memberInfo.php index 1c6bc141..38f99bb7 100644 --- a/models/admin/member/memberInfo.php +++ b/models/admin/member/memberInfo.php @@ -212,9 +212,10 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo { $this->optionIncludeSelectListData = true; - $memberUpdated = false; - $memberUpdateError = false; - $categories = false; + $memberUpdated = false; + $memberUpdateError = false; + $categories = false; + $multipleProfileEnabeled = true; // Check for action option - Should be one of the values in the "switch" statement below $option = false; @@ -443,7 +444,7 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo $this->memberAmenities = $Amenities->getAmenityRef($this->config['ref_type_numb']['MemberInfo'], $this->memberID); // Lastly, if we have member info, and if this record is active, we need to check for other active records and other things - if ($this->haveMemberInfo) { + if ($this->haveMemberInfo && !$multipleProfileEnabeled) { // Check if the updated info record was set to active $activeTest = $this->isActive(); diff --git a/models/front/members/detail.php b/models/front/members/detail.php index 382ee419..5786bd64 100644 --- a/models/front/members/detail.php +++ b/models/front/members/detail.php @@ -221,12 +221,12 @@ class GlmMembersFront_members_detail extends GlmDataMemberInfo $rrMemberSlug = get_query_var('memberslug', ''); if ($rrMemberSlug != '') { - $sql = " - SELECT id - FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX. "members - WHERE member_slug = '$rrMemberSlug' - ;"; - $id = $this->wpdb->get_var($sql); + $sql = " + SELECT id + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX. "members + WHERE member_slug = '$rrMemberSlug' + ;"; + $id = $this->wpdb->get_var($sql); // Otherwise if member ID submitted in the URL } elseif (isset($_REQUEST['id']) && $_REQUEST['id'] > 0) { @@ -263,8 +263,15 @@ class GlmMembersFront_members_detail extends GlmDataMemberInfo $files = false; $haveFiles = false; + $profileId = get_query_var('profile', ''); + if ( $profileId = filter_var( $profileId, FILTER_VALIDATE_INT ) ) { + echo '
$profileId: ' . print_r( $profileId, true ) . '
'; + $memberData = $this->getEntry( $profileId ); + } else { + // Find the active member info record and get it with main member data + $memberData = $this->getActiveInfoForMember($id); + } // Find the active member info record and get it with main member data - $memberData = $this->getActiveInfoForMember($id); if (GLM_MEMBERS_PLUGIN_FRONT_DEBUG) { glmMembersFront::addNotice($memberData, 'DataBlock', 'Member Info with Member Data'); @@ -345,6 +352,7 @@ class GlmMembersFront_members_detail extends GlmDataMemberInfo } // Since the ID we recieved with the member data is the pointer to the member info record, replace it with member ID + $memberData['memberInfoId'] = $memberData['id']; $memberData['id'] = $memberData['member_pointer']; // Compile template data diff --git a/setup/databaseScripts/create_database_V1.1.29.sql b/setup/databaseScripts/create_database_V1.1.30.sql similarity index 99% rename from setup/databaseScripts/create_database_V1.1.29.sql rename to setup/databaseScripts/create_database_V1.1.30.sql index 73aba4ef..a217000e 100644 --- a/setup/databaseScripts/create_database_V1.1.29.sql +++ b/setup/databaseScripts/create_database_V1.1.30.sql @@ -291,7 +291,8 @@ CREATE TABLE {prefix}settings_general ( phone_infix TINYTEXT DEFAULT NULL, phone_format TINYTEXT DEFAULT NULL, default_state TINYTEXT DEFAULT NULL, - enable_counties BOOLEAN DEFAULT '1', + enable_counties BOOLEAN DEFAULT '0', + enable_multiple_profiles BOOLEAN DEFAULT '0', memb_info_location BOOLEAN DEFAULT '1', memb_info_contact BOOLEAN DEFAULT '1', memb_info_categories BOOLEAN DEFAULT '1', @@ -408,9 +409,9 @@ CREATE TABLE {prefix}settings_general ( -- Set default entry INSERT INTO {prefix}settings_general - ( id, time_zone, canonical_member_page, list_logo_size, list_map_logo_size, detail_logo_size, detail_map_logo_size, list_pagination, list_pagination_count, enable_counties) + ( id, time_zone, canonical_member_page, list_logo_size, list_map_logo_size, detail_logo_size, detail_map_logo_size, list_pagination, list_pagination_count, enable_counties, enable_multiple_profiles) VALUES - ( 1, 'America/Detroit', 'member-detail', 'large', 'thumb', 'large', 'thumb', '1', 20, 0 ) + ( 1, 'America/Detroit', 'member-detail', 'large', 'thumb', 'large', 'thumb', '1', 20, 0, 0 ) ; ---- diff --git a/setup/databaseScripts/update_database_V1.1.30.sql b/setup/databaseScripts/update_database_V1.1.30.sql new file mode 100644 index 00000000..599cf054 --- /dev/null +++ b/setup/databaseScripts/update_database_V1.1.30.sql @@ -0,0 +1,10 @@ +-- Gaslight Media Members Database +-- File Created: 03/29/17 +-- Database Version: 1.1.29 +-- Database Update From Previous Version Script +-- +-- To permit each query below to be executed separately, +-- all queries must be separated by a line with four dashes +-- Sets which character to use to separate phone numbers + +ALTER TABLE {prefix}settings_general ADD COLUMN enable_multiple_profiles BOOLEAN DEFAULT 0; diff --git a/setup/frontHooks.php b/setup/frontHooks.php index af79d651..7f80dded 100644 --- a/setup/frontHooks.php +++ b/setup/frontHooks.php @@ -29,11 +29,13 @@ // Setup rewrite for member detail page 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]'; return $newrules + $rules; }); add_filter( 'query_vars', function($vars) { array_push($vars, 'memberslug'); + array_push($vars, 'profile'); return $vars; }); add_action('wp_loaded', function() { @@ -43,6 +45,11 @@ add_action('wp_loaded', function() { global $wp_rewrite; $wp_rewrite->flush_rules(); } + if ( ! 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(); + } }); /* -- 2.17.1