Updates for working with uptra on the search.
authorSteve Sutton <steve@gaslightmedia.com>
Thu, 23 May 2019 20:26:18 +0000 (16:26 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Thu, 23 May 2019 20:26:18 +0000 (16:26 -0400)
Taking what was started from wmta.
Adding shortcode attributes.

classes/data/dataRegions.php
models/front/members/list.php
setup/shortcodes.php
views/front/members/list.html

index cb3c246..5b8248e 100644 (file)
@@ -182,6 +182,7 @@ class GlmDataRegions extends GlmDataAbstract
             $where .= ")
             ";
         }
+        // echo '<pre>$where: ' . print_r( $where, true ) . '</pre>';
 
         // Get a list of all regions (optionally for active members only)
         $regions = $this->getList($where);
index a1eab39..98f17d4 100755 (executable)
@@ -72,7 +72,9 @@ $GLOBALS['showOpts'] = array(
     'logo-filler'           => 'list_show_logo_filler',
     'live-cam'              => 'list_show_live_cam',
     'packages'              => 'list_show_packages',
-    'packages-link'         => 'list_show_packages_link'
+    'packages-link'         => 'list_show_packages_link',
+    'list-ajax-pagination'  => 'list_ajax_pagination',
+    'list-pagination-count' => 'list_pagination_count',
 );
 
 // Load Members data abstract
@@ -245,12 +247,28 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
         static $start         = 1;
         static $limit         = false;
 
+        # Ajax Paging attributes
+        static $ajaxPagination = false;
+        static $listCount      = false;
+
         // If this is the first instance, then set these paramters
         if (!$thisInstance['instanceCount']) {
-            $paging        = $this->config['settings']['list_pagination']; // Now this is in management
-            $limit         = $this->config['settings']['list_pagination_count']; // Now this is in management
+            $paging         = $this->config['settings']['list_pagination']; // Now this is in management
+            $limit          = $this->config['settings']['list_pagination_count']; // Now this is in management
+        }
+
+        $listCount      = $this->config['settings']['list_pagination_count'];
+        $ajaxPagination = $this->config['settings']['list_ajax_pagination'];
+        if ( isset( $actionData['request']['list-pagination-count'] ) && $lCount = filter_var( $actionData['request']['list-pagination-count'], FILTER_VALIDATE_INT ) ) {
+            $listCount = $lCount;
+            $limit     = $listCount;
+        }
+        if ( isset( $actionData['request']['list-ajax-pagination'] ) ) {
+            $ajaxPagination = $actionData['request']['list-ajax-pagination'];
         }
 
+        // echo '<pre>$limit: ' . print_r( $limit, true ) . '</pre>';
+
         // Pre-load settings array with management settings as default using the list above
         $settings = array();
         reset($GLOBALS['showOpts']);
@@ -425,8 +443,9 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
 
             // Get regions for possible use in search pick list for regions used in active member info records.
             require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataRegions.php';
-            $Regions = new GlmDataRegions($this->wpdb, $this->config);
-            $regionData = $Regions->getListForSearch(true, $actionData);
+            $Regions    = new GlmDataRegions( $this->wpdb, $this->config );
+            $regionData = $Regions->getListForSearch( true, $actionData );
+            // echo '<pre>$regionData: ' . print_r( $regionData, true ) . '</pre>';
 
             // Get cities for possible use in search pick list for cities used in active member info records.
             require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCities.php';
@@ -518,10 +537,15 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
                     }
                 }
             }
+            // echo '<pre>$regionData: ' . print_r( $regionData, true ) . '</pre>';
             // Check for user region selection
             $categoryRegionList = '';
             $categoryRegionSep = '';
