1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
<?php
class CMB2_Type_Text_Datetime_Timestamp_Timezone extends CMB2_Type_Base {
public function render( $args = array() ) {
$field = $this->field;
$value = $field->escaped_value();
if ( empty( $value ) ) {
$value = $field->get_default();
}
$args = wp_parse_args( $this->args, array(
'value' => $value,
'desc' => $this->_desc( true ),
'text_datetime_timestamp' => array(),
'select_timezone' => array(),
) );
$args['value'] = $value;
if ( is_array( $args['value'] ) ) {
$args['value'] = '';
}
$datetime = maybe_unserialize( $args['value'] );
$value = $tzstring = '';
if ( $datetime && $datetime instanceof DateTime ) {
$tz = $datetime->getTimezone();
$tzstring = $tz->getName();
$value = $datetime->getTimestamp();
}
$timestamp_args = wp_parse_args( $args['text_datetime_timestamp'], array(
'desc' => '',
'value' => $value,
'rendered' => true,
) );
$datetime_timestamp = $this->types->text_datetime_timestamp( $timestamp_args );
$timezone_select_args = wp_parse_args( $args['select_timezone'], array(
'class' => 'cmb2_select cmb2-select-timezone',
'name' => $this->_name( '[timezone]' ),
'id' => $this->_id( '_timezone' ),
'options' => wp_timezone_choice( $tzstring ),
'desc' => $args['desc'],
'rendered' => true,
) );
$select = $this->types->select( $timezone_select_args );
return $this->rendered(
$datetime_timestamp . "\n" . $select
);
}
}