Ejemplo n.º 1
0
 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;
     }
 }
Ejemplo n.º 2
0
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));
        }
    }
}