$where = ' TRUE ';
-
- // If this is a member contact list or the user is not a members manager
- if ($this->config['menuItem'] == 'member' || !apply_filters('glm_members_menu_members', true)) {
-
- // Only list member contacts for the selected member
- if ($haveMember) {
- $other_members_refs = false;
- // 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.
- // Should only be getting the meta data for the real contact.
- // Get userID for original member contact.
- $originalMemberContact = $this->wpdb->get_row(
- $this->wpdb->prepare(
- "SELECT id,email,username
- FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts
- WHERE ref_dest = %d",
- $this->memberID
- ),
- ARRAY_A
- );
- if ( isset( $originalMemberContact ) ) {
- $wpUser = $this->checkContact( $originalMemberContact['email'], $originalMemberContact['username'] );
- // echo '<pre>$wpUser: ' . print_r( $wpUser, true ) . '</pre>';
- $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 . "%'
- AND user_id = " . $wpUser['wpUserEmail']->ID
- );
- // echo '<pre>$other_members_refs: ' . print_r( $other_members_refs, true ) . '</pre>';
- // Get wordpress user
- } else {
- $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;
- }
+ // If the user selected the "Contacts" tab for a member, only show contacts for that member
+ if ($this->config['menuItem'] == 'member') {
+
+ $where .= "
+ AND ref_type = ".$this->config['ref_type_numb']['Member']."
+ AND ref_dest = ".$this->memberID."
+ ";
+
+ // Otherwise this is the main "Contacts" menu item, so if this is not a members manager
+ } elseif (!apply_filters('glm_members_menu_members', true)) {
+
+ // We need to check if they manage multiple members
+ $other_members_refs = $this->wpdb->get_var(
+ "SELECT meta_value
+ FROM " . $this->wpdb->prefix . "usermeta
+ WHERE meta_key = 'glmMembersContactMembers'
+ AND user_id = " . $this->config['loggedInUser']['wpUser']['ID']
+ );
+
+ // If there's member IDs in the user's meta data
+ if ($other_members_refs) {
+
+ // Find contacts belonging to all of those member IDs
+ $where .= "
+ AND ref_type = ".$this->config['ref_type_numb']['Member']."
+ AND ref_dest IN ($other_members_refs)
+ ";
+
+ // Otherwise we only want the contacts for the user's member ID
+ } else {
+ $where .= "
+ AND ref_type = ".$this->config['ref_type_numb']['Member']."
+ AND ref_dest = ".$this->config['loggedInUser']['contactUser']['ref_dest']."
+ ";
}
- } // member contact list or not members manager
+ } // main "contacts" menu
// Filter by text string supplied
if (isset($_REQUEST['filterText'])) {
);
*/
+// If user can manage all members
+if (current_user_can('glm_members_member')) {
+
+ // We need to check if they manage multiple members
+ $other_members_refs = $this->wpdb->get_var(
+ "SELECT meta_value
+ FROM " . $this->wpdb->prefix . "usermeta
+ WHERE meta_key = 'glmMembersContactMembers'
+ AND user_id = " . $this->config['loggedInUser']['wpUser']['ID']
+ );
+
+ // If there's more than 1 member ID in the user's meta data
+ if ($other_members_refs) {
+
+ $refs = explode(',', $other_members_refs);
+
+ if (count($refs) > 1) {
+
+ // Admin Member Contacts Tab
+ if (apply_filters('glm_members_permit_admin_member_contacts_tab', true)) {
+ add_filter('glm-member-db-add-tab-for-member',
+ function($addOnTabs) {
+ $newTabs = array(
+ array(
+ 'text' => 'Contacts',
+ 'menu' => 'member',
+ 'action' => 'contacts'
+ )
+ );
+ $addOnTabs = array_merge($addOnTabs, $newTabs);
+ return $addOnTabs;
+ }
+ );
+ }
+
+ }
+ }
+
+}
+
// If user can manage all members
if (current_user_can('glm_members_members')) {