Version Description
Download this release
Release Info
| Developer | borkweb |
| Plugin | |
| Version | 4.0.5 |
| Comparing to | |
| See all releases | |
Code changes from version 4.0.4 to 4.0.5
- common/src/Tribe/Date_Utils.php +17 -0
- common/src/Tribe/Main.php +1 -1
- common/src/functions/template-tags/general.php +21 -2
- readme.txt +6 -2
- src/Tribe/Google_Data_Markup.php +3 -3
- src/Tribe/Main.php +1 -1
- src/Tribe/Template/Month.php +1 -1
- src/functions/template-tags/loop.php +2 -2
- src/functions/template-tags/organizer.php +3 -3
- src/functions/template-tags/venue.php +2 -2
- the-events-calendar.php +1 -1
common/src/Tribe/Date_Utils.php
CHANGED
|
@@ -782,6 +782,23 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
|
|
| 782 |
return mktime( 0, 0, 0, $month, $startday + $offset, $year );
|
| 783 |
}
|
| 784 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 785 |
// @codingStandardsIgnoreEnd
|
| 786 |
}
|
| 787 |
|
| 782 |
return mktime( 0, 0, 0, $month, $startday + $offset, $year );
|
| 783 |
}
|
| 784 |
|
| 785 |
+
/**
|
| 786 |
+
* Unescapes date format strings to be used in functions like `date`.
|
| 787 |
+
*
|
| 788 |
+
* Double escaping happens when storing a date format in the database.
|
| 789 |
+
*
|
| 790 |
+
* @param mixed $date_format A date format string.
|
| 791 |
+
*
|
| 792 |
+
* @return mixed Either the original input or an unescaped date format string.
|
| 793 |
+
*/
|
| 794 |
+
public static function unescape_date_format( $date_format ) {
|
| 795 |
+
if ( ! is_string( $date_format ) ) {
|
| 796 |
+
return $date_format;
|
| 797 |
+
}
|
| 798 |
+
|
| 799 |
+
// Why so simple? Let's handle other cases as those come up. We have tests in place!
|
| 800 |
+
return str_replace( '\\\\', '\\', $date_format );
|
| 801 |
+
}
|
| 802 |
// @codingStandardsIgnoreEnd
|
| 803 |
}
|
| 804 |
|
common/src/Tribe/Main.php
CHANGED
|
@@ -17,7 +17,7 @@ class Tribe__Main {
|
|
| 17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
| 18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
| 19 |
|
| 20 |
-
const VERSION = '4.0.
|
| 21 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
| 22 |
|
| 23 |
protected $plugin_context;
|
| 17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
| 18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
| 19 |
|
| 20 |
+
const VERSION = '4.0.5';
|
| 21 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
| 22 |
|
| 23 |
protected $plugin_context;
|
common/src/functions/template-tags/general.php
CHANGED
|
@@ -153,9 +153,9 @@ if ( ! function_exists( 'tribe_get_date_format' ) ) {
|
|
| 153 |
*/
|
| 154 |
function tribe_get_date_format( $with_year = false ) {
|
| 155 |
if ( $with_year ) {
|
| 156 |
-
$format =
|
| 157 |
} else {
|
| 158 |
-
$format =
|
| 159 |
}
|
| 160 |
|
| 161 |
// Strip slashes - otherwise the slashes for escaped characters will themselves be escaped
|
|
@@ -436,3 +436,22 @@ if ( ! function_exists( 'tribe_format_currency' ) ) {
|
|
| 436 |
|
| 437 |
}
|
| 438 |
}//end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
*/
|
| 154 |
function tribe_get_date_format( $with_year = false ) {
|
| 155 |
if ( $with_year ) {
|
| 156 |
+
$format = tribe_get_date_option( 'dateWithYearFormat', get_option( 'date_format' ) );
|
| 157 |
} else {
|
| 158 |
+
$format = tribe_get_date_option( 'dateWithoutYearFormat', 'F j' );
|
| 159 |
}
|
| 160 |
|
| 161 |
// Strip slashes - otherwise the slashes for escaped characters will themselves be escaped
|
| 436 |
|
| 437 |
}
|
| 438 |
}//end if
|
| 439 |
+
|
| 440 |
+
if ( ! function_exists( 'tribe_get_date_option' ) ) {
|
| 441 |
+
/**
|
| 442 |
+
* Get a date option.
|
| 443 |
+
*
|
| 444 |
+
* Retrieve an option value taking care to escape it to preserve date format slashes.
|
| 445 |
+
*
|
| 446 |
+
* @category Events
|
| 447 |
+
* @param string $optionName Name of the option to retrieve.
|
| 448 |
+
* @param string $default Value to return if no such option is found.
|
| 449 |
+
*
|
| 450 |
+
* @return mixed Value of the option if found
|
| 451 |
+
*/
|
| 452 |
+
function tribe_get_date_option( $optionName, $default = '' ) {
|
| 453 |
+
$value = tribe_get_option( $optionName, $default );
|
| 454 |
+
|
| 455 |
+
return Tribe__Date_Utils::unescape_date_format($value);
|
| 456 |
+
}
|
| 457 |
+
}
|
readme.txt
CHANGED
|
@@ -4,8 +4,8 @@ Contributors: ModernTribe, borkweb, zbtirrell, barry.hughes, bordoni, brianjesse
|
|
| 4 |
Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
|
| 5 |
Donate link: http://m.tri.be/29
|
| 6 |
Requires at least: 3.9
|
| 7 |
-
Tested up to: 4.4
|
| 8 |
-
Stable tag: 4.0.
|
| 9 |
License: GPLv2 or later
|
| 10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 11 |
|
|
@@ -309,6 +309,10 @@ At no point during the 3.0 lifecycle will the major version change. But you can
|
|
| 309 |
|
| 310 |
== Changelog ==
|
| 311 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 312 |
= [4.0.4] 2015-12-23 =
|
| 313 |
|
| 314 |
* Tweak - Including the latest embedded Event Tickets release for backward compatibility
|
| 4 |
Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
|
| 5 |
Donate link: http://m.tri.be/29
|
| 6 |
Requires at least: 3.9
|
| 7 |
+
Tested up to: 4.4.1
|
| 8 |
+
Stable tag: 4.0.5
|
| 9 |
License: GPLv2 or later
|
| 10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 11 |
|
| 309 |
|
| 310 |
== Changelog ==
|
| 311 |
|
| 312 |
+
= [4.0.5] 2016-01-15 =
|
| 313 |
+
|
| 314 |
+
* Security - Security fix with Venues and Organizers (props to grantdayjames for reporting this!)
|
| 315 |
+
|
| 316 |
= [4.0.4] 2015-12-23 =
|
| 317 |
|
| 318 |
* Tweak - Including the latest embedded Event Tickets release for backward compatibility
|
src/Tribe/Google_Data_Markup.php
CHANGED
|
@@ -20,12 +20,12 @@ abstract class Tribe__Events__Google_Data_Markup {
|
|
| 20 |
$data[ $id ] = new stdClass();
|
| 21 |
$data[ $id ]->{'@context'} = 'http://schema.org';
|
| 22 |
$data[ $id ]->{'@type'} = 'Thing';
|
| 23 |
-
$data[ $id ]->name = get_the_title();
|
| 24 |
-
$data[ $id ]->description = tribe_events_get_the_excerpt( $post );
|
| 25 |
if ( has_post_thumbnail() ) {
|
| 26 |
$data[ $id ]->image = wp_get_attachment_url( get_post_thumbnail_id( $id ) );
|
| 27 |
}
|
| 28 |
-
$data[ $id ]->url = get_permalink( $id );
|
| 29 |
|
| 30 |
return $data;
|
| 31 |
}
|
| 20 |
$data[ $id ] = new stdClass();
|
| 21 |
$data[ $id ]->{'@context'} = 'http://schema.org';
|
| 22 |
$data[ $id ]->{'@type'} = 'Thing';
|
| 23 |
+
$data[ $id ]->name = esc_js( get_the_title() );
|
| 24 |
+
$data[ $id ]->description = esc_js( tribe_events_get_the_excerpt( $post ) );
|
| 25 |
if ( has_post_thumbnail() ) {
|
| 26 |
$data[ $id ]->image = wp_get_attachment_url( get_post_thumbnail_id( $id ) );
|
| 27 |
}
|
| 28 |
+
$data[ $id ]->url = esc_url_raw( get_permalink( $id ) );
|
| 29 |
|
| 30 |
return $data;
|
| 31 |
}
|
src/Tribe/Main.php
CHANGED
|
@@ -32,7 +32,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
| 32 |
const VENUE_POST_TYPE = 'tribe_venue';
|
| 33 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
| 34 |
|
| 35 |
-
const VERSION = '4.0.
|
| 36 |
const MIN_ADDON_VERSION = '4.0';
|
| 37 |
const WP_PLUGIN_URL = 'http://wordpress.org/extend/plugins/the-events-calendar/';
|
| 38 |
|
| 32 |
const VENUE_POST_TYPE = 'tribe_venue';
|
| 33 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
| 34 |
|
| 35 |
+
const VERSION = '4.0.5';
|
| 36 |
const MIN_ADDON_VERSION = '4.0';
|
| 37 |
const WP_PLUGIN_URL = 'http://wordpress.org/extend/plugins/the-events-calendar/';
|
| 38 |
|
src/Tribe/Template/Month.php
CHANGED
|
@@ -300,7 +300,7 @@ if ( ! class_exists( 'Tribe__Events__Template__Month' ) ) {
|
|
| 300 |
$new_title = parent::get_title( $original_title, $sep );
|
| 301 |
if ( get_query_var( 'eventDate' ) && has_filter( 'tribe_month_grid_view_title' ) ) {
|
| 302 |
_deprecated_function( "The 'tribe_month_grid_view_title' filter", '3.8', " the 'tribe_get_events_title' filter" );
|
| 303 |
-
$title_date = date_i18n(
|
| 304 |
$new_title = apply_filters( 'tribe_month_grid_view_title', $new_title, $sep, $title_date );
|
| 305 |
} elseif ( has_filter( 'tribe_events_this_month_title' ) ) {
|
| 306 |
_deprecated_function( "The 'tribe_events_this_month_title' filter", '3.8', " the 'tribe_get_events_title' filter" );
|
| 300 |
$new_title = parent::get_title( $original_title, $sep );
|
| 301 |
if ( get_query_var( 'eventDate' ) && has_filter( 'tribe_month_grid_view_title' ) ) {
|
| 302 |
_deprecated_function( "The 'tribe_month_grid_view_title' filter", '3.8', " the 'tribe_get_events_title' filter" );
|
| 303 |
+
$title_date = date_i18n( tribe_get_date_option( 'monthAndYearFormat', 'F Y' ), strtotime( get_query_var( 'eventDate' ) ) );
|
| 304 |
$new_title = apply_filters( 'tribe_month_grid_view_title', $new_title, $sep, $title_date );
|
| 305 |
} elseif ( has_filter( 'tribe_events_this_month_title' ) ) {
|
| 306 |
_deprecated_function( "The 'tribe_events_this_month_title' filter", '3.8', " the 'tribe_get_events_title' filter" );
|
src/functions/template-tags/loop.php
CHANGED
|
@@ -151,7 +151,7 @@ if ( class_exists( 'Tribe__Events__Main' ) ) {
|
|
| 151 |
$title = sprintf(
|
| 152 |
esc_html__( '%1$s for %2$s', 'the-events-calendar' ),
|
| 153 |
$events_label_plural,
|
| 154 |
-
date_i18n(
|
| 155 |
);
|
| 156 |
}
|
| 157 |
|
|
@@ -321,7 +321,7 @@ if ( class_exists( 'Tribe__Events__Main' ) ) {
|
|
| 321 |
|
| 322 |
$event_year = tribe_get_start_date( $post, false, 'Y' );
|
| 323 |
$event_month = tribe_get_start_date( $post, false, 'm' );
|
| 324 |
-
$month_year_format =
|
| 325 |
|
| 326 |
if ( $wp_query->current_post > 0 ) {
|
| 327 |
$prev_post = $wp_query->posts[ $wp_query->current_post - 1 ];
|
| 151 |
$title = sprintf(
|
| 152 |
esc_html__( '%1$s for %2$s', 'the-events-calendar' ),
|
| 153 |
$events_label_plural,
|
| 154 |
+
date_i18n( tribe_get_date_option( 'monthAndYearFormat', 'F Y' ), strtotime( tribe_get_month_view_date() ) )
|
| 155 |
);
|
| 156 |
}
|
| 157 |
|
| 321 |
|
| 322 |
$event_year = tribe_get_start_date( $post, false, 'Y' );
|
| 323 |
$event_month = tribe_get_start_date( $post, false, 'm' );
|
| 324 |
+
$month_year_format = tribe_get_date_option( 'monthAndYearFormat', 'F Y' );
|
| 325 |
|
| 326 |
if ( $wp_query->current_post > 0 ) {
|
| 327 |
$prev_post = $wp_query->posts[ $wp_query->current_post - 1 ];
|
src/functions/template-tags/organizer.php
CHANGED
|
@@ -218,7 +218,7 @@ if ( class_exists( 'Tribe__Events__Main' ) ) {
|
|
| 218 |
if ( ! function_exists( 'tribe_get_organizer_website_url' ) ) { // wrapped in if function exists to maintain compatibility with community events 3.0.x. wrapper not needed after 3.1.x.
|
| 219 |
function tribe_get_organizer_website_url( $postId = null ) {
|
| 220 |
$postId = Tribe__Events__Main::postIdHelper( $postId );
|
| 221 |
-
$output = esc_url( tribe_get_event_meta( tribe_get_organizer_id( $postId ), '_OrganizerWebsite', true ) );
|
| 222 |
|
| 223 |
return apply_filters( 'tribe_get_organizer_website_url', $output );
|
| 224 |
}
|
|
@@ -247,9 +247,9 @@ if ( class_exists( 'Tribe__Events__Main' ) ) {
|
|
| 247 |
}
|
| 248 |
$html = sprintf(
|
| 249 |
'<a href="%s" target="%s">%s</a>',
|
| 250 |
-
esc_url( $url ),
|
| 251 |
apply_filters( 'tribe_get_organizer_website_link_target', '_self' ),
|
| 252 |
-
apply_filters( 'tribe_get_organizer_website_link_label', $label )
|
| 253 |
);
|
| 254 |
} else {
|
| 255 |
$html = '';
|
| 218 |
if ( ! function_exists( 'tribe_get_organizer_website_url' ) ) { // wrapped in if function exists to maintain compatibility with community events 3.0.x. wrapper not needed after 3.1.x.
|
| 219 |
function tribe_get_organizer_website_url( $postId = null ) {
|
| 220 |
$postId = Tribe__Events__Main::postIdHelper( $postId );
|
| 221 |
+
$output = esc_url( esc_html( tribe_get_event_meta( tribe_get_organizer_id( $postId ), '_OrganizerWebsite', true ) ) );
|
| 222 |
|
| 223 |
return apply_filters( 'tribe_get_organizer_website_url', $output );
|
| 224 |
}
|
| 247 |
}
|
| 248 |
$html = sprintf(
|
| 249 |
'<a href="%s" target="%s">%s</a>',
|
| 250 |
+
esc_attr( esc_url( $url ) ),
|
| 251 |
apply_filters( 'tribe_get_organizer_website_link_target', '_self' ),
|
| 252 |
+
apply_filters( 'tribe_get_organizer_website_link_label', esc_html( $label ) )
|
| 253 |
);
|
| 254 |
} else {
|
| 255 |
$html = '';
|
src/functions/template-tags/venue.php
CHANGED
|
@@ -410,9 +410,9 @@ if ( class_exists( 'Tribe__Events__Main' ) ) {
|
|
| 410 |
}
|
| 411 |
$html = sprintf(
|
| 412 |
'<a href="%s" target="%s">%s</a>',
|
| 413 |
-
esc_url( $url ),
|
| 414 |
apply_filters( 'tribe_get_venue_website_link_target', '_self' ),
|
| 415 |
-
apply_filters( 'tribe_get_venue_website_link_label', $label )
|
| 416 |
);
|
| 417 |
} else {
|
| 418 |
$html = '';
|
| 410 |
}
|
| 411 |
$html = sprintf(
|
| 412 |
'<a href="%s" target="%s">%s</a>',
|
| 413 |
+
esc_attr( esc_url( $url ) ),
|
| 414 |
apply_filters( 'tribe_get_venue_website_link_target', '_self' ),
|
| 415 |
+
apply_filters( 'tribe_get_venue_website_link_label', esc_html( $label ) )
|
| 416 |
);
|
| 417 |
} else {
|
| 418 |
$html = '';
|
the-events-calendar.php
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
/*
|
| 3 |
Plugin Name: The Events Calendar
|
| 4 |
Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
|
| 5 |
-
Version: 4.0.
|
| 6 |
Author: Modern Tribe, Inc.
|
| 7 |
Author URI: http://m.tri.be/1x
|
| 8 |
Text Domain: the-events-calendar
|
| 2 |
/*
|
| 3 |
Plugin Name: The Events Calendar
|
| 4 |
Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
|
| 5 |
+
Version: 4.0.5
|
| 6 |
Author: Modern Tribe, Inc.
|
| 7 |
Author URI: http://m.tri.be/1x
|
| 8 |
Text Domain: the-events-calendar
|
