Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/wpforms-.../src/Forms/Fields/DateTime
File: Field.php
'tooltip' => esc_html__( 'Check this option to prevent today\'s date from being selected.', 'wpforms-lite' ),
[500] Fix | Delete
],
[501] Fix | Delete
false
[502] Fix | Delete
);
[503] Fix | Delete
[504] Fix | Delete
$this->field_element(
[505] Fix | Delete
'row',
[506] Fix | Delete
$field,
[507] Fix | Delete
[
[508] Fix | Delete
'slug' => 'date_disable_todays_date',
[509] Fix | Delete
'content' => $output,
[510] Fix | Delete
'class' => ! isset( $field['date_disable_past_dates'] ) ? 'wpforms-hide' : '',
[511] Fix | Delete
]
[512] Fix | Delete
);
[513] Fix | Delete
}
[514] Fix | Delete
[515] Fix | Delete
/**
[516] Fix | Delete
* Display limit hours options.
[517] Fix | Delete
*
[518] Fix | Delete
* @since 1.9.4
[519] Fix | Delete
*
[520] Fix | Delete
* @param array $field Field setting.
[521] Fix | Delete
*/
[522] Fix | Delete
private function field_options_limit_hours( array $field ): void {
[523] Fix | Delete
[524] Fix | Delete
echo '<div class="wpforms-clear"></div>';
[525] Fix | Delete
[526] Fix | Delete
$output = $this->field_element(
[527] Fix | Delete
'toggle',
[528] Fix | Delete
$field,
[529] Fix | Delete
[
[530] Fix | Delete
'slug' => 'time_limit_hours',
[531] Fix | Delete
'value' => ! empty( $field['time_limit_hours'] ) ? '1' : '0',
[532] Fix | Delete
'desc' => esc_html__( 'Limit Hours', 'wpforms-lite' ),
[533] Fix | Delete
'tooltip' => esc_html__( 'Check this option to adjust the range of times that can be selected.', 'wpforms-lite' ),
[534] Fix | Delete
'class' => 'wpforms-panel-field-toggle',
[535] Fix | Delete
],
[536] Fix | Delete
false
[537] Fix | Delete
);
[538] Fix | Delete
[539] Fix | Delete
$this->field_element(
[540] Fix | Delete
'row',
[541] Fix | Delete
$field,
[542] Fix | Delete
[
[543] Fix | Delete
'slug' => 'time_limit_hours',
[544] Fix | Delete
'content' => $output,
[545] Fix | Delete
]
[546] Fix | Delete
);
[547] Fix | Delete
[548] Fix | Delete
// Determine a time format type.
[549] Fix | Delete
// If the format contains `g` or `h`, then this is 12-hour format, otherwise 24 hours.
[550] Fix | Delete
$time_format = empty( $field['time_format'] ) || preg_match( '/[gh]/', $field['time_format'] ) ? 12 : 24;
[551] Fix | Delete
[552] Fix | Delete
// Limit Hours body.
[553] Fix | Delete
$output = $this->field_options_limit_hours_body( $field, $time_format );
[554] Fix | Delete
[555] Fix | Delete
printf(
[556] Fix | Delete
'<div
[557] Fix | Delete
class="wpforms-field-option-row wpforms-field-option-row-%1$s %2$s"
[558] Fix | Delete
id="wpforms-field-option-row-%3$d-%1$s"
[559] Fix | Delete
data-toggle="%4$s"
[560] Fix | Delete
data-toggle-value="1"
[561] Fix | Delete
data-field-id="%3$d">%5$s</div>',
[562] Fix | Delete
'time_limit_hours_options',
[563] Fix | Delete
'wpforms-panel-field-toggle-body',
[564] Fix | Delete
esc_attr( $field['id'] ),
[565] Fix | Delete
esc_attr( 'fields[' . (int) $field['id'] . '][time_limit_hours]' ),
[566] Fix | Delete
$output // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[567] Fix | Delete
);
[568] Fix | Delete
}
[569] Fix | Delete
[570] Fix | Delete
/**
[571] Fix | Delete
* Generate an array of numeric options for date/time selectors.
[572] Fix | Delete
*
[573] Fix | Delete
* @since 1.9.4
[574] Fix | Delete
*
[575] Fix | Delete
* @param integer $min Minimum value.
[576] Fix | Delete
* @param integer $max Maximum value.
[577] Fix | Delete
* @param integer $step Step.
[578] Fix | Delete
*
[579] Fix | Delete
* @return array
[580] Fix | Delete
*/
[581] Fix | Delete
private function get_selector_numeric_options( int $min, int $max, int $step = 1 ): array {
[582] Fix | Delete
[583] Fix | Delete
$range = range( $min, $max, $step );
[584] Fix | Delete
$options = [];
[585] Fix | Delete
[586] Fix | Delete
foreach ( $range as $i ) {
[587] Fix | Delete
$value = str_pad( $i, 2, '0', STR_PAD_LEFT );
[588] Fix | Delete
$options[ $value ] = $value;
[589] Fix | Delete
}
[590] Fix | Delete
[591] Fix | Delete
return $options;
[592] Fix | Delete
}
[593] Fix | Delete
[594] Fix | Delete
/**
[595] Fix | Delete
* Add class to field options wrapper to indicate if field confirmation is enabled.
[596] Fix | Delete
*
[597] Fix | Delete
* @since 1.9.4
[598] Fix | Delete
*
[599] Fix | Delete
* @param string|mixed $css_class CSS class.
[600] Fix | Delete
* @param array $field Field data.
[601] Fix | Delete
*
[602] Fix | Delete
* @return string
[603] Fix | Delete
*/
[604] Fix | Delete
public function field_option_class( $css_class, array $field ): string {
[605] Fix | Delete
[606] Fix | Delete
$css_class = (string) $css_class;
[607] Fix | Delete
[608] Fix | Delete
if ( $this->type === $field['type'] ) {
[609] Fix | Delete
$date_type = ! empty( $field['date_type'] ) ? sanitize_html_class( $field['date_type'] ) : 'datepicker';
[610] Fix | Delete
[611] Fix | Delete
$css_class .= " wpforms-date-type-$date_type";
[612] Fix | Delete
}
[613] Fix | Delete
[614] Fix | Delete
return $css_class;
[615] Fix | Delete
}
[616] Fix | Delete
[617] Fix | Delete
/**
[618] Fix | Delete
* Field preview inside the builder.
[619] Fix | Delete
*
[620] Fix | Delete
* @since 1.9.4
[621] Fix | Delete
*
[622] Fix | Delete
* @param array $field Field data and settings.
[623] Fix | Delete
*/
[624] Fix | Delete
public function field_preview( $field ) {
[625] Fix | Delete
[626] Fix | Delete
$date_placeholder = ! empty( $field['date_placeholder'] ) ? $field['date_placeholder'] : '';
[627] Fix | Delete
$time_placeholder = ! empty( $field['time_placeholder'] ) ? $field['time_placeholder'] : '';
[628] Fix | Delete
$format = ! empty( $field['format'] ) ? $field['format'] : self::DEFAULTS['format'];
[629] Fix | Delete
$date_type = ! empty( $field['date_type'] ) ? $field['date_type'] : 'datepicker';
[630] Fix | Delete
$date_format = ! empty( $field['date_format'] ) ? $field['date_format'] : self::DEFAULTS['date_format'];
[631] Fix | Delete
[632] Fix | Delete
if ( in_array( $date_format, $this->get_month_day_formats(), true ) ) {
[633] Fix | Delete
$date_first_select = 'MM';
[634] Fix | Delete
$date_second_select = 'DD';
[635] Fix | Delete
$date_third_select = 'YYYY';
[636] Fix | Delete
} elseif ( in_array( $date_format, $this->get_day_month_formats(), true ) ) {
[637] Fix | Delete
$date_first_select = 'DD';
[638] Fix | Delete
$date_second_select = 'MM';
[639] Fix | Delete
$date_third_select = 'YYYY';
[640] Fix | Delete
} else {
[641] Fix | Delete
$date_first_select = 'YYYY';
[642] Fix | Delete
$date_second_select = 'MM';
[643] Fix | Delete
$date_third_select = 'DD';
[644] Fix | Delete
}
[645] Fix | Delete
[646] Fix | Delete
// Label.
[647] Fix | Delete
$this->field_preview_option(
[648] Fix | Delete
'label',
[649] Fix | Delete
$field,
[650] Fix | Delete
[
[651] Fix | Delete
'label_badge' => $this->get_field_preview_badge(),
[652] Fix | Delete
]
[653] Fix | Delete
);
[654] Fix | Delete
[655] Fix | Delete
printf(
[656] Fix | Delete
'<div class="%s format-selected">',
[657] Fix | Delete
sanitize_html_class( 'format-selected-' . $format )
[658] Fix | Delete
);
[659] Fix | Delete
[660] Fix | Delete
// Date.
[661] Fix | Delete
printf(
[662] Fix | Delete
'<div class="wpforms-date %s">',
[663] Fix | Delete
sanitize_html_class( 'wpforms-date-type-' . $date_type )
[664] Fix | Delete
);
[665] Fix | Delete
echo '<div class="wpforms-date-datepicker">';
[666] Fix | Delete
printf( '<input type="text" placeholder="%s" class="primary-input" readonly>', esc_attr( $date_placeholder ) );
[667] Fix | Delete
printf( '<label class="wpforms-sub-label">%s</label>', esc_html__( 'Date', 'wpforms-lite' ) );
[668] Fix | Delete
echo '</div>';
[669] Fix | Delete
echo '<div class="wpforms-date-dropdown">';
[670] Fix | Delete
printf( '<select readonly class="first"><option>%s</option></select>', esc_html( $date_first_select ) );
[671] Fix | Delete
printf( '<select readonly class="second"><option>%s</option></select>', esc_html( $date_second_select ) );
[672] Fix | Delete
printf( '<select readonly class="third"><option>%s</option></select>', esc_html( $date_third_select ) );
[673] Fix | Delete
printf( '<label class="wpforms-sub-label">%s</label>', esc_html__( 'Date', 'wpforms-lite' ) );
[674] Fix | Delete
echo '</div>';
[675] Fix | Delete
echo '</div>';
[676] Fix | Delete
[677] Fix | Delete
// Time.
[678] Fix | Delete
echo '<div class="wpforms-time">';
[679] Fix | Delete
printf( '<input type="text" placeholder="%s" class="primary-input" readonly>', esc_attr( $time_placeholder ) );
[680] Fix | Delete
printf( '<label class="wpforms-sub-label">%s</label>', esc_html__( 'Time', 'wpforms-lite' ) );
[681] Fix | Delete
echo '</div>';
[682] Fix | Delete
echo '</div>';
[683] Fix | Delete
[684] Fix | Delete
// Description.
[685] Fix | Delete
$this->field_preview_option( 'description', $field );
[686] Fix | Delete
}
[687] Fix | Delete
[688] Fix | Delete
/**
[689] Fix | Delete
* Get month-day date formats.
[690] Fix | Delete
*
[691] Fix | Delete
* @since 1.9.8.3
[692] Fix | Delete
*
[693] Fix | Delete
* @return array
[694] Fix | Delete
*/
[695] Fix | Delete
private function get_month_day_formats(): array {
[696] Fix | Delete
[697] Fix | Delete
return [ 'mm/dd/yyyy', self::DEFAULTS['date_format'], 'm.d.Y' ];
[698] Fix | Delete
}
[699] Fix | Delete
[700] Fix | Delete
/**
[701] Fix | Delete
* Get day-month date formats.
[702] Fix | Delete
*
[703] Fix | Delete
* @since 1.9.8.3
[704] Fix | Delete
*
[705] Fix | Delete
* @return array
[706] Fix | Delete
*/
[707] Fix | Delete
private function get_day_month_formats(): array {
[708] Fix | Delete
[709] Fix | Delete
return [ 'dd/mm/yyyy', self::ALT_DATE_FORMAT, 'd.m.Y' ];
[710] Fix | Delete
}
[711] Fix | Delete
[712] Fix | Delete
/**
[713] Fix | Delete
* Field display on the form front-end.
[714] Fix | Delete
*
[715] Fix | Delete
* @since 1.9.4
[716] Fix | Delete
*
[717] Fix | Delete
* @param array $field Field data and settings.
[718] Fix | Delete
* @param array $deprecated Deprecated array of field attributes.
[719] Fix | Delete
* @param array $form_data Form data and settings.
[720] Fix | Delete
*/
[721] Fix | Delete
public function field_display( $field, $deprecated, $form_data ) {
[722] Fix | Delete
}
[723] Fix | Delete
[724] Fix | Delete
/**
[725] Fix | Delete
* Field options: Limit Days body section.
[726] Fix | Delete
*
[727] Fix | Delete
* @since 1.9.4
[728] Fix | Delete
*
[729] Fix | Delete
* @param array $days Array of days.
[730] Fix | Delete
* @param array $field Field data and settings.
[731] Fix | Delete
*
[732] Fix | Delete
* @return array Modified field data array.
[733] Fix | Delete
*/
[734] Fix | Delete
public function field_options_limit_days_body( array $days, array $field ): array {
[735] Fix | Delete
[736] Fix | Delete
// Limit Days body.
[737] Fix | Delete
$output = '';
[738] Fix | Delete
[739] Fix | Delete
foreach ( $days as $day => $day_translation ) {
[740] Fix | Delete
[741] Fix | Delete
$day_slug = 'date_limit_days_' . $day;
[742] Fix | Delete
[743] Fix | Delete
// Set defaults.
[744] Fix | Delete
if ( ! isset( $field['date_format'] ) ) {
[745] Fix | Delete
$field[ $day_slug ] = $this->default_settings[ $day_slug ];
[746] Fix | Delete
}
[747] Fix | Delete
[748] Fix | Delete
$output .= '<label class="sub-label">';
[749] Fix | Delete
$output .= $this->field_element(
[750] Fix | Delete
'checkbox',
[751] Fix | Delete
$field,
[752] Fix | Delete
[
[753] Fix | Delete
'slug' => $day_slug,
[754] Fix | Delete
'value' => ! empty( $field[ $day_slug ] ) ? '1' : '0',
[755] Fix | Delete
'nodesc' => '1',
[756] Fix | Delete
'class' => 'wpforms-field-options-column',
[757] Fix | Delete
],
[758] Fix | Delete
false
[759] Fix | Delete
);
[760] Fix | Delete
$output .= '<br>' . $day_translation . '</label>';
[761] Fix | Delete
}
[762] Fix | Delete
[763] Fix | Delete
printf(
[764] Fix | Delete
'<div
[765] Fix | Delete
class="wpforms-field-option-row wpforms-field-option-row-date_limit_days_options wpforms-panel-field-toggle-body wpforms-field-options-columns wpforms-field-options-columns-7 checkboxes-row"
[766] Fix | Delete
id="wpforms-field-option-row-%1$d-date_limit_days_options"
[767] Fix | Delete
data-toggle="%2$s"
[768] Fix | Delete
data-toggle-value="1"
[769] Fix | Delete
data-field-id="%1$d">%3$s</div>',
[770] Fix | Delete
esc_attr( $field['id'] ),
[771] Fix | Delete
esc_attr( 'fields[' . (int) $field['id'] . '][date_limit_days]' ),
[772] Fix | Delete
$output // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[773] Fix | Delete
);
[774] Fix | Delete
[775] Fix | Delete
return $field;
[776] Fix | Delete
}
[777] Fix | Delete
[778] Fix | Delete
/**
[779] Fix | Delete
* Field options: Limit Days - Disable Past Dates section.
[780] Fix | Delete
*
[781] Fix | Delete
* @since 1.9.4
[782] Fix | Delete
*
[783] Fix | Delete
* @param array $field Field data.
[784] Fix | Delete
*/
[785] Fix | Delete
public function field_options_limit_days_disable_past_dates( array $field ): void {
[786] Fix | Delete
[787] Fix | Delete
$output = $this->field_element(
[788] Fix | Delete
'toggle',
[789] Fix | Delete
$field,
[790] Fix | Delete
[
[791] Fix | Delete
'slug' => 'date_disable_past_dates',
[792] Fix | Delete
'value' => ! empty( $field['date_disable_past_dates'] ) ? '1' : '0',
[793] Fix | Delete
'desc' => esc_html__( 'Disable Past Dates', 'wpforms-lite' ),
[794] Fix | Delete
'tooltip' => esc_html__( 'Check this option to prevent any previous date from being selected.', 'wpforms-lite' ),
[795] Fix | Delete
],
[796] Fix | Delete
false
[797] Fix | Delete
);
[798] Fix | Delete
[799] Fix | Delete
$this->field_element(
[800] Fix | Delete
'row',
[801] Fix | Delete
$field,
[802] Fix | Delete
[
[803] Fix | Delete
'slug' => 'date_disable_past_dates',
[804] Fix | Delete
'content' => $output,
[805] Fix | Delete
]
[806] Fix | Delete
);
[807] Fix | Delete
}
[808] Fix | Delete
[809] Fix | Delete
/**
[810] Fix | Delete
* Field options: Limit Hours - body section.
[811] Fix | Delete
*
[812] Fix | Delete
* @since 1.9.4
[813] Fix | Delete
*
[814] Fix | Delete
* @param array $field Field data.
[815] Fix | Delete
* @param int $time_format Time format.
[816] Fix | Delete
*
[817] Fix | Delete
* @return string
[818] Fix | Delete
*/
[819] Fix | Delete
private function field_options_limit_hours_body( array $field, int $time_format ): string {
[820] Fix | Delete
[821] Fix | Delete
$output = '';
[822] Fix | Delete
[823] Fix | Delete
foreach ( [ 'start', 'end' ] as $option ) {
[824] Fix | Delete
[825] Fix | Delete
$output .= '<div class="wpforms-field-options-columns wpforms-field-options-columns-4">'; // Open columns container.
[826] Fix | Delete
[827] Fix | Delete
$slug = 'time_limit_hours_' . $option . '_hour';
[828] Fix | Delete
$output .= $this->field_element(
[829] Fix | Delete
'select',
[830] Fix | Delete
$field,
[831] Fix | Delete
[
[832] Fix | Delete
'slug' => $slug,
[833] Fix | Delete
'value' => ! empty( $field[ $slug ] ) ? $field[ $slug ] : $this->default_settings[ $slug ],
[834] Fix | Delete
'options' => $time_format === 12
[835] Fix | Delete
? $this->get_selector_numeric_options( 1, $time_format )
[836] Fix | Delete
: $this->get_selector_numeric_options( 0, $time_format - 1 ),
[837] Fix | Delete
'class' => 'wpforms-field-options-column',
[838] Fix | Delete
],
[839] Fix | Delete
false
[840] Fix | Delete
);
[841] Fix | Delete
[842] Fix | Delete
$slug = 'time_limit_hours_' . $option . '_min';
[843] Fix | Delete
$output .= $this->field_element(
[844] Fix | Delete
'select',
[845] Fix | Delete
$field,
[846] Fix | Delete
[
[847] Fix | Delete
'slug' => $slug,
[848] Fix | Delete
'value' => ! empty( $field[ $slug ] ) ? $field[ $slug ] : $this->default_settings[ $slug ],
[849] Fix | Delete
'options' => $this->get_selector_numeric_options( 0, 59, 5 ),
[850] Fix | Delete
'class' => 'wpforms-field-options-column',
[851] Fix | Delete
],
[852] Fix | Delete
false
[853] Fix | Delete
);
[854] Fix | Delete
[855] Fix | Delete
$slug = 'time_limit_hours_' . $option . '_ampm';
[856] Fix | Delete
$output .= $this->field_element(
[857] Fix | Delete
'select',
[858] Fix | Delete
$field,
[859] Fix | Delete
[
[860] Fix | Delete
'slug' => $slug,
[861] Fix | Delete
'value' => ! empty( $field[ $slug ] ) ? $field[ $slug ] : $this->default_settings[ $slug ],
[862] Fix | Delete
'options' => [
[863] Fix | Delete
'am' => 'AM',
[864] Fix | Delete
'pm' => 'PM',
[865] Fix | Delete
],
[866] Fix | Delete
'class' => [
[867] Fix | Delete
'wpforms-field-options-column',
[868] Fix | Delete
$time_format === 24 ? 'wpforms-hidden-strict' : '',
[869] Fix | Delete
],
[870] Fix | Delete
],
[871] Fix | Delete
false
[872] Fix | Delete
);
[873] Fix | Delete
[874] Fix | Delete
$slug = 'time_limit_hours_' . $option . '_hour';
[875] Fix | Delete
$output .= $this->field_element(
[876] Fix | Delete
'label',
[877] Fix | Delete
$field,
[878] Fix | Delete
[
[879] Fix | Delete
'slug' => $slug,
[880] Fix | Delete
'value' => $option === 'start' ? esc_html__( 'Start Time', 'wpforms-lite' ) : esc_html__( 'End Time', 'wpforms-lite' ),
[881] Fix | Delete
'class' => [
[882] Fix | Delete
'sub-label',
[883] Fix | Delete
'wpforms-field-options-column',
[884] Fix | Delete
],
[885] Fix | Delete
],
[886] Fix | Delete
false
[887] Fix | Delete
);
[888] Fix | Delete
[889] Fix | Delete
$output .= sprintf(
[890] Fix | Delete
'<div class="%s wpforms-field-options-column"></div>',
[891] Fix | Delete
$time_format === 12 ? 'wpforms-hidden-strict' : ''
[892] Fix | Delete
);
[893] Fix | Delete
[894] Fix | Delete
$output .= '</div>'; // Close columns container.
[895] Fix | Delete
}
[896] Fix | Delete
[897] Fix | Delete
return $output;
[898] Fix | Delete
}
[899] Fix | Delete
}
[900] Fix | Delete
[901] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function