";
if($filter_style=="dropdown_list")
{
if($filter_kind=="event_category" || $filter_kind=="event_and_event_category")
{
$output .= '
';
}
if($filter_kind=="event" || $filter_kind=="event_and_event_category")
{
$output .= '
';
}
}
if((int)$row_height!=31 || strtoupper($box_bg_color)!="00A27C" || strtoupper($filter_color)!="00A27C" || $custom_css!="")
{
$output .= '';
}
if($font!="")
$output .= '
';
if($font_custom!="" || $font!="" || (int)$font_size>0)
{
$font_explode = explode(":", $font);
$font = '"' . $font_explode[0] . '"';
$output .= '';
}
$output .= '
';
// we need to display all filter items, both events and events categories, so the filter buttons from both lists are working correctly
if($filter_kind=="event_and_event_category")
{
$all_filters_list_html = $events_categories_list_html . $events_list_html;
// filter list must be hidden
$output .= '
';
}
if($filter_kind=="event_category" || $filter_kind=="event_and_event_category")
{
$events_categories_list_html_view_all = '';
if($hide_all_events_view && empty($event_category))
$events_categories_list_html_view_all = '
' . ($filter_kind=="event_and_event_category" ? $filter_label_2 : $filter_label) . '';
$output .= '
';
}
if($filter_kind=="event" || $filter_kind=="event_and_event_category")
{
$events_list_html_view_all = '';
if($hide_all_events_view && empty($event))
$events_list_html_view_all = '
' . $filter_label . '';
$output .= '
';
}
if(!$hide_all_events_view)
{
$output .= '
' . (empty($events_array_verified) ? tt_get_timetable($atts, $events_array) : ($events_array_verified!=-1 ? tt_get_timetable($atts, $events_array_verified) : sprintf(__('No %s available!' , 'timetable'), strtolower($timetable_events_settings['label_plural'])))) . '
';
}
if($filter_kind=="event" || !count($event_category_array) || $filter_kind=="event_and_event_category")
{
for($i=0; $i<$events_array_count; $i++)
{
$post = get_page_by_path($events_array[$i], ARRAY_A, "events");
$categories = wp_get_post_terms($post["ID"], "events_category");
$categories_str = "";
foreach($categories as $category)
$categories_str .= "tt-event-category-" . $category->slug . " ";
$output .= '
' . (empty($events_array_verified) || ($events_array_verified!=-1 && in_array($events_array[$i], $events_array_verified)) ? tt_get_timetable($atts, $events_array[$i]) : sprintf(__('No %s available!' , 'timetable'), strtolower($timetable_events_settings['label_plural']))) . '
';
}
}
if($filter_kind=="event_category" || $filter_kind=="event_and_event_category")
{
for($i=0; $i<$events_category_array_count; $i++)
{
$events_array_posts = array();
$events_array_posts = get_posts(array(
'include' => (array)$events_array_id,
'post_type' => $timetable_events_settings['slug'],
'post_status' => 'publish',
'events_category' => $event_category_array[$i],
'posts_per_page' => -1,
'nopaging' => true
));
$events_array_for_timetable = array();
for($j=0; $j
post_name);
$output .= '' . (count($events_array_posts) ? tt_get_timetable($atts, $events_array_for_timetable) : sprintf(__('No %1$s available in %2$s category!', 'timetable'), strtolower($timetable_events_settings['label_plural']), $event_category_array[$i])) . '
';
}
}
$output .= '';
$output .= "
" . sprintf(__('No %s available!' , 'timetable'), strtolower($timetable_events_settings['label_plural'])) . "
";
if($direction=="rtl")
$output .= "
";
return $output;
}
add_shortcode("tt_timetable", "tt_timetable");
function to_decimal_time($time, $midReplace = false)
{
$timeExplode = explode(".", $time);
return ($midReplace && (int)$timeExplode[0]==0 ? 24 : $timeExplode[0]) . "." . (isset($timeExplode[1]) && (int)$timeExplode[1]>0 ? sprintf("%02s", ceil($timeExplode[1]/60*100)) : "00");
}
function tt_hour_in_array($hour, $array, $measure, $hours_min)
{
$array_count = count($array);
for($i=0; $i<$array_count; $i++)
{
if((int)$measure==1)
{
if((!isset($array[$i]["displayed"]) || (bool)$array[$i]["displayed"]!=true) && (int)$array[$i]["start"]==(int)$hour)
return true;
}
else
{
if((!isset($array[$i]["displayed"]) || (bool)$array[$i]["displayed"]!=true) && to_decimal_time(roundMin($array[$i]["start"], $measure, $hours_min))==(double)$hour)
return true;
}
}
return false;
}
/*function get_next_row_hour($hour, $measure, $next = 1)
{
$hourExplode = explode(".", $hour);
if((int)$hourExplode[1]>0)
{
if((int)$hourExplode[1]+$measure*100>=100)
{
$hour = (int)$hourExplode[0]+1;
//if($hour==24)
//$hour = 0;
if((int)$hourExplode[1]+$measure*100==100 || !$next)
$minutes = "00";
else
$minutes = $measure*100;
}
else
{
if(fmod((int)$hourExplode[1],(double)$measure*100)==0)
$minutes = (int)$hourExplode[1];
else
for($i=0; $i<100; $i=$i+$measure*100)
{
if((int)$hourExplode[1]<$i)
{
$minutes = $i;
break;
}
}
$hour = (int)$hourExplode[0];
if($next)
$minutes = $minutes+$measure*100;
if($minutes>100-$measure*100)
{
$hour = $hour+1;
if($minutes==100 || !$next)
$minutes = "00";
else
$minutes = $measure*100;
}
}
}
else
{
$hour = (int)$hourExplode[0];
if($next)
$minutes = $measure*100;
else
$minutes = (int)$hourExplode[1];
}
return $hour . "." . $minutes;
}*/
function get_next_row_hour($hour, $measure)
{
$hourExplode = explode(".", $hour);
if((int)$hourExplode[1]>0)
{
if((int)$hourExplode[1]+$measure*100>100)
{
$hour = (int)$hourExplode[0]+1;
if($hour==24)
$hour = 0;
$minutes = "00";
}
else if(fmod((int)$hourExplode[1],(double)$measure*100)!=0)
{
for($i=0; $i<100; $i=$i+$measure*100)
{
if((int)$hourExplode[1]<$i)
{
$minutes = $i;
break;
}
}
$hour = (int)$hourExplode[0];
}
else
{
$hour = (int)$hourExplode[0];
$minutes = (int)$hourExplode[1];
}
}
else
{
$hour = (int)$hourExplode[0];
$minutes = (int)$hourExplode[1];
}
if($hour . "." . $minutes == "0.00")
return "24.00";
return $hour . "." . $minutes;
}
function tt_get_rowspan_value($hour, $array, $rowspan, $measure, $hours_min)
{
$array_count = count($array);
$found = false;
$hours = array();
if((int)$measure==1)
{
for($i=(int)$hour; $i<(int)$hour+$rowspan; $i++)
$hours[] = $i;
for($i=0; $i<$array_count; $i++)
{
if(in_array((int)$array[$i]["start"], $hours))
{
$end_explode = explode(".", $array[$i]["end"]);
$end_hour = (int)$array[$i]["end"] + ((int)$end_explode[1]>0 ? 1 : 0);
if($end_hour-(int)$hour>1 && $end_hour-(int)$hour>$rowspan)
{
$rowspan = $end_hour-(int)$hour;
$found = true;
}
}
}
}
else
{
for($i=(double)$hour; $i<(double)$hour+$rowspan*$measure; $i=$i+$measure)
$hours[] = $i;
for($i=0; $i<$array_count; $i++)
{
if(in_array(to_decimal_time(roundMin($array[$i]["start"], $measure, $hours_min)), $hours))
{
$end_hour = to_decimal_time($array[$i]["end"], false); //changed to false - wrong value for ex. 00:30 end hour
//$end_hour = ($end_hour<24 ? get_next_row_hour($end_hour, $measure) : $end_hour);
$end_hour = get_next_row_hour($end_hour, $measure);
if($end_hour-(double)$hour>$measure && ($end_hour-(double)$hour)/$measure>$rowspan)
{
$rowspan = ($end_hour-(double)$hour)/$measure;
$found = true;
}
}
}
}
if(!$found)
return $rowspan;
else
return tt_get_rowspan_value($hour, $array, $rowspan, $measure, $hours_min);
}
function tt_get_row_content($events, $events_page, $time_format, $event_layout, $global_colors, $disable_event_url)
{
$content = "";
foreach($events as $key=>$details)
{
$color = "";
$hover_color = "";
$textcolor = "";
$hover_text_color = "";
$hours_text_color = "";
$hours_count = count($details["hours"]);
if(count($events)>1 || (count($events)==1 && $hours_count>1))
{
$color = get_post_meta($details["id"], "timetable_color", true);
$hover_color = get_post_meta($details["id"], "timetable_hover_color", true);
if($color=="" && strtoupper($global_colors["box_bg_color"])!="00A27C")
$color = $global_colors["box_bg_color"];
if($hover_color=="" && strtoupper($global_colors["box_hover_bg_color"])!="1F736A")
$hover_color = $global_colors["box_hover_bg_color"];
}
$text_color = get_post_meta($details["id"], "timetable_text_color", true);
if($text_color=="" && strtoupper($global_colors["box_txt_color"])!="FFFFFF")
$text_color = $global_colors["box_txt_color"];
$hover_text_color = get_post_meta($details["id"], "timetable_hover_text_color", true);
if($hover_text_color=="" && strtoupper($global_colors["box_hover_txt_color"])!="FFFFFF")
{
$hover_text_color = $global_colors["box_hover_txt_color"];
if($text_color=="")
$text_color = "FFFFFF";
}
$hours_text_color = get_post_meta($details["id"], "timetable_hours_text_color", true);
if($hours_text_color=="" && strtoupper($global_colors["box_hours_txt_color"])!="FFFFFF")
$hours_text_color = $global_colors["box_hours_txt_color"];
$hours_hover_text_color = get_post_meta($details["id"], "timetable_hours_hover_text_color", true);
if($hours_hover_text_color=="" && (strtoupper($global_colors["box_hours_hover_txt_color"])!="FFFFFF" || $hours_text_color!=""))
{
$hours_hover_text_color = $global_colors["box_hours_hover_txt_color"];
if($hours_text_color=="")
$hours_text_color = "FFFFFF";
}
$timetable_custom_url = get_post_meta($details["id"], "timetable_custom_url", true);
$classes_url = "";
if(!(int)get_post_meta($details["id"], "timetable_disable_url", true) && !(int)$disable_event_url)
$classes_url = ($timetable_custom_url!="" ? $timetable_custom_url : get_permalink($details["id"]));
$class_link = '<' . ($classes_url!="" ? 'a' : 'span') . ' class="event_header"' . ($classes_url!="" ? ' href="' . $classes_url /*. '#' . urldecode($details["name"])*/ . '"' : '') . ' title="' . esc_attr($details["title"]) . '"' . ($text_color!="" ? ' style="color: #' . $text_color . ' !important;"' : '') . '>' . $details["title"] . '' . ($classes_url!="" ? 'a' : 'span') . '>';
for($i=0; $i<$hours_count; $i++)
{
$tooltip = "";
$content .= '1 || (count($events)==1 && $hours_count>1)) ? ' tt_tooltip' : '' ) . '"' . ($color!="" || ($text_color!="" && (count($events)>1 || (count($events)==1 && $hours_count>1))) ? ' style="' . ($color!="" ? 'background-color: #' . $color . ';' : '') . ($text_color!="" && (count($events)>1 || (count($events)==1 && $hours_count>1)) ? 'color: #' . $text_color . ';' : '') . '"': '') . (($hover_color!="" || $hover_text_color!="" || $hours_hover_text_color!="") && (count($events)>1 || (count($events)==1 && $hours_count>1)) ? ' onMouseOver="' . ($hover_color!="" ? 'this.style.background=\'#'.$hover_color.'\';' : '') . ($hover_text_color!="" ? 'this.style.color=\'#'.$hover_text_color.'\';jQuery(this).find(\'.event_header\').css(\'cssText\', \'color: #'.$hover_text_color.' !important\');' : '') . ($hours_hover_text_color!="" ? 'jQuery(this).find(\'.hours\').css(\'color\',\'#'.$hours_hover_text_color.'\');' : '') . '" onMouseOut="' . ($hover_color!="" ? 'this.style.background=\'#'.$color.'\';' : '') . ($hover_text_color!="" ? 'this.style.color=\'#'.$text_color.'\';jQuery(this).find(\'.event_header\').css(\'cssText\',\'color: #'.$text_color.' !important\');' : '') . ($hours_hover_text_color!="" ? 'jQuery(this).find(\'.hours\').css(\'color\',\'#'.$hours_text_color.'\');' : '') . '"' : '') . '>';
$hoursExplode = explode(" - ", $details["hours"][$i]);
$startHour = date($time_format, strtotime($hoursExplode[0]));
$endHour = date($time_format, strtotime($hoursExplode[1]));
$description1_content = "";
if($details["before_hour_text"][$i]!="")
$description1_content = "
" . do_shortcode($details["before_hour_text"][$i]) . "
";
$description2_content = "";
if($details["after_hour_text"][$i]!="")
$description2_content = "
" . do_shortcode($details["after_hour_text"][$i]) . "
";
$top_hour_content = '
' . $startHour . '
';
$bottom_hour_content = '
' . $endHour . '
';
$hours_content = '
' . $startHour . ' - ' . $endHour . '
';
$class_link_tooltip = '
' . $details["title"] . '';
$tooltip = ($details["tooltip"][$i]!="" ? $class_link_tooltip : '') . $details["tooltip"][$i];
if((int)$event_layout==1)
{
$content .= $class_link;
$content .= $description1_content;
$content .= $top_hour_content;
$content .= $bottom_hour_content;
$content .= $description2_content;
}
else if((int)$event_layout==2)
{
$content .= $top_hour_content;
$content .= $bottom_hour_content;
$content .= $description1_content;
$content .= $class_link;
$content .= $description2_content;
}
else if((int)$event_layout==3)
{
$content .= $class_link;
$content .= $description1_content;
$content .= $hours_content;
$content .= $description2_content;
}
else if((int)$event_layout==4)
{
$content .= $class_link;
$content .= $description1_content;
$content .= $top_hour_content;
$content .= $description2_content;
}
else if((int)$event_layout==5)
{
$content .= $class_link;
$content .= $description1_content;
$content .= $description2_content;
}
if(count($events)==1 && $hours_count==1)
$content .= '
';
if($tooltip!="")
{
$hover_color = get_post_meta($details["id"], "timetable_hover_color", true);
if($hover_color=="" && strtoupper($global_colors["box_hover_bg_color"])!="1F736A")
$hover_color = $global_colors["box_hover_bg_color"];
$content .= '