--- a/simply-schedule-appointments/admin-app/iframe-inner.php
+++ b/simply-schedule-appointments/admin-app/iframe-inner.php
@@ -62,7 +62,7 @@
<link rel='stylesheet' id='ssa-admin-custom-css' href='<?php echo $admin_css_url; ?>' type='text/css' media='all' />
<?php do_action( 'ssa_admin_head' ); ?>
</head>
- <body <?php body_class(); ?>>
+ <body <?php body_class(); ?> data-iframe-height>
<?php echo '<div id="ssa-admin-app">
<noscript>
<div class="unsupported">
--- a/simply-schedule-appointments/booking-app-new/fullscreen-page.php
+++ b/simply-schedule-appointments/booking-app-new/fullscreen-page.php
@@ -6,7 +6,7 @@
<title><?php the_title(); ?></title>
<?php wp_head(); ?>
</head>
- <body <?php body_class(); ?>>
+ <body <?php body_class(); ?> data-iframe-height>
<?php while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; // End of the loop. ?>
--- a/simply-schedule-appointments/booking-app-new/page-appointment-edit.php
+++ b/simply-schedule-appointments/booking-app-new/page-appointment-edit.php
@@ -6,7 +6,7 @@
<title><?php echo apply_filters( 'ssa_appointment_edit_page_title', __( 'Edit Appointment', 'simply-schedule-appointments' ) ); ?></title>
<?php wp_head(); ?>
</head>
- <body <?php body_class(); ?>>
+ <body <?php body_class(); ?> data-iframe-height>
<?php
global $ssa_current_appointment_id;
if ( empty( $ssa_current_appointment_id ) ) {
--- a/simply-schedule-appointments/includes/class-elementor.php
+++ b/simply-schedule-appointments/includes/class-elementor.php
@@ -20,7 +20,7 @@
*
* @var string The plugin version.
*/
- const VERSION = '1.6.9.9';
+ const VERSION = '1.6.9.13';
/**
* Minimum Elementor Version
@@ -29,7 +29,7 @@
*
* @var string Minimum Elementor version required to run the plugin.
*/
- const MINIMUM_ELEMENTOR_VERSION = '1.6.9.9';
+ const MINIMUM_ELEMENTOR_VERSION = '1.6.9.13';
/**
* Minimum PHP Version
@@ -38,7 +38,7 @@
*
* @var string Minimum PHP version required to run the plugin.
*/
- const MINIMUM_PHP_VERSION = '1.6.9.9';
+ const MINIMUM_PHP_VERSION = '1.6.9.13';
/**
* Instance
--- a/simply-schedule-appointments/includes/class-paypal-ipn-listener.php
+++ b/simply-schedule-appointments/includes/class-paypal-ipn-listener.php
@@ -23,7 +23,7 @@
* @package PHP-PayPal-IPN
* @author Micah Carrick
* @copyright (c) 2011 - Micah Carrick
- * @version 1.6.9.9
+ * @version 1.6.9.13
* @license http://opensource.org/licenses/gpl-3.0.html
*/
--- a/simply-schedule-appointments/includes/lib/td-util/class-td-db-model.php
+++ b/simply-schedule-appointments/includes/lib/td-util/class-td-db-model.php
@@ -222,8 +222,8 @@
*/
public function db_get_by( $field, $row_id, $recursive=0 ) {
global $wpdb;
- $field = esc_sql( $field );
- $row = (array)$wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$this->get_table_name()} WHERE $field = %s LIMIT 1;", $row_id ) );
+ $sanitized_field = sanitize_key( esc_sql( $field ) );
+ $row = (array)$wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$this->get_table_name()} WHERE $sanitized_field = %s LIMIT 1;", $row_id ) );
$row = $this->prepare_item_for_response( $row, $recursive );
return $row;
}
@@ -237,8 +237,8 @@
*/
public function db_get_field( $field, $row_id ) {
global $wpdb;
- $field = esc_sql( $field );
- return $wpdb->get_var( $wpdb->prepare( "SELECT $field FROM {$this->get_table_name()} WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
+ $sanitized_field = sanitize_key( esc_sql( $field ) );
+ return $wpdb->get_var( $wpdb->prepare( "SELECT $sanitized_field FROM {$this->get_table_name()} WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
}
/**
@@ -250,9 +250,9 @@
*/
public function db_get_field_by( $field, $field_where, $field_value ) {
global $wpdb;
- $field_where = esc_sql( $field_where );
- $field = esc_sql( $field );
- return $wpdb->get_var( $wpdb->prepare( "SELECT $field FROM {$this->get_table_name()} WHERE $field_where = %s LIMIT 1;", $field_value ) );
+ $sanitized_field_where = sanitize_key( esc_sql( $field_where ) );
+ $sanitized_field = sanitize_key( esc_sql( $field ) );
+ return $wpdb->get_var( $wpdb->prepare( "SELECT $sanitized_field FROM {$this->get_table_name()} WHERE $sanitized_field_where = %s LIMIT 1;", $field_value ) );
}
public function get_meta_foreign_key(){
@@ -1015,7 +1015,8 @@
$where = '';
$schema = $this->get_schema();
- if ( ! empty( $args['append_where_sql'] ) ) {
+ // we allow append_where_sql to be set in the backend, but not in the request parameters
+ if ( ! empty( $args['append_where_sql'] ) && empty( $_REQUEST['append_where_sql']) ) {
if( ! is_array( $args['append_where_sql'] ) ) {
$args['append_where_sql'] = array( $args['append_where_sql'] );
}
@@ -1164,13 +1165,13 @@
// $rows = wp_cache_get( $cache_key, 'rows' );
- $args['orderby'] = esc_sql( $args['orderby'] );
- $args['order'] = esc_sql( $args['order'] );
+ $sanitized_orderby = sanitize_key(esc_sql( $args['orderby'] ));
+ $sanitized_order = 'ASC' === strtoupper( esc_sql( $args['order'] ) ) ? 'ASC' : 'DESC';
$table_name = $this->get_table_name();
$fields = empty( $args['fields'] ) ? '*' : '`' . implode( '`, `', $args['fields'] ) . '`';
// if( $rows === false ) {
- $sql = $wpdb->prepare( "SELECT $fields FROM $table_name $where ORDER BY {$args['orderby']} {$args['order']} LIMIT %d,%d;", absint( $args['offset'] ), absint( $args['number'] ) );
+ $sql = $wpdb->prepare( "SELECT $fields FROM $table_name $where ORDER BY $sanitized_orderby $sanitized_order LIMIT %d,%d;", absint( $args['offset'] ), absint( $args['number'] ) );
$rows = $wpdb->get_results( $sql );
$rows = array_map( function($row) { return (array)$row; }, $rows );
// }
--- a/simply-schedule-appointments/languages/admin-app-translations.php
+++ b/simply-schedule-appointments/languages/admin-app-translations.php
@@ -927,6 +927,7 @@
),
'messages' =>
array (
+ 'titleError' => __( 'Title is required', 'simply-schedule-appointments' ),
'sentToError' => __( 'Please enter a valid email address', 'simply-schedule-appointments' ),
'smsToError' => __( 'Please select at least one recipient', 'simply-schedule-appointments' ),
'triggerError' => __( 'You must select a trigger for a notification', 'simply-schedule-appointments' ),
--- a/simply-schedule-appointments/simply-schedule-appointments.php
+++ b/simply-schedule-appointments/simply-schedule-appointments.php
@@ -3,7 +3,7 @@
* Plugin Name: Simply Schedule Appointments
* Plugin URI: https://simplyscheduleappointments.com
* Description: Easy appointment scheduling
- * Version: 1.6.9.9
+ * Version: 1.6.9.13
* Requires PHP: 7.4
* Author: NSquared
* Author URI: https://nsquared.io/
@@ -15,7 +15,7 @@
* @link https://simplyscheduleappointments.com
*
* @package Simply_Schedule_Appointments
- * @version 1.6.9.9
+ * @version 1.6.9.13
*
* Built using generator-plugin-wp (https://github.com/WebDevStudios/generator-plugin-wp)
*/
@@ -206,7 +206,7 @@
* @var string
* @since 0.0.0
*/
- const VERSION = '1.6.9.9';
+ const VERSION = '1.6.9.13';
/**
* URL of plugin directory.
--- a/simply-schedule-appointments/vendor/composer/installed.php
+++ b/simply-schedule-appointments/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '1aef0ee58a3d3f1acd4f02f0244d319b85c8b2dc',
+ 'reference' => '4822c23d07d7a33852badccf9a4d06e8217fb260',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '1aef0ee58a3d3f1acd4f02f0244d319b85c8b2dc',
+ 'reference' => '4822c23d07d7a33852badccf9a4d06e8217fb260',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),