CustomField.php
3.02 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
92
93
94
95
96
97
98
99
100
101
<?php
namespace ACP\Column;
use AC;
use AC\MetaType;
use ACP\ApplyFilter;
use ACP\ApplyFilter\CustomField\StoredDateFormat;
use ACP\Column\CustomField\ConditionalFormatableFactory;
use ACP\Column\CustomField\EditingModelFactory;
use ACP\Column\CustomField\ExportModelFactory;
use ACP\Column\CustomField\FilteringModelFactory;
use ACP\Column\CustomField\SearchComparisonFactory;
use ACP\ConditionalFormat;
use ACP\ConditionalFormat\FormattableConfig;
use ACP\Editing;
use ACP\Editing\Settings\EditableType;
use ACP\Export;
use ACP\Filtering;
use ACP\Search;
use ACP\Settings;
use ACP\Sorting;
class CustomField extends AC\Column\CustomField
implements Sorting\Sortable, Editing\Editable, Filtering\Filterable, Export\Exportable, Search\Searchable,
ConditionalFormat\Formattable
{
public function sorting()
{
return Sorting\Model\CustomFieldFactory::create(
$this->get_field_type(),
$this->get_meta_type(),
$this->get_meta_key(),
$this
);
}
public function editing()
{
return EditingModelFactory::create(
$this->get_field_type(),
new Editing\Storage\Meta($this->get_meta_key(), new MetaType($this->get_meta_type())),
$this
);
}
public function filtering()
{
return FilteringModelFactory::create($this->get_field_type(), $this);
}
public function search()
{
return SearchComparisonFactory::create($this->get_field_type(), $this->get_meta_key(), $this->get_meta_type(), [
'date_format' => (new StoredDateFormat($this))->apply_filters(
Search\Comparison\Meta\DateFactory::FORMAT_DATETIME
),
]);
}
public function conditional_format(): ?FormattableConfig
{
return ConditionalFormatableFactory::create($this->get_field_type(), [
'date_format' => (new StoredDateFormat($this))->apply_filters(
Search\Comparison\Meta\DateFactory::FORMAT_DATE
),
]);
}
public function export()
{
return ExportModelFactory::create($this->get_field_type(), $this);
}
public function register_settings()
{
$this->add_setting(new Settings\Column\CustomField($this))
->add_setting(new AC\Settings\Column\BeforeAfter($this));
$unsupported_field_types = EditingModelFactory::unsupported_field_types();
if ( ! in_array($this->get_field_type(), $unsupported_field_types, true)) {
$setting = new Editing\Settings\CustomField($this);
if (in_array(
$this->get_field_type(),
[Settings\Column\CustomFieldType::TYPE_DEFAULT, Settings\Column\CustomFieldType::TYPE_TEXT],
true
)) {
$section = (new EditableType\Text($this, EditableType\Text::TYPE_TEXT));
$section->set_values($this->get_options());
$setting->add_section($section);
}
$this->add_setting($setting);
}
}
}