From ecf92a23530ae7d87c0c4ee249ad7d3b2507b4d4 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Wed, 30 Jan 2019 09:26:14 -0500 Subject: [PATCH] Add new option for sorting the featured events Sort featured event to top of each date section. --- classes/data/dataManagement.php | 8 ++++++++ index.php | 2 +- models/front/events/list.php | 16 +++++++++++++++- ...e_V0.1.11.sql => create_database_V0.1.12.sql} | 3 ++- setup/databaseScripts/dbVersions.php | 1 + .../databaseScripts/update_database_V0.1.12.sql | 9 +++++++++ views/admin/management/events.html | 1 + views/front/events/agenda_new.html | 2 +- 8 files changed, 38 insertions(+), 4 deletions(-) rename setup/databaseScripts/{create_database_V0.1.11.sql => create_database_V0.1.12.sql} (99%) create mode 100644 setup/databaseScripts/update_database_V0.1.12.sql diff --git a/classes/data/dataManagement.php b/classes/data/dataManagement.php index 19fee08..467ccb9 100644 --- a/classes/data/dataManagement.php +++ b/classes/data/dataManagement.php @@ -281,6 +281,14 @@ class GlmDataEventsManagement extends GlmDataAbstract 'use' => 'a' ), + // Sort first by featured events in agenda view + 'sort_by_featured_in_agenda' => array( + 'field' => 'sort_by_featured_in_agenda', + 'type' => 'checkbox', + 'default' => false, + 'use' => 'a' + ), + // Turn on required fields for Michigan.org 'michigan_org_requirements' => array( 'field' => 'michigan_org_requirements', diff --git a/index.php b/index.php index 0e1b75c..d7b0d1f 100755 --- a/index.php +++ b/index.php @@ -44,7 +44,7 @@ if (!defined('ABSPATH')) { * version from this plugin. */ define('GLM_MEMBERS_EVENTS_PLUGIN_VERSION', '1.7.18'); -define('GLM_MEMBERS_EVENTS_PLUGIN_DB_VERSION', '0.1.11'); +define('GLM_MEMBERS_EVENTS_PLUGIN_DB_VERSION', '0.1.12'); // This is the minimum version of the GLM Members DB plugin require for this plugin. define('GLM_MEMBERS_EVENTS_PLUGIN_MIN_MEMBERS_REQUIRED_VERSION', '2.9.15'); diff --git a/models/front/events/list.php b/models/front/events/list.php index 1635806..1cdb17b 100644 --- a/models/front/events/list.php +++ b/models/front/events/list.php @@ -540,7 +540,20 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction ++$i; ++$eventCountInArray; $mainEvents[$eventDate][$i][$time] = $times; - ksort($mainEvents[$eventDate][$i]); + usort( $mainEvents[$eventDate], function( $a, $b ){ + reset( $a ); + reset( $b); + $aKey = key( $a ); + $bKey = key( $b ); + if ( $this->config['settings']['sort_by_featured_in_agenda'] ) { + // Float the featured events to the top of the sorted array. + if ( $a[$aKey]['featured']['value'] ) { + return -1; + } + } + return strcmp( $aKey, $bKey ); + } ); + if ( $limit && $eventCountInArray === $limit ) { break 3; } @@ -554,6 +567,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction } } $eventsByDate = $mainEvents; + // echo '
' . print_r( $mainEvents, true ) . '
'; // If the events are not grouped by day then they need to be sorted. } else if ( $events && !$groupByDay ) { usort( $events, function( $event1, $event2 ){ diff --git a/setup/databaseScripts/create_database_V0.1.11.sql b/setup/databaseScripts/create_database_V0.1.12.sql similarity index 99% rename from setup/databaseScripts/create_database_V0.1.11.sql rename to setup/databaseScripts/create_database_V0.1.12.sql index 8d42cae..2580318 100644 --- a/setup/databaseScripts/create_database_V0.1.11.sql +++ b/setup/databaseScripts/create_database_V0.1.12.sql @@ -1,6 +1,6 @@ -- Gaslight Media Members Database - Events Add-On -- File Created: 08/18/17 --- Database Version: 0.1.11 +-- Database Version: 0.1.12 -- Database Creation Script -- -- This file is called to create a new set of tables for this @@ -245,6 +245,7 @@ CREATE TABLE {prefix}management ( agenda_view_max_width TINYTEXT NULL, -- Max Width of agenda view detail_ext_links_same_window BOOLEAN DEFAULT '0', -- Turn on to keep from adding target blank to detail page url's michigan_org_requirements BOOLEAN DEFAULT '0', -- Turn on required fields for Michigan.org + sort_by_featured_in_agenda BOOLEAN DEFAULT '0', -- Sort by the featured events in agenda view PRIMARY KEY (id) ); diff --git a/setup/databaseScripts/dbVersions.php b/setup/databaseScripts/dbVersions.php index 4964ef9..578dd2c 100644 --- a/setup/databaseScripts/dbVersions.php +++ b/setup/databaseScripts/dbVersions.php @@ -47,5 +47,6 @@ $glmMembersEventsDbVersions = array( '0.1.9' => array('version' => '0.1.9', 'tables' => 13, 'date' => '10/11/2018'), '0.1.10' => array('version' => '0.1.10', 'tables' => 13, 'date' => '10/19/2018'), '0.1.11' => array('version' => '0.1.11', 'tables' => 13, 'date' => '01/07/2019'), + '0.1.12' => array('version' => '0.1.12', 'tables' => 13, 'date' => '01/30/2019'), ); diff --git a/setup/databaseScripts/update_database_V0.1.12.sql b/setup/databaseScripts/update_database_V0.1.12.sql new file mode 100644 index 0000000..b701be02 --- /dev/null +++ b/setup/databaseScripts/update_database_V0.1.12.sql @@ -0,0 +1,9 @@ +-- Gaslight Media Members Database - Events Add-On +-- File Created: 01/30/19 +-- Database Version: 0.1.12 +-- Database Update From Previous Version Script +-- +-- To permit each query below to be executed separately, +-- all queries must be separated by a line with four dashes + +ALTER TABLE {prefix}management ADD COLUMN sort_by_featured_in_agenda BOOLEAN DEFAULT '0'; -- Sort by the featured events in agenda view diff --git a/views/admin/management/events.html b/views/admin/management/events.html index 9d3b7c3..57dd5eb 100644 --- a/views/admin/management/events.html +++ b/views/admin/management/events.html @@ -107,6 +107,7 @@



+

diff --git a/views/front/events/agenda_new.html b/views/front/events/agenda_new.html index 97d751c..3cc62aa 100644 --- a/views/front/events/agenda_new.html +++ b/views/front/events/agenda_new.html @@ -56,7 +56,7 @@ {$showTime = true} -
+