public function events($atts = null, $content = null, $code = "") { global $wpdb, $_wt_options; require_once WT_PLUGIN_PATH . 'admin/template.php'; require_once WT_PLUGIN_PATH . 'admin/handlers.php'; require_once WT_PLUGIN_PATH . 'dwoo/dwooAutoload.php'; $dwoo = new Dwoo(); $defaults = self::$events_default; $settings = shortcode_atts($defaults, $atts); # FILE $theme_file_name = empty($settings["theme_file_name"]) ? 0 : $settings["theme_file_name"]; # LIMIT if ($settings[limit] > 0) { $limit = " LIMIT {$settings['limit']} "; $limit_cond = " AND e.event_is_headline=1 "; } else { $limit = ""; $limit_cond = ""; } #NAVIGATION - only in no group presentation $navigation = $settings["limit"] > 0 ? $settings["navigation"] : 0; # ORDER by date direction $order = strtoupper($settings["order"]); # GENRE $genre = !empty($attr["genre"]) ? $attr["genre"] : 0; if ($order != "DESC" && $order != "ASC") { $order = $defaults["order"]; } # ORDER by tour,artist - alphabatically or by order $order_by = strtoupper($settings["order_by"]); # DATE $date = $this->get_date_sql($settings["date_range"]); if (!empty($settings["start_date"]) || !empty($settings["end_date"])) { if (empty($settings["start_date"])) { $settings["start_date"] = $settings["end_date"]; } if (empty($settings["end_date"])) { $settings["end_date"] = $settings["start_date"]; } $date = "AND e.event_start_date BETWEEN '" . $settings["start_date"] . "' AND '" . $settings["end_date"] . "'"; } # COUNTRY $country_sql = !empty($settings["country"]) ? "AND v.venue_country = '" . $settings["country"] . "'" : ""; # EVENT TYPE $type_sql = !empty($settings["type"]) ? "AND e.event_type = '" . $settings["type"] . "'" : ""; #ARTIST TO INCLUDE if ($this->is_value($settings["artist"])) { $artist_to_show = explode(",", $settings["artist"]); $show_artists = true; } else { $artist_to_show = array(); $show_artists = true; } #TOUR TO INCLUDE $force_tour = isset($_GET["wttour"]) ? $_GET["wttour"] : 0; if ($this->is_value($settings["tour"]) || $force_tour) { if (strtoupper($settings["tour"]) != "NO") { $tour_to_show = explode(",", $force_tour ? $force_tour : $settings["tour"]); $show_tour = true; } else { $tour_to_show = array(); $show_tour = false; } } else { $tour_to_show = array(); $show_tour = true; } #VENUE TO INCLUDE if ($this->is_value($settings["venue"])) { $venue_to_show = explode(",", $settings["venue"]); $show_venues = true; } else { $venue_to_show = array(); $show_venues = true; } #GROUP BY $group_by = strtoupper($settings["group_by"]); #GROUP BY TOUR $group_by_tour = $force_tour ? 0 : $this->bool_value($settings["group_by_tour"]); // SHOW ALL EVENTS if ($group_by == "NO-GROUP" || empty($group_by)) { if ($group_by_tour) { $cond_artists = $this->columns_sql("artist_id", $artist_to_show, "AND"); $cond_venues = $this->columns_sql("venue_id", $venue_to_show, "AND"); $cond_tour = $this->columns_sql("tour_id", $tour_to_show, "AND"); $order_tour_sql = ($order_by === "ORDER" ? "t.tour_order," : "") . "t.tour_name"; //AND event_tour_id!=0 $tours = $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables("event_tour_id,tour_name", array("meta" => 0, "venue" => 1, "artists" => 1, "tour" => 1)) . " {$cond_artists} {$cond_venues} {$cond_tour} {$type_sql} {$country_sql} {$date} GROUP BY e.event_tour_id ORDER BY {$order_tour_sql} ASC"), "ARRAY_A"); $subgroup_tpl = array(); if (count($tours)) { foreach ($tours as $tour) { $events = $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables() . " \n\t\t\t\t\t\t\tAND event_tour_id=" . $tour["event_tour_id"] . " {$date} {$cond_artists} {$cond_venues} {$limit_cond} \n\t\t\t\t\t\t\tORDER BY e.event_start_date {$order} {$limit}"), "ARRAY_A"); if (!empty($limit)) { $result_event_id = array(); foreach ($events as $event) { $result_event_id[] = $event["event_id"]; } $result_event_id = implode(" OR event_id=", $result_event_id); $result_event_id = "AND (event_id={$result_event_id} )"; $events = $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables() . " \n\t\t\t\t\t\t\t\tAND event_tour_id=" . $tour["event_tour_id"] . " {$date} {$cond_artists} {$cond_venues} {$result_event_id} \n\t\t\t\t\t\t\t\tORDER BY e.event_start_date {$order}"), "ARRAY_A"); } wt_set_event_more_artists($events); if (count($events)) { $this->event_map($events); $subgroup_tpl[] = array("name" => $tour["tour_name"], "data" => $events); } } } $tpl["group"][] = array("name" => "", "subgroup" => $subgroup_tpl); } else { $cond_artists = $this->columns_sql("artist_id", $artist_to_show, "AND"); $cond_tour = $this->columns_sql("tour_id", $tour_to_show, "AND"); $cond_venues = $this->columns_sql("venue_id", $venue_to_show, "AND"); if ($navigation) { $current_page = isset($_GET["wt_page"]) ? (int) $_GET["wt_page"] : 1; $per_page = (int) $settings["limit"]; $start_index = $current_page * $per_page - $per_page; $limit = "LIMIT {$start_index},{$per_page}"; } $events = $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables("SQL_CALC_FOUND_ROWS *") . " \n\t\t\t\t\t\t\t{$cond_artists} {$cond_tour} {$cond_venues} {$type_sql} {$country_sql} {$date} {$limit_cond} \n\t\t\t\t\t\t\tORDER BY e.event_start_date {$order} {$limit}"), "ARRAY_A"); if ($navigation) { $navigation_attr = $this->get_navigation($current_page, $per_page, $wpdb->get_var("SELECT FOUND_ROWS()")); } if (!empty($limit)) { $result_event_id = array(); foreach ($events as $event) { $result_event_id[] = $event["event_id"]; } $result_event_id = implode(" OR event_id=", $result_event_id); $result_event_id = "AND (event_id={$result_event_id} )"; $events = $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables("SQL_CALC_FOUND_ROWS *") . " \n\t\t\t\t\t\t\t{$cond_artists} {$cond_tour} {$cond_venues} {$type_sql} {$country_sql} {$date} {$result_event_id}\n\t\t\t\t\t\t\tORDER BY e.event_start_date {$order}"), "ARRAY_A"); } wt_set_event_more_artists($events); if (count($events)) { $this->event_map($events); $subgroup_tpl[] = array("name" => "", "data" => $events); } $tpl["group"][] = array("name" => "", "subgroup" => $subgroup_tpl); } } // SHOW ALL EVENTS BY ARTIST - ALWAYS SHOW THE ARTIST! if ($group_by == "ARTIST") { $cond_artists = $this->columns_sql("artist_id", $artist_to_show, "AND"); $cond_tour = $this->columns_sql("event_tour_id", $tour_to_show, "AND"); $cond_venues = $this->columns_sql("venue_id", $venue_to_show, "AND"); $order_artist_sql = ($order_by === "ORDER" ? "a.artist_order," : "") . "a.artist_name"; #SHOW IF NOT HEADLINE $show_if_not_headline = $settings["show_if_not_headline"] == 1 ? "" : " AND event_is_headline=1 "; if ($order_by === "ORDER") { $order_artist_sql = "a.artist_order,{$order_artist_sql}"; } $artists = (array) $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables("event_artist_id,artist_name", array("meta" => 0, "venue" => !empty($country_sql), "artists" => 1, "tour" => 0)) . " {$cond_artists} {$country_sql} {$date} {$show_if_not_headline} GROUP BY e.event_artist_id ORDER BY {$order_artist_sql} ASC"), "ARRAY_A"); $group_tpl = array("group" => array()); $cond_tour = $this->columns_sql("tour_id", $tour_to_show, "AND"); foreach ($artists as $artist) { $subgroup_tpl = array(); $artist_id = $artist["event_artist_id"]; $artist_name = $artist["artist_name"]; if ($group_by_tour) { $order_tour_sql = "t.tour_name"; if ($order_by === "ORDER") { $order_tour_sql = "t.tour_order,{$order_tour_sql}"; } $tours = $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables("event_tour_id,tour_name", array("meta" => 0, "venue" => !empty($country_sql), "artists" => 0, "tour" => 1)) . " AND event_artist_id={$artist_id} {$cond_tour} {$type_sql} {$country_sql} {$date} GROUP BY e.event_tour_id ORDER BY {$order_tour_sql} ASC"), "ARRAY_A"); if (count($tours)) { foreach ($tours as $tour) { $events = $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables() . " \n\t\t\t\t\t\t\t\tAND event_tour_id=" . $tour["event_tour_id"] . "\n\t\t\t\t\t\t\t\tAND event_artist_id={$artist_id} \n\t\t\t\t\t\t\t\t{$date}\n\t\t\t\t\t\t\t\t{$cond_venues} \n\t\t\t\t\t\t\t\t{$type_sql} \n\t\t\t\t\t\t\t\t{$country_sql} \n\t\t\t\t\t\t\t\t{$show_if_not_headline} \n\t\t\t\t\t\t\t\tORDER BY e.event_start_date {$order}"), "ARRAY_A"); if (count($events)) { $this->event_map($events); $subgroup_tpl[] = array("name" => $tour["tour_name"], "data" => $events); } } } } else { $events = $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables() . " AND event_artist_id={$artist_id} \n\t\t\t\t\t\t\t\t{$cond_tour} {$cond_venues} {$type_sql} {$country_sql} {$show_if_not_headline} {$date} \n\t\t\t\t\t\t\t\tORDER BY e.event_start_date {$order} {$limit}"), "ARRAY_A"); if (count($events)) { $this->event_map($events); $subgroup_tpl[] = array("name" => "", "data" => $events); } } $tpl["group"][] = array("name" => $artist_name, "filter" => $filter, "subgroup" => $subgroup_tpl); } } if ($group_by == "DATE") { $dates = $wpdb->get_results($wpdb->prepare((!empty($country_sql) ? WT_Event::sql_all_tables("event_start_date") : WT_Event::sql("event_start_date")) . " {$date} {$type_sql} {$country_sql} GROUP BY e.event_start_date {$order}"), "ARRAY_A"); $group_tpl = array("group" => array()); foreach ($dates as $date) { $events = $wpdb->get_results($wpdb->prepare(WT_Event::sql_all_tables() . " AND e.event_start_date ='" . $date["event_start_date"] . "' {$type_sql} {$country_sql} ORDER BY e.event_artist_id {$order} {$limit}"), "ARRAY_A"); wt_set_event_more_artists($events); if (count($events)) { $this->event_map($events); } $tpl["group"][] = array("name" => $date["event_start_date"], "data" => $events); } } if ($settings["render_type"] == "widget") { $theme = new WT_Theme(); $theme->events_widget(array("attr" => $settings, "tpl" => $tpl)); } else { require WT_PLUGIN_PATH . 'theme/layout.renderer.php'; return $html; } }
function event_rows($rows) { global $wpdb; if (!$rows) { ?> <tr class="empty"> <td colspan="5"><p>No Events Found</p></td> </tr> <?php return; } else { ?> <?php $event = new WT_Event(); wt_set_event_more_artists($rows); foreach ($rows as $row) { if (empty($row["artist_name"])) { $event->id = $row["event_id"]; $event->retrieve(); $row = $event->date; } echo get_event_row_html($event->db_out($row)); } } }