Adding custom fields to member export.
authorSteve Sutton <steve@gaslightmedia.com>
Fri, 29 Jun 2018 16:46:53 +0000 (12:46 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Fri, 29 Jun 2018 16:46:53 +0000 (12:46 -0400)
Bring the custom fields into member export.

models/admin/ajax/membersListExport.php
views/admin/ajax/membersListExport.html
views/admin/ajax/membersListExportCsv.html
views/admin/members/list.html

index a2905ca..e4f40b5 100644 (file)
@@ -97,6 +97,8 @@ class GlmMembersAdmin_ajax_membersListExport extends GlmDataMemberInfo
         $start          = 1;
         $limit          = 20;        // Set to the number of listings per page
         $namesList      = false;
+        $CFSelect       = false;
+        $CFHeaders      = false;
 
         // Check selected fields
         $select = array(
@@ -127,6 +129,20 @@ class GlmMembersAdmin_ajax_membersListExport extends GlmDataMemberInfo
             'exportViews'           => $this->checkFlag('exportViews')
         );
 
+        // Check for selection of Custom Fields
+        $fieldPluginActive = apply_filters( 'glm-members-customfields-active', false );
+        if ( $fieldPluginActive ) {
+            $customFields = apply_filters( 'glm-member-db-fields-get-members-fields', false, 'glm-member-db' );
+            if ( $customFields ) {
+                foreach ( $customFields as $cf ) {
+                    if ( isset( $_REQUEST['exportCF'][$cf['id']] ) ) {
+                        $CFSelect[]  = $cf['id'];
+                        $CFHeaders[] = $cf['field_name'];
+                    }
+                }
+            }
+        }
+
         // Only return information records that are active
 
         // Check if this is a request to show archived members
@@ -234,17 +250,10 @@ class GlmMembersAdmin_ajax_membersListExport extends GlmDataMemberInfo
           FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "categories C
         ORDER BY C.parent,C.name";
         $category_data = $this->wpdb->get_results( $sql, ARRAY_A );
-        //echo '<pre>$category_data: ' . print_r( $category_data, true ) . '</pre>';
 
-        // echo '<pre>$where: ' . print_r( $where, true ) . '</pre>';
         // Get a current list of members without paging
         $list = $this->getList($where, "member_name");
 
-        // echo '<pre>$count: ' . print_r( count($list), true ) . '</pre>';
-
-        // echo '<pre>$list: ' . print_r( $list, true ) . '</pre>';
-        // exit;
-
         // If we have list entries - even if it's an empty list
         $success     = true;
         $haveMembers = false;
@@ -258,6 +267,17 @@ class GlmMembersAdmin_ajax_membersListExport extends GlmDataMemberInfo
 
                 $haveMembers = true;
 
+                // If Custom Fields are selected
+                if ( $CFSelect && !empty( $CFSelect ) ) {
+
+                    foreach( $list as $k => $v ) {
+                        foreach ( $CFSelect as $cf_key => $cf_id ) {
+                            $list[$k][$CFHeaders[$cf_key]] = apply_filters( 'glm_custom_fields_by_entity_id', $CFHeaders[$cf_key], $v['id'] );
+                        }
+                    }
+
+                }
+
                 // If URL Clicks and/or Views are selected
                 if ($select['exportClicks'] || $select['exportViews']) {
 
@@ -298,6 +318,9 @@ class GlmMembersAdmin_ajax_membersListExport extends GlmDataMemberInfo
             }
         }
 
+        // echo '<pre>$list: ' . print_r( $list, true ) . '</pre>';
+        // exit;
+
         // Compile template data
         $templateData = array(
             'category_data'  => $category_data,
@@ -317,7 +340,9 @@ class GlmMembersAdmin_ajax_membersListExport extends GlmDataMemberInfo
             'nextStart'      => $nextStart,
             'start'          => $start,
             'limit'          => $limit,
-            'namesList'      => $namesList
+            'namesList'      => $namesList,
+            'CFSelect'       => $CFSelect,
+            'CFHeaders'      => $CFHeaders,
         );
 
         $view = 'admin/ajax/membersListExport.html';
