Current Path : /storage/v11800/testsharplanding/public_html/wp-content/plugins/ninja-forms/includes/Fields/ |
Linux v11800 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:19:18 UTC 2020 aarch64
|
Current File : /storage/v11800/testsharplanding/public_html/wp-content/plugins/ninja-forms/includes/Fields/Date.php |
<?php if ( ! defined( 'ABSPATH' ) ) exit;
/**
* Class NF_Fields_Date
*/
class NF_Fields_Date extends NF_Fields_Textbox
{
protected $_name = 'date';
protected $_nicename = 'Date';
protected $_section = 'common';
protected $_icon = 'calendar';
protected $_type = 'date';
protected $_templates = 'date';
protected $_test_value = '12/12/2022';
protected $_settings = array( 'date_mode', 'date_default', 'date_format', 'year_range', 'time_settings' );
protected $_settings_exclude = array( 'default', 'input_limit_set', 'disable_input' );
public function __construct()
{
parent::__construct();
$this->_nicename = esc_html__( 'Date/Time', 'ninja-forms' );
add_filter( 'ninja_forms_localize_field_date', [ $this,'localizeField'], 10, 2);
add_filter( 'ninja_forms_localize_field_date_preview', [ $this,'localizeField'], 10, 2);
add_filter( 'ninja_forms_custom_columns', [ $this, 'custom_columns' ], 10, 2 );
add_filter( 'ninja_forms_subs_export_field_value_' . $this->_name, array( $this, 'filter_csv_value' ), 10, 2 );
add_filter( 'ninja_forms_merge_tag_value_' . $this->_name, array( $this, 'filter_merge_tag_value' ), 10, 2 );
}
public function process( $field, $data )
{
return $data;
}
private function get_format( $format )
{
$lookup = array(
'MM/DD/YYYY' => esc_html__( 'm/d/Y', 'ninja-forms' ),
'MM-DD-YYYY' => esc_html__( 'm-d-Y', 'ninja-forms' ),
'MM.DD.YYYY' => esc_html__( 'm.d.Y', 'ninja-forms' ),
'DD/MM/YYYY' => esc_html__( 'd/m/Y', 'ninja-forms' ),
'DD-MM-YYYY' => esc_html__( 'd-m-Y', 'ninja-forms' ),
'DD.MM.YYYY' => esc_html__( 'd.m.Y', 'ninja-forms' ),
'YYYY-MM-DD' => esc_html__( 'Y-m-d', 'ninja-forms' ),
'YYYY/MM/DD' => esc_html__( 'Y/m/d', 'ninja-forms' ),
'YYYY.MM.DD' => esc_html__( 'Y.m.d', 'ninja-forms' ),
'dddd, MMMM D YYYY' => esc_html__( 'l, F d Y', 'ninja-forms' ),
);
return ( isset( $lookup[ $format ] ) ) ? $lookup[ $format ] : $format;
}
/**
*
*
* @since 3.0
* @param array $field Array of field settings
* @return void
*/
public function localizeField( $field )
{
/**
* Time-specific settings below.
* If this is a "date_only" field, we can bail early.
*/
if ( isset ( $field[ 'settings' ][ 'date_mode' ] ) && 'date_only' == $field[ 'settings' ][ 'date_mode' ] ) {
return $field;
}
/**
* Hours Select Options
*/
$hours_options = $this->get_hours_options( false, $field );
$field[ 'settings' ][ 'hours_options' ] = $hours_options;
/**
* Minutes Select Options
*/
$minutes_options = $this->get_minutes_options( false, $field );
$field[ 'settings' ][ 'minutes_options' ] = $minutes_options;
return $field;
}
public function custom_columns( $field_value, $field )
{
if( $this->_name != $field->get_setting( 'type' ) ) return $field_value;
return $this->stringify_value( $field_value, $field );
}
public function filter_csv_value( $field_value, $field ) {
$field_value = $this->stringify_value( $field_value, $field );
return parent::filter_csv_value( $field_value, $field );
}
public function admin_form_element( $id, $value )
{
$form_id = get_post_meta( absint( $_GET[ 'post' ] ), '_form_id', true );
$field = Ninja_Forms()->form( $form_id )->get_field( $id );
// If the value is an array, output an appropriate edit element.
if ( ! is_array( $value ) ) return '<input class="widefat" name="fields[' . $id . '][date]" value="' . $value . '" type="text">';
$edit_values = '';
// Get our date and time, the combine them into a string.
$date = isset ( $value[ 'date' ] ) ? $value[ 'date' ] : '';
$hour = isset ( $value[ 'hour' ] ) ? $value[ 'hour' ] : '';
$minute = isset ( $value[ 'minute' ] ) ? $value[ 'minute' ] : '';
$ampm = isset ( $value[ 'ampm' ] ) ? $value[ 'ampm' ] : '';
$time = '';
$hours_options = $this->get_hours_options( $hour, $field );
$minutes_options = $this->get_minutes_options( $minute, $field );
if ( ! empty ( $date ) ) {
$edit_values = '<input class="" name="fields[' . $id . '][date]" value="' . $date . '" type="text">';
}
if ( ! empty ( $hour ) && ! empty ( $minute ) ) {
$edit_values .= '<select class="" name="fields[' . $id . '][hour]" id="">' . $hours_options . '</select>';
$edit_values .= ':<select class="" name="fields[' . $id . '][minute]" id="">' . $minutes_options . '</select>';
// Display an edit for am/pm if necessary
if ( 1 != $field->get_setting( 'hours_24' ) ) {
$selected_am = ( 'am' == $ampm ) ? 'selected="selected"' : '';
$selected_pm = ( 'pm' == $ampm ) ? 'selected="selected"' : '';
$edit_values .= ' <select class="" name="fields[' . $id . '][ampm]" id="">
<option value="am" ' . $selected_am . '>AM</option>
<option value="pm" ' . $selected_pm . '>PM</option>
</select>';
}
}
return $edit_values;
}
private function stringify_value( $field_value, $field )
{
if ( ! is_array( $field_value ) ) {
return $field_value;
}
// Get our date and time, the combine them into a string.
$date = isset ( $field_value[ 'date' ] ) ? $field_value[ 'date' ] : '';
$hour = isset ( $field_value[ 'hour' ] ) ? $field_value[ 'hour' ] : '';
$minute = isset ( $field_value[ 'minute' ] ) ? $field_value[ 'minute' ] : '';
$ampm = isset ( $field_value[ 'ampm' ] ) ? $field_value[ 'ampm' ] : '';
$time = '';
if ( ! empty ( $hour ) && ! empty ( $minute ) ) {
$time = ' ' . $hour . ':' . $minute;
// Display an edit for am/pm if necessary
if ( 1 != $field->get_setting( 'hours_24' ) ) {
$time .= ' ' . $ampm;
}
}
return $date . $time;
}
private function get_hours_options( $hour, $field )
{
$hours_24 = 1;
if ( is_object( $field ) ) {
$hours_24 = $field->get_setting( 'hours_24' );
} elseif ( is_array( $field ) && isset ( $field[ 'settings' ][ 'hours_24' ] ) ) {
$hours_24 = $field[ 'settings' ][ 'hours_24' ];
}
// Defaults
$hours = 12;
$first_hour = 1;
$hours_options = '<option value="12">12</option>';
if ( 1 == $hours_24 ) {
$hours = 24;
$first_hour = 0;
$hours_options = '';
}
for ( $i = $first_hour; $i < $hours; $i++ ) {
$output = $i;
if ( $i < 10 ) {
$output = '0' . $i;
}
$selected = '';
if ( $hour == $output ) {
$selected = 'selected="selected"';
}
$hours_options .= '<option value="' . $output . '" ' . $selected . '>' . $output . '</option>';
}
return $hours_options;
}
private function get_minutes_options( $minute, $field )
{
if ( is_object( $field ) ) {
$minute_increment = $field->get_setting( 'minute_increment' );
} elseif ( is_array( $field ) && isset ( $field[ 'settings' ][ 'minute_increment' ] ) ) {
$minute_increment = $field[ 'settings' ][ 'minute_increment' ];
}
if ( empty( $minute_increment ) ) {
$minute_increment = 1;
}
/**
* Minutes Select Options
*/
$minutes_options = '';
$i = 0;
while ( $i < 60 ) {
$output = $i;
if ( $i < 10 ) {
$output = '0' . $i;
}
$selected = '';
if ( $minute == $output ) {
$selected = 'selected="selected"';
}
$minutes_options .= '<option value="' . $output . '" ' . $selected . '>' . $output . '</option>';
$i += $minute_increment;
}
return $minutes_options;
}
/**
* Filter Merge Tag Value
* This is what provides the merge tag with the fields value.
* @since 3.0
*
* @param $value Field value
* @param $field field model
* @return string|void
*/
public function filter_merge_tag_value( $value, $field )
{
if ( ! isset( $field[ 'settings' ][ 'date_mode' ] ) ||
'date_only' == $field[ 'settings' ][ 'date_mode' ] ) {
return $value;
}
/**
* Explode our value at each ','.
* It'll be in a format like 01/05/2021,hour,minute,ampm.
*/
$exploded_value = explode( ',', $value );
$date = $exploded_value[0];
$hour = $exploded_value[1];
$minute = $exploded_value[2];
$time = $hour . ':' . $minute;
if ( isset ( $exploded_value[3] ) ) {
$time .= ' ' . $exploded_value[3];
}
if ( 'time_only' == $field[ 'settings' ][ 'date_mode' ] ) {
return $time;
}
return $date . ' ' . $time;
}
}