/** * Parses a shortcode, returning the appropriate event information * Much of this code is 'borrowed' from WordPress' own shortcode handling stuff! */ protected function process_shortcode($m) { if ('[' == $m[1] && ']' == $m[6]) { return substr($m[0], 1, -1); } //Extract any attributes contained in the shortcode extract(shortcode_atts(array('format' => '', 'limit' => '0', 'size' => 'post-thumbnail', 'link' => 'false', 'cond' => ''), shortcode_parse_atts($m[3]))); //Sanitize the attributes $format = esc_attr($format); $cond = esc_attr($cond); $size = esc_attr($size); $limit = absint($limit); $link = 'true' === $link; // Do the appropriate stuff depending on which shortcode we're looking at. // See valid shortcode list (above) for explanation of each shortcode switch ($m[2]) { case 'event-title': $title = esc_html(trim(get_the_title())); //If a word limit has been set, trim the title to the required length if (0 != $limit) { preg_match('/([\\S]+\\s*){0,' . $limit . '}/', $title, $title); $title = trim($title[0]); } if ($link) { return $m[1] . '<a href="' . get_permalink() . '">' . $title . '</a>' . $m[6]; } else { return $m[1] . $title . $m[6]; } case 'thumbnail': $thumbnail = get_the_post_thumbnail(get_the_ID(), $size); return $m[1] . $thumbnail . $m[6]; case 'content': $content = get_the_content(); //If a word limit has been set, trim the title to the required length if (0 != $limit) { preg_match('/([\\S]+\\s*){0,' . $limit . '}/', $content, $content); $content = trim($content[0]); } return $m[1] . $content . $m[6]; case 'permalink': return $m[1] . get_permalink() . $m[6]; case 'excerpt': $excerpt = get_the_excerpt(); if (0 != $limit) { preg_match('/([\\S]+\\s*){0,' . $limit . '}/', $excerpt, $excerpt); $excerpt = trim($excerpt[0]); } return $m[1] . get_the_excerpt() . $m[6]; case 'event-category': $categoryArray = am_get_the_event_category(); if (count($categoryArray) > 0) { if ($link) { return $m[1] . '<a href="' . get_term_link($categoryArray[0]) . '">' . $categoryArray[0]->name . '</a>' . $m[6]; } else { return $m[1] . $categoryArray[0]->name . $m[6]; } } else { return '-'; } case 'event-venue': $venueArray = am_get_the_venue(); if (count($venueArray) > 0) { if ($link) { return $m[1] . '<a href="' . get_term_link($venueArray[0]) . '">' . $venueArray[0]->name . '</a>' . $m[6]; } else { return $m[1] . $venueArray[0]->name . $m[6]; } } else { return '-'; } case 'start-date': $startdate = am_get_the_startdate(); $format = $format === '' ? "m/d/Y H:i" : $format; return $m[1] . date_i18n($format, strtotime($startdate)) . $m[6]; case 'end-date': $enddate = am_get_the_enddate(); $format = $format === '' ? "m/d/Y H:i" : $format; return $m[1] . date_i18n($format, strtotime($enddate)) . $m[6]; case 'if': switch ($cond) { case 'startdate-not-enddate': $result = am_get_the_startdate() !== am_get_the_enddate() ? $m[1] . $m[5] . $m[6] : ''; return $this->parse_event($result); case 'startday-not-endday': $start_day = date('mdY', strtotime(am_get_the_startdate())); $end_day = date('mdY', strtotime(am_get_the_enddate())); $result = $start_day !== $end_day ? $m[1] . $m[5] . $m[6] : ''; return $this->parse_event($result); case 'startdate-is-enddate': $result = am_get_the_startdate() === am_get_the_enddate() ? $m[1] . $m[5] . $m[6] : ''; return $this->parse_event($result); case 'startday-is-endday': $start_day = date('mdY', strtotime(am_get_the_startdate())); $end_day = date('mdY', strtotime(am_get_the_enddate())); $result = $start_day === $end_day ? $m[1] . $m[5] . $m[6] : ''; return $this->parse_event($result); default: return $this->parse_event($m[1] . $m[5] . $m[6]); } } }
/** * Retrieve event category list in either HTML list or custom format. * * @since 1.3.0 * * @param string $separator Optional, default is empty string. Separator for between the categories. * @param string $parents Optional. How to display the parents. * @param int $post_id Optional. Event post ID to retrieve categories. * @return string */ function am_get_the_event_category_list($separator = '', $parents = '', $post_id = false) { global $wp_rewrite; if (!is_object_in_taxonomy(get_post_type($post_id), 'am_event_categories')) { return apply_filters('am_the_event_category', '', $separator, $parents); } $categories = am_get_the_event_category($post_id); if (empty($categories)) { return apply_filters('am_the_event_category', __('Uncategorized'), $separator, $parents); } $rel = is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ? 'rel="category tag"' : 'rel="category"'; $thelist = ''; if ('' == $separator) { $thelist .= '<ul class="event-categories">'; foreach ($categories as $category) { $thelist .= "\n\t<li>"; switch (strtolower($parents)) { case 'multiple': if ($category->parent) { $thelist .= get_category_parents($category->parent, true, $separator); } $thelist .= '<a href="' . esc_url(get_category_link($category->term_id)) . '" title="' . esc_attr(sprintf(_x("View all events in %s", "Category", "am-events"), $category->name)) . '" ' . $rel . '>' . $category->name . '</a></li>'; break; case 'single': $thelist .= '<a href="' . esc_url(get_category_link($category->term_id)) . '" title="' . esc_attr(sprintf(_x("View all events in %s", "Category", "am-events"), $category->name)) . '" ' . $rel . '>'; if ($category->parent) { $thelist .= get_category_parents($category->parent, false, $separator); } $thelist .= $category->name . '</a></li>'; break; case '': default: $thelist .= '<a href="' . esc_url(get_category_link($category->term_id)) . '" title="' . esc_attr(sprintf(_x("View all events in %s", "Category", "am-events"), $category->name)) . '" ' . $rel . '>' . $category->name . '</a></li>'; } } $thelist .= '</ul>'; } else { $i = 0; foreach ($categories as $category) { if (0 < $i) { $thelist .= $separator; } switch (strtolower($parents)) { case 'multiple': if ($category->parent) { $thelist .= get_category_parents($category->parent, true, $separator); } $thelist .= '<a href="' . esc_url(get_category_link($category->term_id)) . '" title="' . esc_attr(sprintf(_x("View all events in %s", "Category", "am-events"), $category->name)) . '" ' . $rel . '>' . $category->name . '</a>'; break; case 'single': $thelist .= '<a href="' . esc_url(get_category_link($category->term_id)) . '" title="' . esc_attr(sprintf(_x("View all events in %s", "Category", "am-events"), $category->name)) . '" ' . $rel . '>'; if ($category->parent) { $thelist .= get_category_parents($category->parent, false, $separator); } $thelist .= "{$category->name}</a>"; break; case '': default: $thelist .= '<a href="' . esc_url(get_category_link($category->term_id)) . '" title="' . esc_attr(sprintf(_x("View all events in %s", "Category", "am-events"), $category->name)) . '" ' . $rel . '>' . $category->name . '</a>'; } ++$i; } } return apply_filters('am_the_event_category', $thelist, $separator, $parents); }