From: Steve Sutton Date: Fri, 11 Mar 2016 17:44:16 +0000 (-0500) Subject: Adding some fields to the events array for templates X-Git-Tag: v1.0.0^2~164^2~8 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=423a23d1986688d04e44aeadfbd4ab93eac8a682;p=WP-Plugins%2Fglm-member-db-events.git Adding some fields to the events array for templates Ongoing flag from the event times. - will need more work if the event has multiple schedules adding starting_date and ending_date to event array --- diff --git a/classes/data/dataEvents.php b/classes/data/dataEvents.php index b1b7486..2a2fab3 100644 --- a/classes/data/dataEvents.php +++ b/classes/data/dataEvents.php @@ -337,19 +337,21 @@ class GlmDataEvents extends GlmDataAbstract $r['categories'] = $this->wpdb->get_results($sql, ARRAY_A); if ($this->postAddTimes) { - $sql = " - SELECT ET.* - FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times AS ET - WHERE ET.start_time >= now() - AND ET.active - AND ET.event = {$r['id']} - ORDER BY ET.start_time"; - $times = $this->wpdb->get_results($sql, ARRAY_A); + include_once GLM_MEMBERS_EVENTS_PLUGIN_CLASS_PATH . '/data/dataTimes.php'; + $timeData = new GlmDataEventsTimes( $this->wpdb, $this->config ); + $where = " + T.start_time >= now() + AND T.active + AND T.event = {$r['id']} + "; + $order = "T.start_time"; + $times = $timeData->getList( $where, $order ); $r['times'] = $times; // get the first element of times array if ( !empty( $times ) ) { - $r['starting_date'] = $times[0]['start_time']; - $r['ending_date'] = $times[count($times) - 1]['end_time']; + $r['starting_date'] = $times[key($times)]['start_time']['datetime']; + end($times); + $r['ending_date'] = $times[key($times)]['end_time']['datetime']; } } diff --git a/classes/data/dataTimes.php b/classes/data/dataTimes.php index d8205a8..5640df8 100644 --- a/classes/data/dataTimes.php +++ b/classes/data/dataTimes.php @@ -157,6 +157,17 @@ class GlmDataEventsTimes extends GlmDataAbstract 'use' => 'glei' ), + // Ongoing + 'ongoing' => array( + 'field' => 'recur_id', + 'as' => 'ongoing', + 'type' => 'pointer', + 'p_table' => GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . 'recurrences', + 'p_field' => 'all_dates', + 'p_static' => true, + 'use' => 'gle' + ), + // Active Flag 'active' => array ( 'field' => 'active', diff --git a/models/front/events/baseAction.php b/models/front/events/baseAction.php index 68b104a..fd985c4 100644 --- a/models/front/events/baseAction.php +++ b/models/front/events/baseAction.php @@ -51,16 +51,41 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents public function getModelEventsData($categoryId = null, $limit = null) { + $this->postAddTimes = true; if ($categoryId) { - return $this->getEventsByCategory( $categoryId, $limit ); + $events = $this->getEventsByCategory( $categoryId, $limit ); } else { - return $this->getList(); + $events = $this->getList(); } + 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']); + $event['ongoing'] = $event['times'][$firstKey]['ongoing']; + reset($event['times']); + } + $event['dates'] = $this->getEventDate( + strtotime($event['starting_date']), + strtotime($event['ending_date']), + 'timestamp' + ); + } + $this->postAddTimes = false; + return $events; } public function getModelEventData($eventId) { - return $this->getEntry($eventId); + $this->postAddTimes = true; + $event = $this->getEntry($eventId); + $event['dates'] = $this->getEventDate( + strtotime($event['starting_date']), + strtotime($event['ending_date']), + 'timestamp' + ); + $this->postAddTimes = false; + return $event; } /** @@ -73,4 +98,94 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents */ abstract public function modelAction($actionData = false); + /** + * get_event_date: make the event date human readable + * + * @param string $sdate start date + * @param string $edate end date + * @param string $dateType dateType Postgres,etc + * @param boolean $microFormat use microformating on output + * + * @return string + * @access public + */ + function getEventDate( + $sdate, + $edate, + $dateType, + $microFormat = false + ) { + switch($dateType) { + case "Postgres": + $postgresPattern = "/([0-9]{1,2})[/-]([0-9]{1,2})[/-]([0-9]{4})/"; + if (preg_match($postgresPattern, $sdate, $spt)) { + $mon = $spt[1]; + $day = $spt[2]; + $yr = $spt[3]; + } + + if (preg_match($postgresPattern, $edate, $ept)) { + $mon2 = $ept[1]; + $day2 = $ept[2]; + $yr2 = $ept[3]; + } + break; + case "eventstamp": + case "timestamp": + $mon = date("m",$sdate); + $day = date("d",$sdate); + $yr = date("Y",$sdate); + $mon2 = date("m",$edate); + $day2 = date("d",$edate); + $yr2 = date("Y",$edate); + break; + } + + $start = mktime(0,0,0,$mon,$day,$yr); + $end = mktime(0,0,0,$mon2,$day2,$yr2); + if ($day == $day2 && $mon == $mon2 && $yr == $yr2) { + $dateparam = "M j, Y"; + $dateBegin = date($dateparam, $start) ; + $dateEnd = ""; + } elseif ($day == $day2 AND $mon == $mon2 AND $yr != $yr2) { + $dateparam1 = "M j, Y -"; + $dateparam2 = "Y"; + $dateBegin = date($dateparam1, $start); + $dateEnd = date($dateparam2, $end); + } elseif ($day != $day2 AND $mon == $mon2 AND $yr == $yr2) { + $dateparam1 = "M j -"; + $dateparam2 = "j, Y"; + $dateBegin = date($dateparam1, $start); + $dateEnd = date($dateparam2, $end); + } elseif ($day != $day2 AND $mon == $mon2 AND $yr != $yr2) { + $dateparam1 = "M j, Y -"; + $dateparam2 = "M j, Y"; + $dateBegin = date($dateparam1, $start); + $dateEnd = date($dateparam2, $end); + } elseif ($yr == $yr2) { + $dateparam1 = "M j -"; + $dateparam2 = "M j, Y"; + $dateBegin = date($dateparam1, $start); + $dateEnd = date($dateparam2, $end); + } else { + $dateparam1 = "M j, Y -"; + $dateparam2 = "M j, Y"; + $dateBegin = date($dateparam1, $start); + $dateEnd = date($dateparam2, $end); + } + if ($microFormat) { + $dateBegin = ' + ' . + $dateBegin . ' + '; + $dateEnd + = ($dateEnd) + ? ' + ' . + $dateEnd . ' + ' + : ''; + } + return $dateBegin." ".$dateEnd; + } } diff --git a/views/front/events/dashboard.html b/views/front/events/dashboard.html index 51ab291..a53bc76 100644 --- a/views/front/events/dashboard.html +++ b/views/front/events/dashboard.html @@ -20,7 +20,7 @@ {break} {/if}
  • - {$event.starting_date|date_format}
    + {$event.dates}
    {$event.name} diff --git a/views/front/events/detail.html b/views/front/events/detail.html index dffdfdd..0245cc7 100644 --- a/views/front/events/detail.html +++ b/views/front/events/detail.html @@ -18,7 +18,7 @@
    -
    {$event.starting}
    +
    {$event.dates}
    {$event.street}
    {$event.city}, {$event.state} {$event.zip} diff --git a/views/front/events/list.html b/views/front/events/list.html index 1d4eeff..6b21f1a 100644 --- a/views/front/events/list.html +++ b/views/front/events/list.html @@ -7,11 +7,20 @@ {foreach $events as $event}
    -
    {$event.starting}
    -
    - {$categories[$event.category].name}
    +
    {$event.dates}
    +
    + {foreach $event.categories as $cat} + {$cat.name}:
    + {/foreach} {$event.name}
    +
    + {if $event.ongoing} + Ongoing Event + {else} + Repeating Event + {/if} +