From 73cab7a1a7f05af2c4601160511cccab71d50eba Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Fri, 28 Apr 2017 17:04:12 -0400 Subject: [PATCH] Adding php session to save the page for event list search. When your paged and edit an event it will remember which page you were on. Needs more testing. --- models/admin/events/list.php | 50 ++++++++++++++++++++++++++++++++++++ setup/adminHooks.php | 6 ++++- views/admin/events/edit.html | 4 +-- 3 files changed, 57 insertions(+), 3 deletions(-) diff --git a/models/admin/events/list.php b/models/admin/events/list.php index 34b6d9a..4631a07 100644 --- a/models/admin/events/list.php +++ b/models/admin/events/list.php @@ -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 diff --git a/setup/adminHooks.php b/setup/adminHooks.php index b0bf4e2..af1a1dc 100644 --- a/setup/adminHooks.php +++ b/setup/adminHooks.php @@ -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(); + } +}); diff --git a/views/admin/events/edit.html b/views/admin/events/edit.html index 5e6087a..9ec8375 100644 --- a/views/admin/events/edit.html +++ b/views/admin/events/edit.html @@ -7,9 +7,9 @@ {if apply_filters('glm_members_permit_admin_member_event', true) && ($option == 'add' || $haveEvent)} {if $haveMember} - Return to Events List + Return to Events List {else} - Return to Events List + Return to Events List {/if} {if $option == 'edit' || $option == 'update'} -- 2.17.1