From c9de656aaae717ce230a608fd6e4d9868be83371 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Thu, 22 Feb 2018 15:33:41 -0500 Subject: [PATCH] Check the member for contacts that may have multiple members. Query to get usermeta for anything that matches current memberID. Then use that to query for any additional contacts that may be allowed to edit the member. --- models/admin/contacts/index.php | 176 ++++++++++++++++++-------------- views/admin/contacts/index.html | 42 ++++---- 2 files changed, 118 insertions(+), 100 deletions(-) diff --git a/models/admin/contacts/index.php b/models/admin/contacts/index.php index 1523490..c765882 100644 --- a/models/admin/contacts/index.php +++ b/models/admin/contacts/index.php @@ -98,44 +98,43 @@ class GlmMembersAdmin_contacts_index extends GlmDataContacts public function modelAction($actionData = false) { - $view = 'index.html'; - $option = 'list'; - $fromMemberMenu = false; - $loggedInMember = false; - $refType = false; - $refTypeName = false; - $haveMember = false; - $this->memberID = false; - $memberData = false; - $memberName = false; - $membersList = false; - $contactsList = false; - $haveContacts = false; - $contactID = false; - $contactInfo = false; - $newContactEmailExists = false; + $view = 'index.html'; + $option = 'list'; + $fromMemberMenu = false; + $loggedInMember = false; + $refType = false; + $refTypeName = false; + $haveMember = false; + $this->memberID = false; + $memberData = false; + $memberName = false; + $membersList = false; + $contactsList = false; + $haveContacts = false; + $contactID = false; + $contactInfo = false; + $newContactEmailExists = false; $newContactUsernameExists = false; - $misMatchedWpUsers = false; - $newContactCreated = false; - $usingExistingWPContact = false; - $usernameChangedToWP = false; - $contactUpdated = false; - $filterArchived = false; - $filterText = false; - $haveFilter = false; - $userDeleted = false; - $wpUserDeleted = false; - $contactMembers = array(); - - $numbContacts = false; - $numbDisplayed = false; - $lastDisplayed = false; - $paging = true; - $prevStart = false; - $nextStart = false; - $start = 1; - $limit = 20; // Set to the number of listings per page - $namesList = false; + $misMatchedWpUsers = false; + $newContactCreated = false; + $usingExistingWPContact = false; + $usernameChangedToWP = false; + $contactUpdated = false; + $filterArchived = false; + $filterText = false; + $haveFilter = false; + $userDeleted = false; + $wpUserDeleted = false; + $contactMembers = array(); + $numbContacts = false; + $numbDisplayed = false; + $lastDisplayed = false; + $paging = true; + $prevStart = false; + $nextStart = false; + $start = 1; + $limit = 20; // Set to the number of listings per page + $namesList = false; $where = ''; @@ -540,7 +539,26 @@ class GlmMembersAdmin_contacts_index extends GlmDataContacts // Only list member contacts for the selected member if ($haveMember) { - $where .= " AND ref_type = ".$this->config['ref_type_numb']['Member'].' AND ref_dest = '.$this->memberID; + // Have to query the meta data before sending it back into + // db query. Would work but it's getting back a string + // instead of an array of ints. + $other_members_refs = $this->wpdb->get_var( + "SELECT meta_value + FROM " . $this->wpdb->prefix . "usermeta + WHERE meta_key = 'glmMembersContactMembers' + AND meta_value LIKE '%" . $this->memberID . "%'" + ); + $where .= " AND ref_type = " . $this->config['ref_type_numb']['Member']; + if ( $other_members_refs ) { + // Make sure the $other_members_refs is correct + $exploded_refs = explode( ',', $other_members_refs ); + // Clean array of empties + $clean_refs = array_filter( $exploded_refs ); + $where .= " AND ( ref_dest = " . $this->memberID . " + OR ref_dest IN ( " . implode( ',', $clean_refs ) . " ) )"; + } else { + $where .= " AND ref_dest = " . $this->memberID; + } } // Filter by text string supplied @@ -556,6 +574,7 @@ class GlmMembersAdmin_contacts_index extends GlmDataContacts } // Get the total number of contacts listed + // echo '
$where: ' . print_r( $where, true ) . '
'; $numbContacts = $this->getStats($where); @@ -625,53 +644,52 @@ class GlmMembersAdmin_contacts_index extends GlmDataContacts // Compile template data $templateData = array( - 'option' => $option, - 'loggedInMember' => $loggedInMember, - 'fromMemberMenu' => $fromMemberMenu, - 'haveMember' => $haveMember, - 'memberID' => $this->memberID, - 'memberData' => $memberData, - 'memberName' => $memberName, - 'membersList' => $membersList, - 'refType' => $refType, - 'refTypeName' => $refTypeName, - 'haveContacts' => $haveContacts, - 'contactsList' => $contactsList['list'], - 'numbContacts' => $numbContacts, - 'contactID' => $contactID, - 'contactInfo' => $contactInfo, - 'newContactEmailExists' => $newContactEmailExists, + 'option' => $option, + 'loggedInMember' => $loggedInMember, + 'fromMemberMenu' => $fromMemberMenu, + 'haveMember' => $haveMember, + 'memberID' => $this->memberID, + 'memberData' => $memberData, + 'memberName' => $memberName, + 'membersList' => $membersList, + 'refType' => $refType, + 'refTypeName' => $refTypeName, + 'haveContacts' => $haveContacts, + 'contactsList' => $contactsList['list'], + 'numbContacts' => $numbContacts, + 'contactID' => $contactID, + 'contactInfo' => $contactInfo, + 'newContactEmailExists' => $newContactEmailExists, 'newContactUsernameExists' => $newContactUsernameExists, - 'misMatchedWpUsers' => $misMatchedWpUsers, - 'usernameChangedToWP' => $usernameChangedToWP, - 'newContactCreated' => $newContactCreated, - 'usingExistingWPContact' => $usingExistingWPContact, - 'contactUpdated' => $contactUpdated, - 'filterArchived' => $filterArchived, - 'filterText' => $filterText, - 'haveFilter' => $haveFilter, - 'userDeleted' => $userDeleted, - 'wpUserDeleted' => $wpUserDeleted, - 'contactMembers' => $contactMembers, - - 'numbDisplayed' => $numbDisplayed, - 'lastDisplayed' => $lastDisplayed, - 'paging' => $paging, - 'prevStart' => $prevStart, - 'nextStart' => $nextStart, - 'start' => $start = 1, - 'limit' => $limit, - 'namesList' => $namesList, - 'EntityManagerRole' => $this->config['contact_role_numb']['EntityManager'] + 'misMatchedWpUsers' => $misMatchedWpUsers, + 'usernameChangedToWP' => $usernameChangedToWP, + 'newContactCreated' => $newContactCreated, + 'usingExistingWPContact' => $usingExistingWPContact, + 'contactUpdated' => $contactUpdated, + 'filterArchived' => $filterArchived, + 'filterText' => $filterText, + 'haveFilter' => $haveFilter, + 'userDeleted' => $userDeleted, + 'wpUserDeleted' => $wpUserDeleted, + 'contactMembers' => $contactMembers, + 'numbDisplayed' => $numbDisplayed, + 'lastDisplayed' => $lastDisplayed, + 'paging' => $paging, + 'prevStart' => $prevStart, + 'nextStart' => $nextStart, + 'start' => $start = 1, + 'limit' => $limit, + 'namesList' => $namesList, + 'EntityManagerRole' => $this->config['contact_role_numb']['EntityManager'] ); // Return status, any suggested view, and any data to controller return array( - 'status' => true, + 'status' => true, 'modelRedirect' => false, - 'view' => 'admin/contacts/'.$view, - 'data' => $templateData + 'view' => 'admin/contacts/'.$view, + 'data' => $templateData ); } @@ -784,4 +802,4 @@ class GlmMembersAdmin_contacts_index extends GlmDataContacts } } -?> \ No newline at end of file +?> diff --git a/views/admin/contacts/index.html b/views/admin/contacts/index.html index f66307e..f278f30 100644 --- a/views/admin/contacts/index.html +++ b/views/admin/contacts/index.html @@ -21,22 +21,22 @@
- List Filters:   + List Filters:      Text Search:
- +

Total found: {$numbContacts}  

- + {if $paging} - {/if} - + {/if} + @@ -54,7 +54,7 @@ {foreach $contactsList as $c} @@ -76,36 +76,36 @@ {/if}
- {if $fromMemberMenu} + {if $fromMemberMenu} {$c.lname}, {$c.fname} {else} {$c.lname}, {$c.fname} @@ -66,7 +66,7 @@ {$c.access.name} {$c.username} - {$c.ref_type.name}: + {$c.ref_type.name}: {$c.ref_dest_name}
- + {if $paging} - {/if} + {/if} + + - - - + {include file='admin/footer.html'} -- 2.17.1