ChoiceDisplay.php
1.57 KB
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
<?php
namespace ACA\GravityForms\Settings;
use AC;
use ACA\GravityForms\Column;
/**
* @property Column\Entry $column
*/
class ChoiceDisplay extends AC\Settings\Column
implements AC\Settings\FormatValue {
/**
* @var string
*/
private $choice_display;
/**
* @var array
*/
private $choices;
public function __construct( Column\Entry $column, $choices ) {
parent::__construct( $column );
$this->choices = $choices;
}
/**
* @return string
*/
public function get_choice_display() {
return $this->choice_display;
}
/**
* @param string $choice_display
*/
public function set_choice_display( $choice_display ) {
$this->choice_display = (string) $choice_display;
}
protected function define_options() {
return [
'choice_display' => 'label',
];
}
public function create_view() {
$select = $this->create_element( 'select' )
->set_options( [ '' => 'Value', 'label' => 'Labels' ] );
return new AC\View( [
'label' => __( 'Display', 'codepress-admin-columns' ),
'setting' => $select,
] );
}
public function format( $value, $original_value ) {
$value = (array) $value;
if ( 'label' === $this->get_choice_display() ) {
$value = $this->format_labels( $value );
}
return implode( ', ', $value );
}
/**
* @param array $value
*
* @return array
*/
public function format_labels( $value ) {
$choices = $this->choices;
$labels = [];
foreach ( $value as $key ) {
$label = $key;
if ( isset( $choices[ $key ] ) ) {
$label = $choices[ $key ];
}
$labels[] = $label;
}
return $labels;
}
}