From: Steve Sutton Date: Thu, 28 Jul 2016 19:39:14 +0000 (-0400) Subject: New template for event front page. X-Git-Tag: v1.2.21^2~1^2~2 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=f0842c5321bf050f558c69d0c8cefac51a0f8bdb;p=WP-Plugins%2Fglm-member-db-events.git New template for event front page. Adding new attribute for the event list: featured (bool) When set it will only get the featured events. Still they'll be current ones. --- diff --git a/models/front/events/baseAction.php b/models/front/events/baseAction.php index 46752e3..f6d1926 100644 --- a/models/front/events/baseAction.php +++ b/models/front/events/baseAction.php @@ -75,7 +75,7 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents * @access public * @return array events */ - public function getModelEventsData($categoryId = null, $limit = null, $memberId = null) + public function getModelEventsData( $categoryId = null, $limit = null, $memberId = null ) { $this->postAddTimes = true; @@ -88,7 +88,7 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents // If a catgegory ID is supplied if ($catId = filter_var( $categoryId, FILTER_VALIDATE_INT )) { $events = $this->getEventsByCategory( $catId, $limit ); - // Else if a event name is supplied + // Else if a event name is supplied } else if ($term = filter_var( $categoryId, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES )) { $searchTerm = $this->wpdb->esc_like( stripslashes( $term ) ); $where .= "T.name like '%" . $term . "%' @@ -102,21 +102,21 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents "; $order = "T.id"; $order .= " LIMIT 2 OFFSET 0"; - $events = $this->getList($where, $order); - } else if ( $limit = filter_var( $limit, FILTER_VALIDATE_INT ) ) { - // Need to get the event id's for the next $limit number of events. - $where .= "T.id - AND T.status = " . $this->config['status_numb']['Active'] . " - AND T.id IN ( - SELECT distinct event - FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times AS ET - WHERE active - AND start_time >= NOW() - ) - "; - $order = "T.id"; $events = $this->getList( $where, $order ); - // Otherwise get all categories + } else if ( $limit = filter_var( $limit, FILTER_VALIDATE_INT ) ) { + // Need to get the event id's for the next $limit number of events. + $where .= "T.id + AND T.status = " . $this->config['status_numb']['Active'] . " + AND T.id IN ( + SELECT distinct event + FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times AS ET + WHERE active + AND start_time >= NOW() + ) + "; + $order = "T.id"; + $events = $this->getList( $where, $order ); + // Otherwise get all categories } else { $where .= "T.status = " . $this->config['status_numb']['Active'] . " AND T.id IN ( @@ -126,21 +126,20 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents AND " . $this->dateRange . " ) "; - $events = $this->getList($where); + $events = $this->getList( $where ); } - //echo '
$events: ' . print_r($events, true) . '
'; - if ( !empty($events) ) { + if ( !empty( $events ) ) { foreach ( $events as &$event ) { // grab the first from times and see if it's ongoing or not - if ($event['times']) { - reset($event['times']); - $firstKey = key($event['times']); - reset($event['times']); + if ( $event['times'] ) { + reset( $event['times'] ); + $firstKey = key( $event['times'] ); + reset( $event['times'] ); } $event['dates'] = $this->getEventDate( - strtotime($event['starting_date']), - strtotime($event['ending_date']), + strtotime( $event['starting_date'] ), + strtotime( $event['ending_date'] ), 'timestamp' ); } @@ -149,6 +148,23 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents return $events; } + /** + * getFeaturedEventsData + * + * Fetch all events from current date on that are marked featured. + * + * @access public + * @return mixed + */ + public function getFeaturedEventsData() + { + $this->postAddTimes = true; + $where .= "T.featured = 1"; + $events = $this->getList( $where ); + $this->postAddTimes = false; + return $events; + } + /** * getModelEventData * @@ -159,19 +175,19 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents * @access public * @return array The event */ - public function getModelEventData($eventId) + public function getModelEventData( $eventId ) { $this->postAddTimes = true; $this->postAddLocations = true; - $event = $this->getEntry($eventId); + $event = $this->getEntry( $eventId ); if ( $event['url'] ) { if ( !preg_match( '/^http:|https:/', $event['url'] ) ) { $event['url'] = 'http://' . $event['url']; } } $event['dates'] = $this->getEventDate( - strtotime($event['starting_date']), - strtotime($event['ending_date']), + strtotime( $event['starting_date'] ), + strtotime( $event['ending_date'] ), 'timestamp' ); $this->postAddTimes = false; diff --git a/models/front/events/list.php b/models/front/events/list.php index 9352e4a..8e966ef 100644 --- a/models/front/events/list.php +++ b/models/front/events/list.php @@ -42,23 +42,37 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction * @access public * @return void */ - public function modelAction($actionData = false) + public function modelAction( $actionData = false ) { - $status = $categoryId = null; - $action = ''; - $settings = $events = $event = $categoryEvents = array(); - $calDates = false; + $status = null; + $categoryId = null; + $action = ''; + $settings = array(); + $events = array(); + $event = array(); + $calDates = false; + $memberId = null; + $view = null; + $featured = null; + $eventsByDate = null; // If a memberID has been specified, limit to that member - $memberId = $actionData['request']['member'] - 0; + if ( isset( $actiondata['request']['member'] ) ) { + $memberId = $actionData['request']['member'] - 0; + } if ($memberId == 0) { $memberId = null; } - $limit = filter_var( $actionData['request']['limit'], FILTER_VALIDATE_INT ); + if ( isset( $actionData['request']['limit'] ) ) { + $limit = filter_var( $actionData['request']['limit'], FILTER_VALIDATE_INT ); + } if ( $limit ) { $action = 'front-page'; } - + if ( isset( $actionData['request']['featured'] ) ) { + $featured = filter_var( $actionData['request']['featured'], FILTER_VALIDATE_BOOLEAN ); + $action = 'featured'; + } if (isset($_REQUEST['eventId']) && $eventId = filter_var($_REQUEST['eventId'], FILTER_VALIDATE_INT)) { $search = true; $action = 'event-detail'; @@ -80,7 +94,6 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction $action = 'nameSearch'; } if ( isset($_REQUEST['glm_event_from']) ) { - //$fromDate = filter_var($_REQUEST['glm_event_from'], FILTER_SANITIZE_STRING); $fromDate = filter_var( $_REQUEST['glm_event_from'], FILTER_VALIDATE_REGEXP, @@ -94,7 +107,6 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction $fromDate = date('m/d/Y'); } if ( isset($_REQUEST['glm_event_to']) ) { - //$toDate = filter_var($_REQUEST['glm_event_to'], FILTER_SANITIZE_STRING); $toDate = filter_var( $_REQUEST['glm_event_to'], FILTER_VALIDATE_REGEXP, @@ -104,7 +116,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction ) ) ); - } else if ( in_array($action, array( 'event-list-name', 'nameSearch' )) ) { + } else if ( in_array($action, array( 'event-list-name', 'nameSearch', 'featured' )) ) { $toDate = null; } else { if ( isset($_REQUEST['t']) && $t = filter_var( $_REQUEST['t'], FILTER_SANITIZE_STRING ) ) { @@ -142,7 +154,6 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times WHERE DATE(start_time) >= '{$from}')"; } - //echo '
$this->dateRange: ' . print_r($this->dateRange, true) . '
'; if (isset($_REQUEST['event_name']) && $eventNameSearch = filter_var($_REQUEST['event_name'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES)) { @@ -164,12 +175,12 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction wp_enqueue_style('jquery-style', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css'); - switch ($action) { + switch ( $action ) { case 'front-page': $events = $this->getModelEventsData($categoryId, $limit); break; case 'event-list-name': - $events = $this->getModelEventsData($eventNameSearch); + $events = $this->getModelEventsData( $eventNameSearch ); $view = 'agenda.html'; break; case 'event-list': @@ -206,6 +217,16 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction exit; } break; + case 'featured': + $events = $this->getFeaturedEventsData(); + //echo '
$events: ' . print_r( $events, true ) . '
'; + if ( isset ( $actionData['request']['template'] ) ) { + $view = $actionData['request']['template']; + } else { + $view = 'agenda.html'; + } + //$view = 'agenda.html'; + break; case 'pdf': include_once GLM_MEMBERS_EVENTS_PLUGIN_PATH . '/SetaPDF/Autoload.php'; $this->postAddLocations = true; @@ -487,7 +508,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction // group the events by the starting date $eventsByDate = $mainEvents = array(); - if ($events) { + if ( $events && $action != 'featured' ) { foreach ( $events as $event ) { if ( isset( $event['times'] ) && is_array( $event['times'] ) ) { foreach ( $event['times'] as $eventTime ) { @@ -532,7 +553,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction } // Check for alternate template requests - switch($actionData['request']['template']) { + switch( $actionData['request']['template'] ) { case 'member-list': wp_enqueue_style('glm-member-db-events-style', GLM_MEMBERS_EVENTS_PLUGIN_URL . 'css/front.css'); $view = 'listForMemberListing.html'; @@ -578,6 +599,11 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction // No changes otherwise break; } + $option_name = GLM_MEMBERS_PLUGIN_OPTION_PREFIX . 'event_list_id'; + $event_page_id = get_option( $option_name ); + if ( $event_page_id ) { + $mainEventPageUrl = get_permalink( $event_page_id ); + } // Compile template data $templateData = array( @@ -587,11 +613,13 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction 'eventId' => false, 'categoryId' => $categoryId, 'categories' => $categories, + 'events' => $events, 'eventsByDate' => $eventsByDate, - 'catEvents' => $categoryEvents, 'fromDate' => $fromDate, 'toDate' => $toDate, 'eventName' => stripslashes( $eventNameSearch ), + 'mainEventUrl' => $mainEventPageUrl, + 'mainImgUrl' => GLM_MEMBERS_PLUGIN_MEDIA_URL . '/images/large/', 'imgUrl' => GLM_MEMBERS_PLUGIN_MEDIA_URL . '/images/small/', 'calDates' => $calDates ); diff --git a/setup/shortcodes.php b/setup/shortcodes.php index 0b17350..2797fc5 100644 --- a/setup/shortcodes.php +++ b/setup/shortcodes.php @@ -13,7 +13,7 @@ * @link http://dev.gaslightmedia.com/ */ -/* +/** * Array of short-code * * This array lists all of the short-codes available from the main @@ -102,8 +102,9 @@ $glmMembersEventsShortcodes = array( 'type' => 'all', 'order' => 'title', 'member' => false, - 'template' => false, - 'limit' => null + 'template' => false, + 'limit' => null, + 'featured' => null, ) ), 'glm-members-event-detail' => array( @@ -136,6 +137,43 @@ $glmMembersEventsShortcodesDescription = ' Displays a list of events. + + +   + + order="{ fieldName }" + + + The "order" attribute is used to set the field to use for ordering results. Defaults to \'title\'. + + + +   + + template="{ template }" + + + The "template" attribute is used to set the template that will be + used for smarty. Defaults to false. + + + +   + + featured="{ True/False }" + + + The "featured" attribute filters the result with the featured field. Defaults to null. + + + +   + + limit="{ (number) }" + + + The "limit" attribute limits the results to (number). Defaults to null. + [glm-members-event-detail] diff --git a/views/front/events/eventsFeed.html b/views/front/events/eventsFeed.html new file mode 100644 index 0000000..c6845a8 --- /dev/null +++ b/views/front/events/eventsFeed.html @@ -0,0 +1,19 @@ +
+

Upcoming Events

+
+
+ +
+
+
+ {foreach $events as $event} +
+ +
{$event.name}
+
+ {$event.starting_timestamp|date_format:"%b %e"} + More +
+ {/foreach} +
+