array('title' => __('Search', '12-step-meeting-list'), 'icon' => 'glyphicon glyphicon-search'),
'location' => array('title' => __('Near Location', '12-step-meeting-list'), 'icon' => 'glyphicon glyphicon-map-marker'),
);
//proximity only enabled over SSL
if (is_ssl()) $modes['me'] = array('title' => __('Near Me', '12-step-meeting-list'), 'icon' => 'glyphicon glyphicon-user');
//define distance dropdown
$distances = array();
foreach (array(1, 2, 5, 10, 25, 50, 100) as $distance) {
if ($tsml_distance_units == 'mi') {
$distances[$distance] = sprintf(_n('Within %d Mile', 'Within %d Miles', $distance, '12-step-meeting-list'), $distance);
} else {
$distances[$distance] = sprintf(_n('Within %d Kilometer', 'Within %d Kilometers', $distance, '12-step-meeting-list'), $distance);
}
}
//define times dropdown
$times = array(
'morning' => __('Morning', '12-step-meeting-list'),
'midday' => __('Midday', '12-step-meeting-list'),
'evening' => __('Evening', '12-step-meeting-list'),
'night' => __('Night', '12-step-meeting-list'),
);
//legacy query string stuff, we don't want to break everyone's links (just yet)
if (isset($_GET['d'])) $_GET['tsml-day'] = $_GET['d'];
if (isset($_GET['r'])) $_GET['tsml-region'] = $_GET['r'];
if (isset($_GET['t'])) $_GET['tsml-type'] = $_GET['t'];
if (isset($_GET['i'])) $_GET['tsml-time'] = $_GET['i'];
if (isset($_GET['v'])) $_GET['tsml-view'] = $_GET['v'];
if (isset($_GET['sq'])) $_GET['tsml-query'] = $_GET['sq'];
extract($tsml_defaults);
$region = $district = null;
//parse query string
if (isset($_GET['tsml-query'])) $query = sanitize_text_field(stripslashes($_GET['tsml-query']));
if (isset($_GET['tsml-region'])) {
if (term_exists(sanitize_text_field($_GET['tsml-region']), 'tsml_region')) {
$region = $_GET['tsml-region'];
} elseif (term_exists(intval($_GET['tsml-region']), 'tsml_region')) {
//legacy integer region, redirect
$term = get_term(intval($_GET['tsml-region']), 'tsml_region');
wp_redirect(add_query_arg('tsml-region', $term->slug));
} else {
wp_redirect(add_query_arg('tsml-region', null));
}
} elseif (isset($_GET['tsml-district'])) {
if (term_exists(sanitize_text_field($_GET['tsml-district']), 'tsml_district')) {
$district = $_GET['tsml-district'];
} elseif (term_exists(intval($_GET['tsml-district']), 'tsml_district')) {
//legacy integer district, redirect
$term = get_term(intval($_GET['tsml-district']), 'tsml_district');
wp_redirect(add_query_arg('tsml-district', $term->slug));
} else {
wp_redirect(add_query_arg('tsml-district', null));
}
}
$types = array();
if (!empty($_GET['tsml-type'])) {
$type_queries = explode(',', $_GET['tsml-type']);
foreach ($type_queries as $type_query) {
if (array_key_exists($type_query, $tsml_programs[$tsml_program]['types'])) {
$types[] = $type_query;
}
}
}
if (isset($_GET['tsml-time']) && (($_GET['tsml-time'] == 'upcoming') || array_key_exists($_GET['tsml-time'], $times))) $time = $_GET['tsml-time'];
if (isset($_GET['tsml-distance']) && intval($_GET['tsml-distance'])) $distance = $_GET['tsml-distance'];
if (isset($_GET['tsml-mode']) && array_key_exists($_GET['tsml-mode'], $modes)) $mode = $_GET['tsml-mode'];
if ($tsml_mapbox_key || $tsml_google_maps_key) {
$maps_enabled = true;
if (isset($_GET['tsml-view']) && in_array($_GET['tsml-view'], array('list', 'map'))) $view = $_GET['tsml-view'];
} else {
$maps_enabled = false;
$view = 'list';
}
//day default
$today = true;
if (isset($_GET['tsml-day'])) {
$today = false;
$day = ($_GET['tsml-day'] == 'any') ? null : intval($_GET['tsml-day']);
}
//time can only be upcoming if it's today
if (($time == 'upcoming') && ($day != intval(current_time('w')))) $time = null;
//labels
$day_default = __('Any Day', '12-step-meeting-list');
$day_label = ($day === null) ? $day_default : $tsml_days[$day];
$time_default = __('Any Time', '12-step-meeting-list');
if ($time == 'upcoming') {
$time_label = __('Upcoming', '12-step-meeting-list');
} else {
$time_label = $time ? $times[$time] : $time_default;
}
$region_default = $region_label = __('Everywhere', '12-step-meeting-list');
if ($region) {
$term = get_term_by('slug', $region, 'tsml_region');
$region_label = $term->name;
} elseif ($district) {
$term = get_term_by('slug', $district, 'tsml_district');
$region_label = $term->name;
}
$type_default = __('Any Type', '12-step-meeting-list');
if (!count($types)) {
$type_label = $type_default;
} else {
$type_label = array();
foreach ($types as $type) {
if (array_key_exists($type, $tsml_programs[$tsml_program]['types'])) {
$type_label[] = $tsml_programs[$tsml_program]['types'][$type];
}
}
$type_label = implode(' + ', $type_label);
}
$mode_label = array_key_exists($mode, $modes) ? $modes[$mode]['title'] : $modes[0]['title'];
$distance_label = $distances[$distance];
//create page title (todo redo with sprintf)
$tsml_page_title = array();
if ($day !== null) {
$tsml_page_title[] = $today ? __('Today\'s', '12-step-meeting-list') : $tsml_days[$day];
}
if ($time) $tsml_page_title[] = $time_label;
if (count($types)) $tsml_page_title[] = $type_label;
$tsml_page_title[] = empty($tsml_programs[$tsml_program]['abbr']) ? $tsml_programs[$tsml_program]['name'] : $tsml_programs[$tsml_program]['abbr'];
$tsml_page_title[] = __('Meetings', '12-step-meeting-list');
if ($region) $tsml_page_title[] = __('in', '12-step-meeting-list') . ' ' . $region_label;
$tsml_page_title = implode(' ', $tsml_page_title);
//set page title for SEO (only applies to this page)
function tsml_set_title($title, $separator=null) {
global $tsml_page_title;
if (empty($separator)) return $tsml_page_title;
$title_parts = array_map('trim', explode($separator, $title));
for ($i = 0; $i < count($title_parts); $i++) {
if (strcmp($title_parts[$i], __('Meetings', '12-step-meeting-list')) == 0) {
$title_parts[$i] = $tsml_page_title;
}
}
return implode(' ' . $separator . ' ', $title_parts);
};
add_filter('wp_title', 'tsml_set_title', 10, 2);
//need these later
$meetings = $locations = array();
$message = '';
//run query
if ($mode == 'search') {
$type = implode(',', $types);
$meetings = tsml_get_meetings(compact('mode', 'day', 'time', 'region', 'district', 'type', 'query'));
if (!count($meetings)) $message = $tsml_strings['no_meetings'];
} elseif ($mode == 'location') {
$message = empty($_GET['query']) ? $tsml_strings['loc_empty'] : $tsml_strings['loc_thinking'];
} elseif ($mode == 'me') {
$message = $tsml_strings['geo_thinking'];
}
class Walker_Regions_Dropdown extends Walker_Category {
function start_el(&$output, $category, $depth=0, $args=array(), $id=0) {
$classes = array('region');
if ($args['value'] == esc_attr($category->slug)) $classes[] = 'active';
$classes = count($classes) ? ' class="' . implode(' ', $classes) . '"' : '';
$output .= '
' . $category->name . '';
if ($args['has_children']) $output .= '';
}
function end_el(&$output, $item, $depth=0, $args=array()) {
$output .= '';
}
}
$regions_dropdown = wp_list_categories(array(
'taxonomy' => 'tsml_region',
'hierarchical' => true,
'orderby' => 'name',
'title_li' => null,
'hide_empty' => true,
'walker' => new Walker_Regions_Dropdown,
'value' => $region,
'show_option_none' => null,
'echo' => false,
//'show_count' => true,
));
class Walker_Districts_Dropdown extends Walker_Category {
function start_el(&$output, $category, $depth=0, $args=array(), $id=0) {
$classes = array('district');
if ($args['value'] == esc_attr($category->slug)) $classes[] = 'active';
$classes = count($classes) ? ' class="' . implode(' ', $classes) . '"' : '';
$output .= '' . $category->name . '';
if ($args['has_children']) $output .= '';
}
function end_el(&$output, $item, $depth=0, $args=array()) {
$output .= '';
}
}
$districts_dropdown = wp_list_categories(array(
'taxonomy' => 'tsml_district',
'hierarchical' => true,
'orderby' => 'name',
'title_li' => null,
'hide_empty' => true,
'walker' => new Walker_Districts_Dropdown,
'value' => $district,
'show_option_none' => null,
'echo' => false,
//'show_count' => true,
));
//adding custom body classes
add_filter('body_class', 'tsml_body_class');
function tsml_body_class($classes) {
$classes[] = 'tsml tsml-meetings';
return $classes;
}
//do this after everything is loaded
get_header();
?>
$column) {
echo '| ' . __($column, '12-step-meeting-list') . ' | ';
}?>
$meeting['location'],
'latitude' => $meeting['latitude'] - 0,
'longitude' => $meeting['longitude'] - 0,
'url' => $meeting['location_url'], //can't use link here, unfortunately
'formatted_address' => $meeting['formatted_address'],
'meetings' => array(),
);
}
$locations[$meeting['location_id']]['meetings'][] = array(
'time' => $meeting['time_formatted'],
'day' => @$meeting['day'],
'name' => $meeting['name'],
'url' => $meeting['url'], //can't use link here, unfortunately
'types' => $meeting['types'],
);
$sort_time = @$meeting['day'] . '-' . (@$meeting['time'] == '00:00' ? '23:59' : @$meeting['time']);
?>
class="notes">
$column) {
switch ($key) {
case 'time':?>
| ');
} else {
echo $meeting['time_formatted'];
}
?> |
|
|
|
|
|
|
|