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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
<?php
class Papi_Property_Checkbox extends Papi_Property {
public $convert_type = 'array';
public $default_value = [];
public function format_value( $value, $slug, $post_id ) {
if ( is_string( $value ) && ! papi_is_empty( $value ) ) {
return [papi_cast_string_value( $value )];
}
if ( ! is_array( $value ) ) {
return $this->default_value;
}
return array_map( 'papi_cast_string_value', $value );
}
public function get_default_settings() {
return [
'items' => [],
'selected' => []
];
}
public function html() {
$settings = $this->get_settings();
$value = papi_cast_string_value( $this->get_value() );
if ( ! papi_is_empty( $value ) ) {
$settings->selected = $value;
}
$settings->selected = papi_to_array( $settings->selected );
echo '<div class="papi-property-checkbox">';
foreach ( $settings->items as $key => $value ) {
$key = is_numeric( $key ) ? $value : $key;
papi_render_html_tag( 'p', [
papi_html_tag( 'label', [
'class' => 'light',
'for' => $this->html_id( $key ),
papi_html_tag( 'input', [
'id' => $this->html_id( $key ),
'name' => $this->html_name() . '[]',
'type' => 'hidden'
] ),
papi_html_tag( 'input', [
'checked' => in_array( $value, $settings->selected ) ? 'checked' : null,
'id' => $this->html_id( $key ),
'name' => $this->html_name() . '[]',
'type' => 'checkbox',
'value' => $value
] ),
papi_convert_to_string( $key )
] )
] );
}
echo '</div>';
}
public function import_value( $value, $slug, $post_id ) {
if ( is_string( $value ) && ! papi_is_empty( $value ) ) {
return [$value];
}
if ( ! is_array( $value ) ) {
return;
}
return $value;
}
}