Files
DESKTOP-GBA0BK8\Admin 7c8c8b1c76 first commit
2023-04-08 12:19:53 -04:00

141 lines
3.8 KiB
PHP

<?php
/**
* Datetime control class. This class is meant for storing a datetime in the format
* of `YYYY-MM-DD HH:MM:SS` or `0000-00-00 00:00:00`. You can set the `$show_time`
* property to `false`.
*
* Note that this control should be used in conjunction with the `datetime` setting
* type or another custom class that can handle the datetime.
*
* @package ButterBean
* @subpackage Admin
* @author Justin Tadlock <justin@justintadlock.com>
* @copyright Copyright (c) 2015-2016, Justin Tadlock
* @link https://github.com/justintadlock/butterbean
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*/
/**
* Datetime control class.
*
* @since 1.0.0
* @access public
*/
class ButterBean_Control_Datetime extends ButterBean_Control {
/**
* The type of control.
*
* @since 1.0.0
* @access public
* @var string
*/
public $type = 'datetime';
/**
* Whether to show the time. Note that settings, particularly the
* `ButterBean_Setting_Date` class will store the time as `00:00:00` if
* no time is provided.
*
* @since 1.0.0
* @access public
* @var bool
*/
public $show_time = true;
/**
* Adds custom data to the json array. This data is passed to the Underscore template.
*
* @since 1.0.0
* @access public
* @globl object $wp_locale
* @return void
*/
public function to_json() {
global $wp_locale;
parent::to_json();
$this->json['show_time'] = $this->show_time;
$field_name = $this->get_field_name();
// Get project start/end dates.
$date = $this->get_value();
// Get the year, month, and day.
$year = $date ? mysql2date( 'Y', $date, false ) : '';
$month = $date ? mysql2date( 'm', $date, false ) : '';
$day = $date ? mysql2date( 'd', $date, false ) : '';
// Get the hour, minute, and second.
$hour = $date ? mysql2date( 'H', $date, false ) : '';
$minute = $date ? mysql2date( 'i', $date, false ) : '';
$second = $date ? mysql2date( 's', $date, false ) : '';
// Year
$this->json['year'] = array(
'value' => esc_attr( $year ),
'label' => esc_html__( 'Year', 'butterbean' ),
'name' => esc_attr( "{$field_name}_year" ),
'attr' => sprintf( 'placeholder="%s" size="4" maxlength="4" autocomplete="off"', esc_attr( date_i18n( 'Y' ) ) )
);
// Month
$this->json['month'] = array(
'value' => esc_attr( $month ),
'name' => esc_attr( "{$field_name}_month" ),
'label' => esc_html__( 'Month', 'butterbean' ),
'choices' => array(
array(
'num' => '',
'label' => ''
)
)
);
for ( $i = 1; $i < 13; $i = $i +1 ) {
$monthnum = zeroise( $i, 2 );
$monthtext = $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) );
$this->json['month']['choices'][] = array(
'num' => $monthnum,
'label' => $monthtext
);
}
// Day
$this->json['day'] = array(
'value' => esc_attr( $day ),
'name' => esc_attr( "{$field_name}_day" ),
'label' => esc_html__( 'Day', 'butterbean' ),
'attr' => sprintf( 'placeholder="%s" size="2" maxlength="2" autocomplete="off"', esc_attr( date_i18n( 'd' ) ) )
);
// Hour
$this->json['hour'] = array(
'value' => esc_attr( $hour ),
'name' => esc_attr( "{$field_name}_hour" ),
'label' => esc_html__( 'Hour', 'butterbean' ),
'attr' => 'placeholder="00" size="2" maxlength="2" autocomplete="off"'
);
// Minute
$this->json['minute'] = array(
'value' => esc_attr( $minute ),
'name' => esc_attr( "{$field_name}_minute" ),
'label' => esc_html__( 'Minute', 'butterbean' ),
'attr' => 'placeholder="00" size="2" maxlength="2" autocomplete="off"'
);
// Second
$this->json['second'] = array(
'value' => esc_attr( $second ),
'name' => esc_attr( "{$field_name}_second" ),
'label' => esc_html__( 'Second', 'butterbean' ),
'attr' => 'placeholder="00" size="2" maxlength="2" autocomplete="off"'
);
}
}