-            if (isset($_REQUEST) && is_array($regionData) && (isset($_REQUEST['regionUserSearch']) && count($_REQUEST['regionUserSearch']) > 0) || (isset($_REQUEST['regionSearch']) && $_REQUEST['regionSearch'] != "")) {
+            if (    isset( $_REQUEST )
+                && is_array( $regionData )
+                && ( isset( $_REQUEST['regionUserSearch'] ) && count( $_REQUEST['regionUserSearch'] ) > 0 )
+                || ( isset( $_REQUEST['regionSearch']) && $_REQUEST['regionSearch'] != "" )
+            ) {
                 foreach ($regionData as $r) {
                     $id = $r['id'];
                     $regionData[$id]['default'] = false;
@@ -1043,6 +1067,9 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
                         END AS distance";
 
                         $order = " distance ASC, city ASC, member_name ASC ";
+                        // echo '<pre>$order: ' . print_r( $order, true ) . '</pre>';
+                        // echo '<pre>$cityName: ' . print_r( $cityName, true ) . '</pre>';
+                        // echo '<pre>$distanceQuery: ' . print_r( $distanceQuery, true ) . '</pre>';
                     } else {
                         $appendSelect = "";
                         $order = " member_name ASC ";
@@ -1056,6 +1083,7 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
 
                     // $where .= "  ";
                     // echo '<pre>$where: ' . print_r( $where, true ) . '</pre>';
+                    // echo '<pre>$appendSelect: ' . print_r( $appendSelect, true ) . '</pre>';
 
                     ${$resultParam} = $this->getList(
                         $where.$alphaWhere, // where
@@ -1071,6 +1099,7 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
                 // When not full text search sort according to settings
                 } else {
 
+                    // echo '<pre>$where: ' . print_r( $where, true ) . '</pre>';
                     // Get stats for the current selection
                     $membersFound = $this->getStats(str_replace('T.', '', $where));
 
@@ -1318,8 +1347,12 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
             'ajaxLoader'           => ( defined( 'GLM_MEMBER_LIST_AJAX_LOADER' ) && GLM_MEMBER_LIST_AJAX_LOADER ) ? true : false,
             'ajaxNext'             => ( isset( $_REQUEST['ajaxNext'] ) ) ? true : false,
 
+            'isSearch'             => ( isset( $_REQUEST['s'] ) ) ? true : false,
             'wpSearch'             => ( isset( $_REQUEST['s'] ) ) ? stripslashes( $_REQUEST['s'] ) : '',
 
+            'ajaxPagination'       => $ajaxPagination,
+            'listCount'            => $listCount,
+
         );
 
         if (GLM_MEMBERS_PLUGIN_FRONT_DEBUG) {
@@ -1353,7 +1386,12 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
     public function getDistanceQuery( $lat, $lng )
     {
         $foo = "
-        (pow(sin(((T.lat * pi()/180.0) - ($lat * pi()/180.0)) / 2.0), 2) + cos(($lat * pi() / 180.0)) * cos((T.lat * pi() / 180.0)) * pow(sin(((T.lon * pi() / 180.0) - ($lng * pi() / 180.0)) / 2.0), 2))";
+        (
+            pow(sin(((T.lat * pi()/180.0) - ($lat * pi()/180.0)) / 2.0), 2)
+            + cos(($lat * pi() / 180.0))
+            * cos((T.lat * pi() / 180.0))
+            * pow(sin(((T.lon * pi() / 180.0) - ($lng * pi() / 180.0)) / 2.0), 2)
+            )";
 
         return "ceil(3956 * 2 *
                 atan2(sqrt($foo),
index af5b8ec..1720e33 100644 (file)
@@ -152,6 +152,8 @@ if ( isset( $config['settings'] ) && $config['settings']['enable_members'] ) {
                 'amenity-groups'        => 'amenity-groups',
                 'packages'              => 'list_show_packages',
                 'packages-link'         => 'list_show_packages_link',
+                'list-ajax-pagination'  => false,
+                'list-pagination-count' => false,
             )
         ),
         'glm-member-detail' => array(
index 48204ca..149a958 100755 (executable)
 
                 {apply_filters('glm-member-db-front-members-list-listHeaderBottom', '')}
 
+                {$searchParams = "&textSearch={$textSearch}{if $isSearch}&s={$wpSearch|escape:'html'}{/if}&categorySearch={$catSearchSelected}&regionSearch={$regionSearchSelected}&citySearch={$citySearchSelected}"}
+
                 {* Alpha List *}
 
                 {if $showSettings.list_show_search_alpha && !$isSearchPage}
                     <div class="glm-alpha-links">
-                        <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}{if $wpSearch}&s={$wpSearch|escape:'html'}{/if}&categorySearch={$catSearchSelected}&regionSearch={$regionSearchSelected}#glm-member-list-filters-button" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
+                        <a href="{$thisUrl}?glm_action=list{$searchParams}#glm-member-list-filters-button" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
                         {foreach $alphaList as $a}
-                            <a href="{$thisUrl}?glm_action=list&alpha={$a.alpha}&textSearch={$textSearch}{if isset($wpSearch) && $wpSearch}&s={$wpSearch|escape:'html'}{/if}&categorySearch={$catSearchSelected}&regionSearch={$regionSearchSelected}#glm-member-list-filters-button" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
+                        <a href="{$thisUrl}?glm_action=list&alpha={$a.alpha}{$searchParams}#glm-member-list-filters-button" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
                         {/foreach}
                     </div>
                 {/if}
                 {* Page selection top *}
 
                 {if $paging}
-                    {if ( $prevStart || $nextStart ) && !$settings.list_ajax_pagination}
+                    {if ( $prevStart || $nextStart ) && !$ajaxPagination}
                         <br>
                         <div class="paging-container">
-                            <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}{if $wpSearch}&s={$wpSearch|escape:'html'}{/if}&categorySearch={$catSearchSelected}&regionSearch={$regionSearchSelected}&citySearch={$citySearchSelected}&pageSelect=Previous&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}#glm-member-list-filters-button" class="glm-alpha-link" {if !$prevStart} style="pointer-events: none; opacity: 0.5;"{/if}>< Previous page</a>
-                            <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}{if $wpSearch}&s={$wpSearch|escape:'html'}{/if}&categorySearch={$catSearchSelected}&regionSearch={$regionSearchSelected}&citySearch={$citySearchSelected}&pageSelect=Next&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}#glm-member-list-filters-button" class="glm-alpha-link" {if !$nextStart} style="pointer-events: none; opacity: 0.5;"{/if}>Next page ></a>
+                            <a href="{$thisUrl}?glm_action=list{$searchParams}&pageSelect=Previous&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}#glm-member-list-filters-button" class="glm-alpha-link" {if !$prevStart} style="pointer-events: none; opacity: 0.5;"{/if}>< Previous page</a>
+                            <a href="{$thisUrl}?glm_action=list{$searchParams}&pageSelect=Next&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}#glm-member-list-filters-button" class="glm-alpha-link" {if !$nextStart} style="pointer-events: none; opacity: 0.5;"{/if}>Next page ></a>
                         </div>
                         <br>
                     {/if}
 
                 {* Members List *}
 
-                {if $settings.list_ajax_pagination}
+                {if $ajaxPagination}
                     <div id="glm-ajax-list">
                         loading...
                     </div>
 
                 <div class="paging-container">
                     {if $paging}
-                        {if ( $prevStart || $nextStart ) && !$settings.list_ajax_pagination}
+                        {if ( $prevStart || $nextStart ) && !$ajaxPagination}
                             <br>
                             <div class="paging-container">
-                                <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}{if $wpSearch}&s={$wpSearch|escape:'html'}{/if}&categorySearch={$catSearchSelected}&regionSearch={$regionSearchSelected}&citySearch={$citySearchSelected}&pageSelect=Previous&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}#glm-member-list-filters-button" class="glm-alpha-link" {if !$prevStart} style="pointer-events: none; opacity: 0.5;"{/if}>< Previous page</a>
-                                <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}{if $wpSearch}&s={$wpSearch|escape:'html'}{/if}&categorySearch={$catSearchSelected}&regionSearch={$regionSearchSelected}&citySearch={$citySearchSelected}&pageSelect=Next&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}#glm-member-list-filters-button" class="glm-alpha-link" {if !$nextStart} style="pointer-events: none; opacity: 0.5;"{/if}>Next page ></a>
+                                <a href="{$thisUrl}?glm_action=list{$searchParams}&pageSelect=Previous&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}#glm-member-list-filters-button" class="glm-alpha-link" {if !$prevStart} style="pointer-events: none; opacity: 0.5;"{/if}>< Previous page</a>
+                                <a href="{$thisUrl}?glm_action=list{$searchParams}&pageSelect=Next&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}#glm-member-list-filters-button" class="glm-alpha-link" {if !$nextStart} style="pointer-events: none; opacity: 0.5;"{/if}>Next page ></a>
                             </div>
                             <br>
                         {/if}