index 7df1761..8d39f4e 100644 (file)
@@ -35,6 +35,7 @@
                     {if $select.exportPriContactName}<th align="left">Primary Contact</th>{/if}
                     {if $select.exportPriContactEmail}<th align="left">Primary Contact E-Mail</th>{/if}
                     {if $select.exportUrl}<th align="left">Web Address</th>{/if}
+                    {if $CFHeaders}{foreach $CFHeaders as $cHead}<th align="left">{$cHead}</th>{/foreach}{/if}
                     {if $select.exportCategories}
                         {if $category_data}
                             {foreach $category_data as $cat}
@@ -72,6 +73,7 @@
                     {if $select.exportPriContactName}<td>{if $m.primary_contact}{$m.primary_contact.fname} {$m.primary_contact.lname}{/if}</td>{/if}
                     {if $select.exportPriContactEmail}<td>{if $m.primary_contact}{$m.primary_contact.email}{/if}</td>{/if}
                     {if $select.exportUrl}<td>{$m.url}</td>{/if}
+                    {if $CFHeaders}{foreach $CFHeaders as $cHead}<td>{$m[$cHead]}</td>{/foreach}{/if}
                     {if $select.exportCategories}
                         {if $category_data}
                             {foreach $category_data as $cat}
index a32ff70..250e208 100644 (file)
@@ -24,6 +24,7 @@
 {if $select.exportPriContactName}"Pri Contact",{/if}
 {if $select.exportPriContactEmail}"Pri Contact E-Mail",{/if}
 {if $select.exportUrl}"Web Address",{/if}
+{if $CFHeaders}{foreach $CFHeaders as $cHead}"{$cHead}",{/foreach}{/if}
 {if $select.exportCategories} {if $category_data} {foreach $category_data as $cat} "{if $cat.parent_name}{$cat.parent_name}:{/if}{$cat.name}" {if !$cat@last},{/if} {/foreach} {/if} {/if}
 
 {foreach $members as $m}
@@ -51,6 +52,7 @@
 {if $select.exportPriContactName}"{if $m.primary_contact}{$m.primary_contact.fname} {$m.primary_contact.lname}{/if}",{/if}
 {if $select.exportPriContactEmail}"{if $m.primary_contact}{$m.primary_contact.email}{/if}",{/if}
 {if $select.exportUrl}"{$m.url}",{/if}
+{if $CFHeaders}{foreach $CFHeaders as $cHead}"{$m[$cHead]}",{/foreach}{/if}
 {if $select.exportCategories} {if $category_data} {foreach $category_data as $cat} {$cat_exists='""'} {foreach $m.categories as $t} {if $t.id == $cat.id}{$cat_exists='"Yes"'}{/if} {/foreach} {$cat_exists} {if !$cat@last},{/if} {/foreach} {/if} {/if}
 
 {/foreach}
index 7bd477a..2cf28a0 100644 (file)
                         </table>
                     </td>
                 </tr>
+                {* Custom Field Part *}
+                {if apply_filters( 'glm-members-customfields-active', false )}
+                <tr>
+                    <th>Custom Fields</th>
+                    <td>
+                    {$customFields = apply_filters('glm-member-db-fields-get-members-fields', false, 'glm-member-db')}
+                    {if $customFields}
+                        {foreach $customFields as $cf}
+                            <input type="checkbox" name="exportCF[{$cf.id}]" checked> {$cf.field_name} <br>
+                        {/foreach}
+                    {/if}
+                    </td>
+                </tr>
+                {/if}
                 <tr>
                     <th>Include&nbsp;Clicks&nbsp;&&nbsp;Views</th>
                     <td>