Adding php session to save the page for event list search.
authorSteve Sutton <steve@gaslightmedia.com>
Fri, 28 Apr 2017 21:04:12 +0000 (17:04 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Fri, 28 Apr 2017 21:04:12 +0000 (17:04 -0400)
When your paged and edit an event it will remember which page you were
on. Needs more testing.

models/admin/events/list.php
setup/adminHooks.php
views/admin/events/edit.html

index 34b6d9a..4631a07 100644 (file)
@@ -609,24 +609,61 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
             case 'list':
             default:
 
+
                 $where = 'true';
 
+                // If we have a back request then go through the PHP_SESSION
+                // and extract them into the REQUEST array.
+                if ( isset( $_REQUEST['back'] ) && filter_var( $_REQUEST['back'], FILTER_VALIDATE_BOOLEAN ) ) {
+                    if ( isset( $_SESSION['search'] ) && is_array( $_SESSION['search'] ) ) {
+                        foreach ( $_SESSION['search'] as $varName => $sessValue ) {
+                            $_REQUEST[$varName] = $sessValue;
+                        }
+                    }
+                }
+
+                // Check for paging
+                if ( isset( $_REQUEST['pageSelect'] ) ) {
+                    $_SESSION['search']['pageSelect'] = $_REQUEST['pageSelect'];
+                } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['pageSelect'] ) ) {
+                    unset( $_SESSION['search']['pageSelect'] );
+                }
+                if ( isset( $_REQUEST['nextStart'] ) ) {
+                    $_SESSION['search']['nextStart'] = $_REQUEST['nextStart'];
+                } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['nextStart'] ) ) {
+                    unset( $_SESSION['search']['nextStart'] );
+                }
+                if ( isset( $_REQUEST['prevStart'] ) ) {
+                    $_SESSION['search']['prevStart'] = $_REQUEST['prevStart'];
+                } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['prevStart'] ) ) {
+                    unset( $_SESSION['search']['prevStart'] );
+                }
+
                 // Check for Archived filter
                 if (isset($_REQUEST['filterArchived']) && $_REQUEST['filterArchived'] == 'on') {
                     $filterArchived = true;
+                    $_SESSION['search']['archived'] = true;
                     $where .= " AND status = " . $this->config['status_numb']['Archived'];
+                } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['filterArchived'] ) ) {
+                    unset( $_SESSION['search']['archived'] );
                 }
 
                 // Check for Pending filter
                 if (isset($_REQUEST['filterPending']) && $_REQUEST['filterPending'] == 'on') {
                     $filterPending = true;
+                    $_SESSION['search']['pending'] = true;
                     $where .= " AND status = " . $this->config['status_numb']['Pending'];
+                } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['filterPending'] ) ) {
+                    unset( $_SESSION['search']['pending'] );
                 }
 
                 // Check for Featured filter
                 if (isset($_REQUEST['filterFeatured']) && $_REQUEST['filterFeatured'] == 'on') {
                     $filterFeatured = true;
+                    $_SESSION['search']['featured'] = true;
                     $where .= " AND featured = true";
+                } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['filterFeatured'] ) ) {
+                    unset( $_SESSION['search']['featured'] );
                 }
 
                 // Add "selected" element default false;
@@ -647,6 +684,7 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
                         $catsSep = ',';
                         $categories[$c]['selected'] = true;
                     }
+                    $_SESSION['search']['cats'] = $cats;
 
                     $where .= " AND id in (
                             SELECT DISTINCT(EC.event)
@@ -657,12 +695,17 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
                                    OR (C.parent in ($cats) AND EC.category = C.id)
                                    )
                     )";
+                } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['filterCategories'] ) ) {
+                    unset( $_SESSION['search']['cats'] );
                 }
 
                 // Check if we have a Text Search string
                 if (isset($_REQUEST['textSearch']) && trim($_REQUEST['textSearch']) != '') {
                     $textSearch = trim($_REQUEST['textSearch']);
                     $where .= " AND name LIKE '%$textSearch%'";
+                    $_SESSION['search']['textSearch'] = $textSearch;
+                } else if ( isset( $_REQUEST['searched'] ) && trim($_REQUEST['textSearch']) == '' ) {
+                    unset( $_SESSION['search']['textSearch'] );
                 }
 
 
@@ -672,10 +715,13 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
                     $fromDate = date('m/d/Y', strtotime($_REQUEST['fromDate']));
                     $fromMYSQL = date('Y-m-d', strtotime($fromDate));
                     $dateWhere = " end_time >= '$fromMYSQL' ";
+                    $_SESSION['search']['fromDate'] = $fromDate;
                 } else if ( !isset( $_REQUEST['searched'] ) ) {
                     $fromDate = date('m/d/Y');
                     $fromMYSQL = date('Y-m-d', strtotime($fromDate));
                     $dateWhere = " end_time >= '$fromMYSQL' ";
+                } else if ( isset( $_REQUEST['searched'] ) && trim($_REQUEST['fromDate']) == '' ) {
+                    unset( $_SESSION['search']['fromDate'] );
                 }
 
                 // If we have a to Date
@@ -692,6 +738,9 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
                     } else {
                         $dateWhere = " start_time <= '$toMYSQL' ";
                     }
+                    $_SESSION['search']['toDate'] = $toDate;
+                } else if ( isset( $_REQUEST['searched'] ) && trim($_REQUEST['toDate']) == '' ) {
+                    unset( $_SESSION['search']['toDate'] );
                 }
 
                 // If we have from and to dates, do search for those inclusive
@@ -709,6 +758,7 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
                 // Check if the list is for a specific member
                 if (defined('GLM_EVENTS_MEMBER_MENU') || $memberID) {
                     $where .= " AND ref_dest = $memberID";
+                    $_SESSION['search']['memberID'] = $memberID;
                 }
 
                 // Get the total number of events listed
index b0bf4e2..af1a1dc 100644 (file)
@@ -173,4 +173,8 @@ add_filter( 'glm-hook-list-map-items-by-latlon', function($data) {
     return $data;
 
 });
-
+add_action( 'init', function(){
+    if ( ! session_id() ) {
+        session_start();
+    }
+});
index 5e6087a..9ec8375 100644 (file)
@@ -7,9 +7,9 @@
 {if apply_filters('glm_members_permit_admin_member_event', true) && ($option == 'add' || $haveEvent)}
 
   {if $haveMember}
-    <a href="{$thisUrl}?page=glm-members-admin-menu-member&glm_action=events&member={$memberID}" class="button button-secondary glm-button glm-right">Return to Events List</a>
+    <a href="{$thisUrl}?page=glm-members-admin-menu-member&glm_action=events&member={$memberID}&back=1" class="button button-secondary glm-button glm-right">Return to Events List</a>
   {else}
-    <a href="{$thisUrl}?page={$thisPage}&glm_action=list" class="button button-secondary glm-button glm-right">Return to Events List</a>
+    <a href="{$thisUrl}?page={$thisPage}&glm_action=list&back=1" class="button button-secondary glm-button glm-right">Return to Events List</a>
   {/if}
 
   {if $option == 'edit' || $option == 'update'}