1: <?php
2:
3: 4: 5:
6: class Papi_Property_Number extends Papi_Property {
7:
8: 9: 10: 11: 12:
13: public $convert_type = 'int';
14:
15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
25: public function format_value( $value, $slug, $post_id ) {
26: $value = is_string( $value ) && is_numeric( $value ) ? $value + 0 : $value;
27:
28: if ( is_float( $value ) ) {
29: return floatval( $value );
30: } else {
31: return intval( $value );
32: }
33: }
34:
35: 36: 37: 38: 39:
40: public function get_default_settings() {
41: return [
42: 'max' => '',
43: 'min' => '',
44: 'step' => '',
45: 'type' => 'number'
46: ];
47: }
48:
49: 50: 51: 52: 53:
54: public function get_value() {
55: return $this->format_value(
56: parent::get_value(),
57: $this->get_slug(),
58: papi_get_post_id()
59: );
60: }
61:
62: 63: 64:
65: public function html() {
66: $settings = $this->get_settings();
67: $value = $this->get_value();
68:
69:
70: if ( $settings->type === 'range' ) {
71: $settings->max = papi_is_empty( $settings->max )
72: ? 100 : $settings->max;
73: $settings->min = papi_is_empty( $settings->min )
74: ? 0 : $settings->min;
75: $settings->step = papi_is_empty( $settings->step )
76: ? 1 : $settings->step;
77: }
78:
79: if ( $settings->min !== 0 && $value < $settings->min ) {
80: $value = $settings->min;
81: }
82:
83: papi_render_html_tag( 'input', [
84: 'id' => $this->html_id(),
85: 'max' => $settings->max,
86: 'min' => $settings->min,
87: 'name' => $this->html_name(),
88: 'step' => $settings->step,
89: 'type' => $settings->type,
90: 'value' => $value
91: ] );
92: }
93:
94: 95: 96: 97: 98: 99: 100: 101: 102:
103: public function import_value( $value, $slug, $post_id ) {
104: return $this->format_value( $value, $slug, $post_id );
105: }
106: }
107: