PluginProbe
Booktics – Appointment Booking Calendar for Service Businesses / 1.0.29
Booktics – Appointment Booking Calendar for Service Businesses v1.0.29
1.0.29 1.0.28 1.0.27 1.0.26 1.0.25 1.0.24 1.0.23 1.0.22 1.0.21 1.0.20 1.0.19 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.2 1.0.3 All 31 releases
← All changes | core/order/order-validator.php +12 -5 1.0.3 → 1.0.29 View file →
@@ -28,9 +28,9 @@
28 28 $error->add( 'missing_field', sprintf( __( '%s is required', 'booktics' ), $field ) );
29 29 }
30 30 }
31 31
32 - if ( empty( $data['customer_id'] ) && empty( $data['customer_email'] ) ) {
32 + if ( empty( $data['customer_id'] ) && empty( $data['customer']['email'] ) ) {
33 33 $error->add( 'missing_field', __( 'Customer email is required', 'booktics' ) );
34 34 }
35 35
36 36 if ( empty( $data['items'] ) || ! is_array( $data['items'] ) ) {
@@ -63,11 +63,17 @@
63 63 if ( ! $service ) {
64 64 $error->add( 'invalid_service', __( 'Invalid service selected', 'booktics' ) );
65 65 }
66 66
67 - $team_member = ( new Team_Member_Model() )->find( $item['team_member_id'] );
68 - if ( ! $team_member ) {
69 - $error->add( 'invalid_team_member', __( 'Invalid team member selected', 'booktics' ) );
67 + // An item may legitimately arrive without a team member when the
68 + // service assigns one server-side. The item validation rules decide
69 + // whether that is allowed; this check only verifies a member that was
70 + // actually supplied.
71 + if ( ! empty( $item['team_member_id'] ) ) {
72 + $team_member = ( new Team_Member_Model() )->find( $item['team_member_id'] );
73 + if ( ! $team_member ) {
74 + $error->add( 'invalid_team_member', __( 'Invalid team member selected', 'booktics' ) );
75 + }
70 76 }
71 77 $error = apply_filters( 'booktics_extra_service_validate', $error, $item );
72 78
73 79 return $error->has_errors() ? $error : true;
@@ -86,8 +92,9 @@
86 92 $args = array(
87 93 'post_type' => 'booktics-appointment',
88 94 'post_status' => 'any',
89 95 'posts_per_page' => 1,
96 + // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query -- Meta query is necessary for filtering appointments by meta fields
90 97 'meta_query' => array(
91 98 'relation' => 'AND',
92 99 array(
93 100 'key' => 'date',
@@ -138,9 +145,9 @@
138 145 if ( $query->have_posts() ) {
139 146 $error->add(
140 147 'time_slot_unavailable',
141 148 sprintf(
142 - /* translators: 1: Start time, 2: End time, 3: Date */
149 + /* translators: 1: Start time, 2: End time, 3: Date */
143 150 __( 'Time slot %1$s - %2$s on %3$s is not available', 'booktics' ),
144 151 $item['start_time'],
145 152 $item['end_time'],
146 153 $item['date']