-                        {if $nextStart && $settings.list_ajax_pagination}
+                        {if $nextStart && $ajaxPagination}
                             <a href="#" class="glm-show-more test" data-next="{$nextStart}">[ Load More ]</a>
                         {/if}
                         <br>
         </div> {* glm-member-db-list *}
     {/if}
 
+    {debug}
     <script>
 
         jQuery(document).ready(function($) {
 
-            {if $settings.list_ajax_pagination}
+            {if $ajaxPagination}
                 // Setup the ajax pagination call.
                 var nextStart    = {if $nextStart}{$nextStart}{else}0{/if};
                 var numberShown  = 0;
 
                 // Call the member list grid content and load in the page.
                 jQuery.ajax({
-                    url: '{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=membersList&limit={$settings.list_pagination_count}{$ajaxRequest}&alpha={$alphaSelected}',
+                    url: '{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=membersList&limit={$listCount}{$ajaxRequest}&alpha={$alphaSelected}',
                     cache: false,
                     async: true,
                     dataType: 'html',
                     success: function( html ){
                         $('#glm-ajax-list').html( html );
-                        numberShown += {$settings.list_pagination_count};
+                        numberShown += {$listCount};
                     },
                 });
 
                     e.preventDefault();
                     var showMoreButton = $(this);
                     jQuery.ajax({
-                        url: '{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=membersList&limit={$settings.list_pagination_count}{$ajaxRequest}&pageSelect=Next&nextStart=' + nextStart + '&ajaxNext=1&alpha={$alphaSelected}',
+                        url: '{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=membersList&limit={$listCount}{$ajaxRequest}&pageSelect=Next&nextStart=' + nextStart + '&ajaxNext=1&alpha={$alphaSelected}',
                         cache: false,
                         async: true,
                         dataType: 'html',
                         success: function( html ){
                             $('#glm-ajax-list').append( html );
-                            nextStart += {$settings.list_pagination_count};
+                            nextStart += {$listCount};
                             if ( nextStart > totalMembers ) {
                                 nextStart = totalMembers;
                                 $('.aLastDisplayed').html(nextStart);
                             } else {
                                 $('.aLastDisplayed').html(nextStart - 1);
                             }
-                            numberShown += {$settings.list_pagination_count};
+                            numberShown += {$listCount};
                             if ( numberShown >= totalMembers ) {
                                 showMoreButton.remove();
                             }