Version Description
Download this release
Release Info
| Developer | calvinyeh |
| Plugin | |
| Version | 2.5.39 |
| Comparing to | |
| See all releases | |
Code changes from version 2.5.38 to 2.5.39
all-in-one-event-calendar.php
CHANGED
|
@@ -5,7 +5,7 @@
|
|
| 5 |
* Description: A calendar system with month, week, day, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
|
| 6 |
* Author: Time.ly Network Inc.
|
| 7 |
* Author URI: https://time.ly/
|
| 8 |
-
* Version: 2.5.
|
| 9 |
* Text Domain: all-in-one-event-calendar
|
| 10 |
* Domain Path: /language
|
| 11 |
*/
|
| 5 |
* Description: A calendar system with month, week, day, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
|
| 6 |
* Author: Time.ly Network Inc.
|
| 7 |
* Author URI: https://time.ly/
|
| 8 |
+
* Version: 2.5.39
|
| 9 |
* Text Domain: all-in-one-event-calendar
|
| 10 |
* Domain Path: /language
|
| 11 |
*/
|
app/config/constants.php
CHANGED
|
@@ -50,7 +50,7 @@ function ai1ec_initiate_constants( $ai1ec_base_dir, $ai1ec_base_url ) {
|
|
| 50 |
// = Plugin Version =
|
| 51 |
// ==================
|
| 52 |
if ( ! defined( 'AI1EC_VERSION' ) ) {
|
| 53 |
-
define( 'AI1EC_VERSION', '2.5.
|
| 54 |
}
|
| 55 |
|
| 56 |
// ================
|
| 50 |
// = Plugin Version =
|
| 51 |
// ==================
|
| 52 |
if ( ! defined( 'AI1EC_VERSION' ) ) {
|
| 53 |
+
define( 'AI1EC_VERSION', '2.5.39' );
|
| 54 |
}
|
| 55 |
|
| 56 |
// ================
|
app/model/event/creating.php
CHANGED
|
@@ -49,7 +49,7 @@ class Ai1ec_Event_Creating extends Ai1ec_Base {
|
|
| 49 |
/**
|
| 50 |
* =====================================================================
|
| 51 |
*
|
| 52 |
-
* CHANGE CODE
|
| 53 |
* - be initializiable from model;
|
| 54 |
* - have sane defaults;
|
| 55 |
* - avoid that cluster of isset and ternary operator.
|
|
@@ -57,33 +57,33 @@ class Ai1ec_Event_Creating extends Ai1ec_Base {
|
|
| 57 |
* =====================================================================
|
| 58 |
*/
|
| 59 |
|
| 60 |
-
$all_day = isset( $_POST['ai1ec_all_day_event'] ) ? 1
|
| 61 |
-
$instant_event = isset( $_POST['ai1ec_instant_event'] ) ? 1
|
| 62 |
-
$timezone_name = isset( $_POST['ai1ec_timezone_name'] ) ? $_POST['ai1ec_timezone_name']
|
| 63 |
-
$start_time = isset( $_POST['ai1ec_start_time'] ) ? $_POST['ai1ec_start_time']
|
| 64 |
-
$end_time = isset( $_POST['ai1ec_end_time'] ) ? $_POST['ai1ec_end_time']
|
| 65 |
-
$venue = isset( $_POST['ai1ec_venue'] ) ? $_POST['ai1ec_venue']
|
| 66 |
-
$address = isset( $_POST['ai1ec_address'] ) ? $_POST['ai1ec_address']
|
| 67 |
-
$city = isset( $_POST['ai1ec_city'] ) ? $_POST['ai1ec_city']
|
| 68 |
-
$province = isset( $_POST['ai1ec_province'] ) ? $_POST['ai1ec_province']
|
| 69 |
-
$postal_code = isset( $_POST['ai1ec_postal_code'] ) ? $_POST['ai1ec_postal_code']
|
| 70 |
-
$country = isset( $_POST['ai1ec_country'] ) ? $_POST['ai1ec_country']
|
| 71 |
-
$google_map = isset( $_POST['ai1ec_google_map'] ) ? 1
|
| 72 |
-
$cost = isset( $_POST['ai1ec_cost'] ) ? $_POST['ai1ec_cost']
|
| 73 |
-
$is_free = isset( $_POST['ai1ec_is_free'] ) ? (bool)$_POST['ai1ec_is_free']
|
| 74 |
-
$ticket_url = isset( $_POST['ai1ec_ticket_url'] ) ? $_POST['ai1ec_ticket_url']
|
| 75 |
-
$contact_name = isset( $_POST['ai1ec_contact_name'] ) ? $_POST['ai1ec_contact_name']
|
| 76 |
-
$contact_phone = isset( $_POST['ai1ec_contact_phone'] ) ? $_POST['ai1ec_contact_phone']
|
| 77 |
-
$contact_email = isset( $_POST['ai1ec_contact_email'] ) ? $_POST['ai1ec_contact_email']
|
| 78 |
-
$contact_url = isset( $_POST['ai1ec_contact_url'] ) ? $_POST['ai1ec_contact_url']
|
| 79 |
-
$show_coordinates = isset( $_POST['ai1ec_input_coordinates'] )? 1
|
| 80 |
-
$longitude = isset( $_POST['ai1ec_longitude'] ) ? $_POST['ai1ec_longitude']
|
| 81 |
-
$latitude = isset( $_POST['ai1ec_latitude'] ) ? $_POST['ai1ec_latitude']
|
| 82 |
-
$cost_type = isset( $_POST['ai1ec_cost_type'] ) ? $_POST['ai1ec_cost_type']
|
| 83 |
-
$rrule
|
| 84 |
-
$exrule
|
| 85 |
-
$exdate
|
| 86 |
-
$rdate
|
| 87 |
|
| 88 |
if ( 'external' !== $cost_type ) {
|
| 89 |
$ticket_url = '';
|
|
@@ -218,10 +218,10 @@ class Ai1ec_Event_Creating extends Ai1ec_Base {
|
|
| 218 |
return null;
|
| 219 |
}
|
| 220 |
$event = $data['event'];
|
| 221 |
-
$is_new = $data[
|
| 222 |
|
| 223 |
-
$banner_image = isset( $_POST['ai1ec_banner_image'] ) ? $_POST['ai1ec_banner_image'] : '';
|
| 224 |
-
$cost_type = isset( $_POST['ai1ec_cost_type'] ) ? $_POST['ai1ec_cost_type'] : '';
|
| 225 |
|
| 226 |
update_post_meta( $post_id, 'ai1ec_banner_image', $banner_image );
|
| 227 |
if ( $cost_type ) {
|
|
@@ -300,7 +300,7 @@ class Ai1ec_Event_Creating extends Ai1ec_Base {
|
|
| 300 |
case 'inline-save': //quick edit from edit page
|
| 301 |
$fields = array();
|
| 302 |
if ( false === ai1ec_is_blank( $_REQUEST['post_title'] ) ) {
|
| 303 |
-
$fields['title'] = $_REQUEST['post_title'];
|
| 304 |
}
|
| 305 |
if ( false === ai1ec_is_blank( $_REQUEST['_status'] ) ) {
|
| 306 |
$fields['status'] = $_REQUEST['_status'];
|
|
@@ -425,8 +425,11 @@ class Ai1ec_Event_Creating extends Ai1ec_Base {
|
|
| 425 |
$_POST[$field] = $to_value;
|
| 426 |
}
|
| 427 |
}
|
| 428 |
-
$_POST
|
| 429 |
-
$_POST['post_parent']
|
|
|
|
|
|
|
|
|
|
| 430 |
$post_id = wp_insert_post( $_POST );
|
| 431 |
$this->_registry->get( 'model.event.parent' )->event_parent(
|
| 432 |
$post_id,
|
| 49 |
/**
|
| 50 |
* =====================================================================
|
| 51 |
*
|
| 52 |
+
* CHANGE CODE BELOW TO HAVE FOLLOWING PROPERTIES:
|
| 53 |
* - be initializiable from model;
|
| 54 |
* - have sane defaults;
|
| 55 |
* - avoid that cluster of isset and ternary operator.
|
| 57 |
* =====================================================================
|
| 58 |
*/
|
| 59 |
|
| 60 |
+
$all_day = isset( $_POST['ai1ec_all_day_event'] ) ? 1 : 0;
|
| 61 |
+
$instant_event = isset( $_POST['ai1ec_instant_event'] ) ? 1 : 0;
|
| 62 |
+
$timezone_name = isset( $_POST['ai1ec_timezone_name'] ) ? sanitize_text_field( $_POST['ai1ec_timezone_name'] ) : 'sys.default';
|
| 63 |
+
$start_time = isset( $_POST['ai1ec_start_time'] ) ? sanitize_text_field( $_POST['ai1ec_start_time'] ) : '';
|
| 64 |
+
$end_time = isset( $_POST['ai1ec_end_time'] ) ? sanitize_text_field( $_POST['ai1ec_end_time'] ) : '';
|
| 65 |
+
$venue = isset( $_POST['ai1ec_venue'] ) ? sanitize_text_field( $_POST['ai1ec_venue'] ) : '';
|
| 66 |
+
$address = isset( $_POST['ai1ec_address'] ) ? sanitize_text_field( $_POST['ai1ec_address'] ) : '';
|
| 67 |
+
$city = isset( $_POST['ai1ec_city'] ) ? sanitize_text_field( $_POST['ai1ec_city'] ) : '';
|
| 68 |
+
$province = isset( $_POST['ai1ec_province'] ) ? sanitize_text_field( $_POST['ai1ec_province'] ) : '';
|
| 69 |
+
$postal_code = isset( $_POST['ai1ec_postal_code'] ) ? sanitize_text_field( $_POST['ai1ec_postal_code'] ) : '';
|
| 70 |
+
$country = isset( $_POST['ai1ec_country'] ) ? sanitize_text_field( $_POST['ai1ec_country'] ) : '';
|
| 71 |
+
$google_map = isset( $_POST['ai1ec_google_map'] ) ? 1 : 0;
|
| 72 |
+
$cost = isset( $_POST['ai1ec_cost'] ) ? sanitize_text_field( $_POST['ai1ec_cost'] ) : '';
|
| 73 |
+
$is_free = isset( $_POST['ai1ec_is_free'] ) ? (bool)$_POST['ai1ec_is_free'] : false;
|
| 74 |
+
$ticket_url = isset( $_POST['ai1ec_ticket_url'] ) ? sanitize_text_field( $_POST['ai1ec_ticket_url'] ) : '';
|
| 75 |
+
$contact_name = isset( $_POST['ai1ec_contact_name'] ) ? sanitize_text_field( $_POST['ai1ec_contact_name'] ) : '';
|
| 76 |
+
$contact_phone = isset( $_POST['ai1ec_contact_phone'] ) ? sanitize_text_field( $_POST['ai1ec_contact_phone'] ) : '';
|
| 77 |
+
$contact_email = isset( $_POST['ai1ec_contact_email'] ) ? sanitize_text_field( $_POST['ai1ec_contact_email'] ) : '';
|
| 78 |
+
$contact_url = isset( $_POST['ai1ec_contact_url'] ) ? sanitize_text_field( $_POST['ai1ec_contact_url'] ) : '';
|
| 79 |
+
$show_coordinates = isset( $_POST['ai1ec_input_coordinates'] )? 1 : 0;
|
| 80 |
+
$longitude = isset( $_POST['ai1ec_longitude'] ) ? sanitize_text_field( $_POST['ai1ec_longitude'] ) : '';
|
| 81 |
+
$latitude = isset( $_POST['ai1ec_latitude'] ) ? sanitize_text_field( $_POST['ai1ec_latitude'] ) : '';
|
| 82 |
+
$cost_type = isset( $_POST['ai1ec_cost_type'] ) ? sanitize_text_field( $_POST['ai1ec_cost_type'] ) : '';
|
| 83 |
+
$rrule = null;
|
| 84 |
+
$exrule = null;
|
| 85 |
+
$exdate = null;
|
| 86 |
+
$rdate = null;
|
| 87 |
|
| 88 |
if ( 'external' !== $cost_type ) {
|
| 89 |
$ticket_url = '';
|
| 218 |
return null;
|
| 219 |
}
|
| 220 |
$event = $data['event'];
|
| 221 |
+
$is_new = $data['is_new'];
|
| 222 |
|
| 223 |
+
$banner_image = isset( $_POST['ai1ec_banner_image'] ) ? sanitize_text_field( $_POST['ai1ec_banner_image'] ) : '';
|
| 224 |
+
$cost_type = isset( $_POST['ai1ec_cost_type'] ) ? sanitize_text_field( $_POST['ai1ec_cost_type'] ) : '';
|
| 225 |
|
| 226 |
update_post_meta( $post_id, 'ai1ec_banner_image', $banner_image );
|
| 227 |
if ( $cost_type ) {
|
| 300 |
case 'inline-save': //quick edit from edit page
|
| 301 |
$fields = array();
|
| 302 |
if ( false === ai1ec_is_blank( $_REQUEST['post_title'] ) ) {
|
| 303 |
+
$fields['title'] = sanitize_text_field( $_REQUEST['post_title'] );
|
| 304 |
}
|
| 305 |
if ( false === ai1ec_is_blank( $_REQUEST['_status'] ) ) {
|
| 306 |
$fields['status'] = $_REQUEST['_status'];
|
| 425 |
$_POST[$field] = $to_value;
|
| 426 |
}
|
| 427 |
}
|
| 428 |
+
$_POST = _wp_translate_postdata( false, $_POST );
|
| 429 |
+
$_POST['post_parent'] = $old_post_id;
|
| 430 |
+
if ( isset( $_POST['post_title'] ) ) {
|
| 431 |
+
$_POST['post_title'] = sanitize_text_field( $_POST['post_title'] );
|
| 432 |
+
}
|
| 433 |
$post_id = wp_insert_post( $_POST );
|
| 434 |
$this->_registry->get( 'model.event.parent' )->event_parent(
|
| 435 |
$post_id,
|
language/all-in-one-event-calendar.mo
CHANGED
|
Binary file
|
language/all-in-one-event-calendar.po
CHANGED
|
@@ -2,13 +2,13 @@
|
|
| 2 |
# This file is distributed under the same license as the All-in-One Event Calendar by Time.ly package.
|
| 3 |
msgid ""
|
| 4 |
msgstr ""
|
| 5 |
-
"Project-Id-Version: All-in-One Event Calendar by Time.ly 2.5.
|
| 6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
|
| 7 |
-
"POT-Creation-Date: 2019-
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
| 11 |
-
"PO-Revision-Date: 2019-
|
| 12 |
"Last-Translator: Timely <support@time.ly>\n"
|
| 13 |
"Language-Team:\n"
|
| 14 |
|
| 2 |
# This file is distributed under the same license as the All-in-One Event Calendar by Time.ly package.
|
| 3 |
msgid ""
|
| 4 |
msgstr ""
|
| 5 |
+
"Project-Id-Version: All-in-One Event Calendar by Time.ly 2.5.39\n"
|
| 6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
|
| 7 |
+
"POT-Creation-Date: 2019-05-02 19:09:33+00:00\n"
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
| 11 |
+
"PO-Revision-Date: 2019-05-02 19:09+0000\n"
|
| 12 |
"Last-Translator: Timely <support@time.ly>\n"
|
| 13 |
"Language-Team:\n"
|
| 14 |
|
language/all-in-one-event-calendar.pot
CHANGED
|
@@ -2,9 +2,9 @@
|
|
| 2 |
# This file is distributed under the same license as the All-in-One Event Calendar by Time.ly package.
|
| 3 |
msgid ""
|
| 4 |
msgstr ""
|
| 5 |
-
"Project-Id-Version: All-in-One Event Calendar by Time.ly 2.5.
|
| 6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
|
| 7 |
-
"POT-Creation-Date: 2019-
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
| 2 |
# This file is distributed under the same license as the All-in-One Event Calendar by Time.ly package.
|
| 3 |
msgid ""
|
| 4 |
msgstr ""
|
| 5 |
+
"Project-Id-Version: All-in-One Event Calendar by Time.ly 2.5.39\n"
|
| 6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
|
| 7 |
+
"POT-Creation-Date: 2019-05-02 19:09:33+00:00\n"
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
readme.txt
CHANGED
|
@@ -2,8 +2,8 @@
|
|
| 2 |
Contributors: uchu, calvinyeh, raquelleira, renatotbueno, domanb, elirenato, hubrik, vtowel, yani.iliev, nicolapeluchetti, jbutkus, lpawlik, bangelov
|
| 3 |
Tags: calendar, event, ical, feed, ics, icalendar, sync, aggregator, google, venue, calendar widget, events widget
|
| 4 |
Requires at least: 3.5
|
| 5 |
-
Tested up to: 5.
|
| 6 |
-
Stable tag: 2.5.
|
| 7 |
Requires PHP: 5.4
|
| 8 |
License: GNU General Public License, version 3 (GPL-3.0)
|
| 9 |
|
|
@@ -124,6 +124,9 @@ You can help translate by going to [https://translate.time.ly](https://translate
|
|
| 124 |
|
| 125 |
== Changelog ==
|
| 126 |
|
|
|
|
|
|
|
|
|
|
| 127 |
= Version 2.5.38 =
|
| 128 |
* Fixed: Invalid file location for the current theme options would throw HTTP 500 error on specific server environments.
|
| 129 |
|
| 2 |
Contributors: uchu, calvinyeh, raquelleira, renatotbueno, domanb, elirenato, hubrik, vtowel, yani.iliev, nicolapeluchetti, jbutkus, lpawlik, bangelov
|
| 3 |
Tags: calendar, event, ical, feed, ics, icalendar, sync, aggregator, google, venue, calendar widget, events widget
|
| 4 |
Requires at least: 3.5
|
| 5 |
+
Tested up to: 5.2
|
| 6 |
+
Stable tag: 2.5.39
|
| 7 |
Requires PHP: 5.4
|
| 8 |
License: GNU General Public License, version 3 (GPL-3.0)
|
| 9 |
|
| 124 |
|
| 125 |
== Changelog ==
|
| 126 |
|
| 127 |
+
= Version 2.5.39 =
|
| 128 |
+
* Fixed XSS Security vulnerability by sanitizing the event input.
|
| 129 |
+
|
| 130 |
= Version 2.5.38 =
|
| 131 |
* Fixed: Invalid file location for the current theme options would throw HTTP 500 error on specific server environments.
|
| 132 |
|
