Advertisement
Semblance

event_list.php

Nov 20th, 2012
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 13.55 KB | None | 0 0
  1. <?php
  2. //This is a template file for displaying a list of events on a page. These functions are used with the {ESPRESSO_EVENTS} shortcode.
  3. //This is an group of functions for querying all of the events in your databse.
  4. //This file should be stored in your "/wp-content/uploads/espresso/templates/" directory.
  5. //Note: All of these functions can be overridden using the "Custom Files" addon. The custom files addon also contains sample code to display ongoing events
  6.  
  7. if (!function_exists('display_all_events')) {
  8.     function display_all_events() {
  9.         event_espresso_get_event_details(array());
  10.     }
  11. }
  12.  
  13. if (!function_exists('display_event_espresso_categories')) {
  14.     function display_event_espresso_categories($event_category_id=NULL, $css_class=NULL) {
  15.         event_espresso_get_event_details(array('category_identifier' => $event_category_id, 'css_class' => $css_class));
  16.     }
  17. }
  18.  
  19. //Events Listing - Shows the events on your page.
  20. if (!function_exists('event_espresso_get_event_details')) {
  21.  
  22.     function event_espresso_get_event_details( $attributes ) {
  23.         //echo $sql;
  24.         global $wpdb, $org_options, $events_in_session;
  25.         $multi_reg = false;
  26.         if (function_exists('event_espresso_multi_reg_init')) {
  27.             $multi_reg = true;
  28.         }
  29.  
  30.         $default_attributes = array('category_identifier' => NULL
  31.                                     , 'staff_id' => NULL
  32.                                     , 'allow_override' => 0
  33.                                     , 'show_expired' => 'false'
  34.                                     , 'show_secondary' => 'false'
  35.                                     , 'show_deleted' => 'false'
  36.                                     , 'show_recurrence' => 'true'
  37.                                     , 'limit' => '0'
  38.                                     , 'order_by' => 'NULL'
  39.                                     , 'css_class' => 'NULL');
  40.         // loop thru default atts
  41.         foreach ($default_attributes as $key => $default_attribute) {
  42.             // check if att exists
  43.             if (!isset($attributes[$key])) {
  44.                 $attributes[$key] = $default_attribute;
  45.             }
  46.         }
  47.  
  48.         // now extract shortcode attributes
  49.         extract($attributes);
  50.         $sql = "SELECT e.*, ese.start_time, ese.end_time, p.event_cost ";
  51.  
  52.         //Category sql
  53.         $sql .= ($category_identifier != NULL && !empty($category_identifier))? ", c.category_name, c.category_desc, c.display_desc, c.category_identifier": '';
  54.  
  55.         //Venue sql
  56.         isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y' ? $sql .= ", v.name venue_name, v.address venue_address, v.city venue_city, v.state venue_state, v.zip venue_zip, v.country venue_country, v.meta venue_meta " : '';
  57.  
  58.         //Staff sql
  59.         isset($org_options['use_personnel_manager']) && $org_options['use_personnel_manager'] == 'Y' ? $sql .= ", st.name staff_name " : '';
  60.  
  61.  
  62.         $sql .= " FROM " . EVENTS_DETAIL_TABLE . " e ";
  63.         $sql .= ($category_identifier != NULL && !empty($category_identifier))? " JOIN " . EVENTS_CATEGORY_REL_TABLE . " r ON r.event_id = e.id  JOIN " . EVENTS_CATEGORY_TABLE . " c ON  c.id = r.cat_id ":'';
  64.  
  65.         //Venue sql
  66.         isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y' ? $sql .= " LEFT JOIN " . EVENTS_VENUE_REL_TABLE . " vr ON vr.event_id = e.id LEFT JOIN " . EVENTS_VENUE_TABLE . " v ON v.id = vr.venue_id " : '';
  67.  
  68.         //Venue sql
  69.         isset($org_options['use_personnel_manager']) && $org_options['use_personnel_manager'] == 'Y' ? $sql .= " LEFT JOIN " . EVENTS_PERSONNEL_REL_TABLE . " str ON str.event_id = e.id LEFT JOIN " . EVENTS_PERSONNEL_TABLE . " st ON st.id = str.person_id " : '';
  70.  
  71.         $sql .= " LEFT JOIN " . EVENTS_START_END_TABLE . " ese ON ese.event_id= e.id ";
  72.         $sql .= " LEFT JOIN " . EVENTS_PRICES_TABLE . " p ON p.event_id=e.id ";
  73.         $sql .= " WHERE is_active = 'Y' ";
  74.  
  75.         //Category sql
  76.         $sql .= ($category_identifier !== NULL  && !empty($category_identifier))? " AND c.category_identifier = '" . $category_identifier . "' ": '';
  77.  
  78.         //Staff sql
  79.         $sql .= ($staff_id !== NULL  && !empty($staff_id))? " AND st.id = '" . $staff_id . "' ": '';
  80.  
  81.         $sql .= $show_expired == 'false' ? " AND (e.start_date >= '" . date('Y-m-d') . "' OR e.event_status = 'O' OR e.registration_end >= '" . date('Y-m-d') . "') " : '';
  82.         if  ($show_expired == 'true'){
  83.             $allow_override = 1;
  84.         }
  85.  
  86.         //If using the [ESPRESSO_VENUE_EVENTS] shortcode
  87.         $sql .= isset($use_venue_id) && $use_venue_id == true ? " AND v.id = '".$venue_id."' " : '';
  88.  
  89.         $sql .= $show_secondary == 'false' ? " AND e.event_status != 'S' " : '';
  90.         $sql .= $show_deleted == 'false' ? " AND e.event_status != 'D' " : " AND e.event_status = 'D' ";
  91.         if  ($show_deleted == 'true'){
  92.             $allow_override = 1;
  93.         }
  94.  
  95.         $sql .= $show_recurrence == 'false' ? " AND e.recurrence_id = '0' " : '';
  96.         $sql .= " GROUP BY e.id ";
  97.         //uncomment to line below to change the sort order. You'll need to use the show_recurrence parameter if displaying recurring events. Using order_by date will break u recurring events if the dates intersect.
  98.         //$sql .= $order_by != 'NULL' ? " ORDER BY " . $order_by . " ASC " : " ";
  99.         $sql .= $limit > 0 ? ' LIMIT 0, '.$limit : '';  
  100.  
  101.         //echo $sql;
  102.         $event_page_id = $org_options['event_page_id'];
  103.         $currency_symbol = isset($org_options['currency_symbol']) ? $org_options['currency_symbol'] : '';
  104.         $events = $wpdb->get_results($sql);
  105.         $category_id = isset($wpdb->last_result[0]->id) ? $wpdb->last_result[0]->id : '';
  106.         $category_name = isset($wpdb->last_result[0]->category_name) ? $wpdb->last_result[0]->category_name : '';
  107.         $category_identifier = isset($wpdb->last_result[0]->category_identifier) ? $wpdb->last_result[0]->category_identifier : '';
  108.         $category_desc = isset($wpdb->last_result[0]->category_desc) ? html_entity_decode(wpautop($wpdb->last_result[0]->category_desc)) : '';
  109.         $display_desc = isset($wpdb->last_result[0]->display_desc) ? $wpdb->last_result[0]->display_desc : '';
  110.  
  111.         /* group recurring events */
  112.         $events_type_index = -1;
  113.         $events_of_same_type = array();
  114.         $last_recurrence_id = null;
  115.         /* end group recurring events */
  116.  
  117.         if ($display_desc == 'Y'){
  118.             echo '<p id="events_category_name-'. $category_id . '" class="events_category_name">' . stripslashes_deep($category_name) . '</p>';
  119.             echo wpautop($category_desc);              
  120.         }
  121.  
  122.         foreach ($events as $event) {
  123.  
  124.             $event_id = $event->id;
  125.             $event_name = $event->event_name;
  126.             $event_desc = stripslashes_deep($event->event_desc);
  127.             $event_identifier = $event->event_identifier;
  128.             $active = $event->is_active;
  129.             $registration_start = $event->registration_start;
  130.             $registration_end = $event->registration_end;
  131.             $start_date = $event->start_date;
  132.             $end_date = $event->end_date;
  133.             $reg_limit = $event->reg_limit;
  134.             $event_address = $event->address;
  135.             $event_address2 = $event->address2;
  136.             $event_city = $event->city;
  137.             $event_state = $event->state;
  138.             $event_zip = $event->zip;
  139.             $event_country = $event->country;
  140.             $member_only = $event->member_only;
  141.             $externalURL = $event->externalURL;
  142.             $recurrence_id = $event->recurrence_id;
  143.             $display_reg_form = $event->display_reg_form;
  144.             $allow_overflow = $event->allow_overflow;
  145.             $overflow_event_id = $event->overflow_event_id;
  146.             $event_desc = array_shift(explode('<!--more-->', $event_desc));
  147.             global $event_meta;
  148.             $event_meta = unserialize($event->event_meta);
  149.             $event_meta['is_active'] = $event->is_active;
  150.             $event_meta['event_status'] = $event->event_status;
  151.             $event_meta['start_time'] = empty($event->start_time) ? '' : $event->start_time;
  152.             $event_meta['start_date'] = $event->start_date;
  153.             $event_meta['registration_start'] = $event->registration_start;
  154.             $event_meta['registration_startT'] = $event->registration_startT;
  155.             $event_meta['registration_end'] = $event->registration_end;
  156.             $event_meta['registration_endT'] = $event->registration_endT;
  157.  
  158.             //Venue information
  159.             if ($org_options['use_venue_manager'] == 'Y') {
  160.                 $event_address = empty($event->venue_address) ? '' : $event->venue_address;
  161.                 $event_address2 = empty($event->venue_address2) ? '' : $event->venue_address2;
  162.                 $event_city = empty($event->venue_city) ? '' : $event->venue_city;
  163.                 $event_state = empty($event->venue_state) ? '' : $event->venue_state;
  164.                 $event_zip = empty($event->venue_zip) ? '' : $event->venue_zip;
  165.                 $event_country = empty($event->venue_country) ? '' : $event->venue_country;
  166.  
  167.                 //Leaving these variables intact, just in case people want to use them
  168.                 $venue_title = empty($event->venue_name) ? '' : $event->venue_name;
  169.                 $venue_address = $event_address;
  170.                 $venue_address2 = $event_address2;
  171.                 $venue_city = $event_city;
  172.                 $venue_state = $event_state;
  173.                 $venue_zip = $event_zip;
  174.                 $venue_country = $event_country;
  175.                 global $venue_meta;
  176.                 $add_venue_meta = array(
  177.                     'venue_title' => $venue_title,
  178.                     'venue_address' => $event_address,
  179.                     'venue_address2' => $event_address2,
  180.                     'venue_city' => $event_city,
  181.                     'venue_state' => $event_state,
  182.                     'venue_country' => $event_country,
  183.                 );
  184.                 $venue_meta = (!empty($event->venue_meta) && !empty($add_venue_meta)) ? array_merge(unserialize($event->venue_meta), $add_venue_meta) : '';
  185.                 //print_r($venue_meta);
  186.             }
  187.  
  188.             //Address formatting
  189.             $location = ($event_address != '' ? $event_address : '') . ($event_address2 != '' ? '<br />' . $event_address2 : '') . ($event_city != '' ? '<br />' . $event_city : '') . ($event_state != '' ? ', ' . $event_state : '') . ($event_zip != '' ? '<br />' . $event_zip : '') . ($event_country != '' ? '<br />' . $event_country : '');
  190.  
  191.             //Google map link creation
  192.             $google_map_link = espresso_google_map_link(array('address' => $event_address, 'city' => $event_city, 'state' => $event_state, 'zip' => $event_zip, 'country' => $event_country, 'text' => 'Map and Directions', 'type' => 'text'));
  193.             global $all_meta;
  194.             $all_meta = array(
  195.                 'event_name' => stripslashes_deep($event_name),
  196.                 'event_desc' => stripslashes_deep($event_desc),
  197.                 'event_address' => $event_address,
  198.                 'event_address2' => $event_address2,
  199.                 'event_city' => $event_city,
  200.                 'event_state' => $event_state,
  201.                 'event_zip' => $event_zip,
  202.                 'is_active' => $event->is_active,
  203.                 'event_status' => $event->event_status,
  204.                 'start_time' => empty($event->start_time) ? '' : $event->start_time,
  205.                 'registration_startT' => $event->registration_startT,
  206.                 'registration_start' => $registration_start,
  207.                 'registration_endT' => $event->registration_endT,
  208.                 'registration_end' => $registration_end,
  209.                 'is_active' => empty($is_active) ? '' : $is_active,
  210.                 'event_country' => $event_country,
  211.                 'start_date' => event_date_display($start_date, get_option('date_format')),
  212.                 'end_date' => event_date_display($end_date, get_option('date_format')),
  213.                 'time' => empty($event->start_time) ? '' : $event->start_time,
  214.                 'google_map_link' => $google_map_link,
  215.                 'price' => empty($event->event_cost) ? '' : $event->event_cost,
  216.                 'event_cost' => empty($event->event_cost) ? '' : $event->event_cost,
  217.             );
  218.             //Debug
  219.             //echo '<p>'.print_r($all_meta).'</p>';
  220.             //These variables can be used with other the espresso_countdown, espresso_countup, and espresso_duration functions and/or any javascript based functions.
  221.             //Warning: May cause additional database queries an should only be used for sites with a small amount of events.
  222.             // $start_timestamp = espresso_event_time($event_id, 'start_timestamp');
  223.             //$end_timestamp = espresso_event_time($event_id, 'end_timestamp');
  224.  
  225.             //This can be used in place of the registration link if you are using the external URL feature
  226.             $registration_url = $externalURL != '' ? $externalURL : espresso_reg_url($event_id);
  227.             if (!is_user_logged_in() && get_option('events_members_active') == 'true' && $member_only == 'Y') {
  228.                 //Display a message if the user is not logged in.
  229.                 //_e('Member Only Event. Please ','event_espresso') . event_espresso_user_login_link() . '.';
  230.             } else {
  231.                 //Serve up the event list
  232.                 //As of version 3.0.17 the event list details have been moved to event_list_display.php
  233.  
  234.                 switch (event_espresso_get_status($event_id)){
  235.                         case 'NOT_ACTIVE':
  236.                             //Don't show the event if any of the above are true
  237.                         break;
  238.  
  239.                         default:
  240.                             /* skip secondary (waitlist) events */
  241.                             $event_status = event_espresso_get_is_active($event_id);
  242.                             if ($event_status['status'] == 'SECONDARY') {
  243.                                 break;
  244.                             }                          
  245.                             /* group recurring events */
  246.                             $is_new_event_type = $last_recurrence_id == 0 || $last_recurrence_id != $recurrence_id;
  247.                             if ($is_new_event_type) :
  248.                                 $events_type_index++;
  249.                                 $events_of_same_type[$events_type_index] = array();
  250.                             endif;
  251.  
  252.                             $event_data = array(
  253.                                 'event_id' => $event_id,
  254.                                 'event_page_id' => $event_page_id,
  255.                                 'event_name' => $event_name,
  256.                                 'event_desc' => $event_desc,
  257.                                 'start_date' => $start_date,
  258.                                 'end_date' => $end_date,
  259.                                 'reg_limit' => $reg_limit,
  260.                                 'registration_url' => $registration_url,
  261.                                 'overflow_event_id' => $overflow_event_id,
  262.                                 'event_meta' => $event_meta
  263.                             );
  264.                             array_push($events_of_same_type[$events_type_index], $event_data);
  265.                             $last_recurrence_id = $recurrence_id;
  266.  
  267.                         break;
  268.                 }
  269.             }
  270.         }
  271.  
  272.         /* group recurring events */
  273.         foreach ($events_of_same_type as $events_group) {
  274.             include('event_list_display.php');
  275.     }
  276.         /* end group recurring events */
  277.  
  278.     //Check to see how many database queries were performed
  279.     //echo '<p>Database Queries: ' . get_num_queries() .'</p>';
  280.     espresso_registration_footer();
  281.     }
  282. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement