<?php /** * Suppress "error - 0 - No summary was found for this file" on phpdoc generation * * @package WPDataAccess\Simple_Form */ namespace WPDataAccess\Simple_Form { use WPDataAccess\WPDA; /** * Class WPDA_Simple_Form_Item_DateTime * * Adds a date/time picker to fields of type: date, datetime, timestamp and time * * @author Peter Schulz * @since 2.5.1 */ class WPDA_Simple_Form_Item_DateTime extends WPDA_Simple_Form_Item { protected $date_format = 'Y-m-d'; protected $time_format = 'H:i'; protected $date_placeholder = 'yyyy-mm-dd'; protected $time_placeholder = 'hh:mi'; protected $date_picker = 'true'; protected $time_picker = 'false'; /** * WPDA_Simple_Form_Item_DateTime constructor. * * @param array $args */ public function __construct( $args = array() ) { parent::__construct( $args ); // Get date and time formats $this->date_format = WPDA::get_option( WPDA::OPTION_PLUGIN_DATE_FORMAT ); $this->time_format = WPDA::get_option( WPDA::OPTION_PLUGIN_TIME_FORMAT ); // Get date and time placeholders $this->date_placeholder = WPDA::get_option( WPDA::OPTION_PLUGIN_DATE_PLACEHOLDER ); $this->time_placeholder = WPDA::get_option( WPDA::OPTION_PLUGIN_TIME_PLACEHOLDER ); switch ( $this->column_type ) { case 'time': $this->date_format = $this->time_format; $this->date_picker = 'false'; $this->time_picker = 'true'; $this->item_placeholder = $this->time_placeholder; $db_format = WPDA::DB_TIME_FORMAT; break; case 'date': $this->item_placeholder = $this->date_placeholder; $db_format = WPDA::DB_DATE_FORMAT; break; default: $this->date_format = $this->date_format . ' ' . $this->time_format; $this->time_picker = 'true'; $this->item_placeholder = $this->date_placeholder . ' ' . $this->time_placeholder; $db_format = WPDA::DB_DATETIME_FORMAT; } if ( null !== $this->item_value && '' !== $this->item_value ) { $convert_date = \DateTime::createFromFormat( $db_format, $this->item_value ); $this->item_value = $convert_date->format( $this->date_format ); } } /** * Overwrite method show_item: add date/time picker */ public function show_item() { parent::show_item(); ?> <script type='text/javascript'> jQuery(function () { jQuery.datetimepicker.setLocale('<?php echo esc_attr( substr( get_locale(), 0, 2 ) ); ?>'); jQuery('#<?php echo esc_attr( $this->item_name ); ?>').datetimepicker({ format: '<?php echo $this->date_format; // phpcs:ignore WordPress.Security.EscapeOutput ?>', datepicker: <?php echo $this->date_picker; // phpcs:ignore WordPress.Security.EscapeOutput ?>, timepicker: <?php echo $this->time_picker; // phpcs:ignore WordPress.Security.EscapeOutput ?>, scrollMonth: false, scrollInput: false }); jQuery('#<?php echo esc_attr( $this->item_name ); ?>').attr('autocomplete', 'off'); }); </script> <?php } } }