Check the member for contacts that may have multiple members.
authorSteve Sutton <steve@gaslightmedia.com>
Thu, 22 Feb 2018 20:33:41 +0000 (15:33 -0500)
committerSteve Sutton <steve@gaslightmedia.com>
Thu, 22 Feb 2018 20:33:41 +0000 (15:33 -0500)
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
views/admin/contacts/index.html

index 1523490..c765882 100644 (file)
@@ -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 '<pre>$where: ' . print_r( $where, true ) . '</pre>';
 
                 $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
+?>
index f66307e..f278f30 100644 (file)
         <input type="hidden" name="limit" value="{$limit}">
 
         <div class="">
-            <span{if $haveFilter} class="glm-notice"{/if}><b>List Filters:</b>&nbsp;&nbsp;</span> 
+            <span{if $haveFilter} class="glm-notice"{/if}><b>List Filters:</b>&nbsp;&nbsp;</span>
             &nbsp;&nbsp;
             <span class="glm-nowrap">
                 <b>Text Search: </b><input  id="glmContactsSearch" name="filterText" type="text" id="autoTest" value="{$filterText}">
                 <input type="submit" value="Submit">
         </div>
-        
+
         <br clear="all">
 
         <p><b>Total found:</b> {$numbContacts}&nbsp;&nbsp;</p>
-        
+
         {if $paging}
             <input type="Submit" name="pageSelect" value="Previous {$limit} Contacts" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
             <input type="Submit" name="pageSelect" value="Next {$limit} Contacts" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
-        {/if}    
-            
+        {/if}
+
         <table class="wp-list-table striped glm-admin-table">
             <thead>
                 <tr>
@@ -54,7 +54,7 @@
         {foreach $contactsList as $c}
                 <tr>
                     <td class="glm-shrink">
-            {if $fromMemberMenu}                    
+            {if $fromMemberMenu}
                         <a href="{$thisUrl}?page=glm-members-admin-menu-member&glm_action=contacts&option=edit&member={$c.ref_dest}&contact={$c.id}">{$c.lname}, {$c.fname}</a>
             {else}
                         <a href="{$thisUrl}?page=glm-members-admin-menu-contacts&glm_action=index&option=edit&member={$c.ref_dest}&contact={$c.id}">{$c.lname}, {$c.fname}</a>
@@ -66,7 +66,7 @@
                     <td class="glm-shrink">{$c.access.name}</td>
                     <td class="glm-nowrap">{$c.username}</td>
                     <td class="glm-nowrap">
-                        {$c.ref_type.name}: 
+                        {$c.ref_type.name}:
                         <a href="{$thisUrl}?page=glm-members-admin-menu-member&glm_action=index&member={$c.ref_dest}">{$c.ref_dest_name}</a>
                     </td>
                 </tr>
     {/if}
             </tbody>
         </table>
-    
+
         {if $paging}
             <input type="Submit" name="pageSelect" value="Previous {$limit} Contacts" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
             <input type="Submit" name="pageSelect" value="Next {$limit} Contacts" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
-        {/if}    
+        {/if}
+
+    </form>
 
-    </form>  
-          
     <script type="text/javascript">
         jQuery(document).ready(function($) {
-            
-/*            
+
+/*
             // Filter triggers
             $(".listFilter" ).change( function() {
-                
+
                 var filter = '';
-                
+
                 // Check for archived filter
                 if ($("#filterArchived").attr('checked')) {
                     filter += '&filterArchived=true';
                 }
-                
+
                 // Check for text filter
                 var filterText = $("#filterText").val();
                 if (filterText != '') {
                     filter += '&filterText=' + encodeURIComponent(filterText).replace(/%20/g,'+');
                 }
-                
+
                 window.location.href = "{$thisUrl}?page={$thisPage}&glm_action=index" + filter;
-                
+
                 return false;
             });
 */
                 { label: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"} {$e.ref_dest_name|replace:'"':"'"} ( username: {$e.username})", value: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"}, {$e.ref_dest_name|replace:'"':"'"}, {$e.username}", id: '{$e.id}', member: '{$e.ref_dest}' },
     {/foreach}
              ];
-            
+
              $( "#glmContactsSearch" ).autocomplete({
                  source: availableTags,
                  html: true,
-                 position: { my : "right top", at: "right bottom" },
+                 position: { my : "left top", at: "left bottom" },
                  select: function( event, ui ) {
                      var contactID = ui.item.id;
                      var memberID = ui.item.member;
 
         });
     </script>
-            
+
 
 
 {include file='admin/footer.html'}