Update filters for search query and the order by.
authorSteve Sutton <steve@gaslightmedia.com>
Thu, 13 Apr 2017 16:51:22 +0000 (12:51 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Thu, 13 Apr 2017 16:51:22 +0000 (12:51 -0400)
For the search query replace space and dash with underscore.
For the order by clause to sort the rvs by just arrived, red hot then
coming soon.

setup/frontHooks.php

index 308ac26..e2065c3 100644 (file)
@@ -59,7 +59,7 @@ add_filter('glm-member-db-front-search-query', function() {
                 break;
             case 'checkbox':
                 // convert name to lower case and replace spaces with _
-                $field_name = str_replace( ' ', '_', strtolower( $field['field_name'] ) );
+                $field_name = preg_replace( '/[ -]/', '_', strtolower( $field['field_name'] ) );
                 if ( isset( $_REQUEST[$field_name] ) && filter_var( $_REQUEST[$field_name], FILTER_VALIDATE_BOOLEAN ) ) {
                     $queryParts[] = " T.id in (
                         SELECT ref_dest
@@ -74,6 +74,34 @@ add_filter('glm-member-db-front-search-query', function() {
     }
     return $queryParts;
 });
+add_filter('glm-member-db-front-search-query-orderby', function($originalOrderBy){
+    // Order by clause for Just Arrived.
+    $orderBy = " (
+    SELECT CASE WHEN field_data = 'Yes' THEN 0 ELSE 1 end
+      FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_field_data
+     WHERE field_id = (SELECT id
+                         FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_fields
+                        WHERE field_name = 'Just Arrived')
+                          AND ref_dest = T.id) ";
+    // Order by clause for Red Hot Deal.
+    $orderBy .= ", (
+    SELECT CASE WHEN field_data = 'Yes' THEN 0 ELSE 1 end
+      FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_field_data
+     WHERE field_id = (SELECT id
+                         FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_fields
+                        WHERE field_name = 'Red Hot Deal')
+                          AND ref_dest = T.id) ";
+    // Order by clause for Coming Soon.
+    $orderBy .= ", (
+    SELECT CASE WHEN field_data = 'Yes' THEN 0 ELSE 1 end
+      FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_field_data
+     WHERE field_id = (SELECT id
+                         FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_fields
+                        WHERE field_name = 'Coming Soon')
+                          AND ref_dest = T.id) ";
+    $orderBy .= ", $originalOrderBy DESC ";
+    return $orderBy;
+});
 add_filter('glm_custom_fields', function($attribute, $id = 0) {
 
     global $wpdb;