1) {
$state_zip = array_pop($parts);
$parts[count($parts) - 1] .= ', ' . $state_zip;
}
}
if ($street_only) {
return array_shift($parts);
}
return implode('
', $parts);
}
/**
* takes 0, 18:30 and returns Sunday, 6:30 pm (depending on your settings)
* used on admin_edit.php, archive-meetings.php, single-meetings.php
*
* @param mixed $day
* @param mixed $time
* @param mixed $separator
* @param mixed $short
* @return string
*/
function tsml_format_day_and_time($day, $time, $separator = ', ', $short = false)
{
global $tsml_days;
// translators: Appt is abbreviation for Appointment
if (empty($tsml_days[$day]) || empty($time)) {
return $short ? __('Appt', '12-step-meeting-list') : __('Appointment', '12-step-meeting-list');
}
return ($short ? substr($tsml_days[$day], 0, 3) : $tsml_days[$day]) . $separator . tsml_format_time($time);
}
/**
* appends men or women (or custom flags) if type present
* used on archive-meetings.php
*
* @param mixed $name
* @param mixed $types
* @return mixed
*/
function tsml_format_name($name, $types = null)
{
global $tsml_program, $tsml_programs;
if (!is_array($types)) {
$types = [];
}
if (empty($tsml_programs[$tsml_program]['flags']) || !is_array($tsml_programs[$tsml_program]['flags'])) {
return $name;
}
$append = [];
$meeting_is_online = in_array('ONL', $types);
// Types assigned to the meeting passed to the function
foreach ($types as $type) {
// True if the type for the meeting exists in one of the predetermined flags
$type_is_flagged = in_array($type, $tsml_programs[$tsml_program]['flags']);
$type_not_tc_and_online = !($type === 'TC' && $meeting_is_online);
if ($type_is_flagged && $type_not_tc_and_online) {
$append[] = $tsml_programs[$tsml_program]['types'][$type];
}
}
return count($append) ? $name . ' ' . implode(', ', $append) . '' : $name;
}
/**
* format notes with sanitized paragraphs and line breaks
*
* @param mixed $notes
* @return void
*/
function tsml_format_notes($notes)
{
echo wpautop(nl2br(esc_html($notes)));
}
/**
* get meeting types
* used on archive-meetings.php
*
* @param mixed $types
* @return string
*/
function tsml_format_types($types = [])
{
global $tsml_program, $tsml_programs;
if (!is_array($types)) {
$types = [];
}
$append = [];
// Types assigned to the meeting passed to the function
foreach ($types as $type) {
// True if the type for the meeting exists in one of the predetermined flags
$type_is_flagged = in_array($type, $tsml_programs[$tsml_program]['flags']);
if ($type_is_flagged && $type != 'TC' && $type != 'ONL') {
$append[] = $tsml_programs[$tsml_program]['types'][$type];
}
}
return implode(', ', $append);
}
/**
* takes 18:30 and returns 6:30 pm (depending on your settings)
* used on tsml_get_meetings(), single-meetings.php, admin_lists.php
*
* @param mixed $string
* @return string
*/
function tsml_format_time($string)
{
if (empty($string)) {
return __('Appointment', '12-step-meeting-list');
}
if ($string == '12:00') {
return __('Noon', '12-step-meeting-list');
}
if ($string == '23:59' || $string == '00:00') {
return __('Midnight', '12-step-meeting-list');
}
$date = strtotime($string);
return date(get_option('time_format'), $date);
}
/**
* takes a time string, eg 6:30 pm, and returns 18:30
* used on tsml_import(), tsml_time_duration()
*
* @param mixed $string
* @return string
*/
function tsml_format_time_reverse($string)
{
$time_parts = date_parse($string);
return sprintf('%02d', $time_parts['hour']) . ':' . sprintf('%02d', $time_parts['minute']);
}
/**
* takes a website URL, eg https://www.groupname.org and returns the domain
* used on single-meetings.php
*
* @param mixed $url
* @return mixed
*/
function tsml_format_domain($url)
{
$parts = parse_url(strtolower($url));
if (!$parts) {
return $url;
}
if (substr($parts['host'], 0, 4) == 'www.') {
return substr($parts['host'], 4);
}
return $parts['host'];
}