Repeater.php
2.25 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
<?php
namespace ACA\ACF\Search\ComparisonFactory;
use ACA\ACF\Field;
use ACA\ACF\FieldType;
use ACA\ACF\Search\Comparison;
use ACP;
class Repeater {
/**
* @param Field $field
* @param string $parent_meta_key
* @param string $meta_type
*
* @return ACP\Search\Comparison|null
*/
public function create( Field $field, $parent_meta_key, $meta_type ) {
$meta_key = $field->get_meta_key();
$base_arguments = [
$meta_type,
$parent_meta_key,
$meta_key,
];
switch ( $field->get_type() ) {
case FieldType::TYPE_BOOLEAN:
return new Comparison\Repeater\Toggle( ...$base_arguments );
case FieldType::TYPE_DATE_TIME_PICKER:
return new Comparison\Repeater\DateTime( ...$base_arguments );
case FieldType::TYPE_DATE_PICKER:
return new Comparison\Repeater\Date( ...$base_arguments );
case FieldType::TYPE_USER:
return new Comparison\Repeater\User(
$meta_type,
$parent_meta_key,
$meta_key,
$field instanceof Field\Multiple ? $field->is_multiple() : null
);
case FieldType::TYPE_POST:
case FieldType::TYPE_RELATIONSHIP:
return new Comparison\Repeater\Posts(
$meta_type,
$parent_meta_key,
$meta_key,
$field instanceof Field\PostTypeFilterable ? $field->get_post_type() : null
);
case FieldType::TYPE_SELECT:
case FieldType::TYPE_RADIO:
return new Comparison\Repeater\Select(
$meta_type,
$parent_meta_key,
$meta_key,
$field instanceof Field\Choices ? $field->get_choices() : [],
$field instanceof Field\Multiple ? $field->is_multiple() : null );
case FieldType::TYPE_NUMBER:
case FieldType::TYPE_RANGE:
return new Comparison\Repeater\Number( ...$base_arguments );
case FieldType::TYPE_FILE:
return new Comparison\Repeater\Media( ...$base_arguments );
case FieldType::TYPE_IMAGE:
return new Comparison\Repeater\Image( ...$base_arguments );
case FieldType::TYPE_COLOR_PICKER:
case FieldType::TYPE_EMAIL:
case FieldType::TYPE_OEMBED:
case FieldType::TYPE_PASSWORD:
case FieldType::TYPE_TEXT:
case FieldType::TYPE_TEXTAREA:
case FieldType::TYPE_TIME_PICKER:
case FieldType::TYPE_URL:
case FieldType::TYPE_WYSIWYG:
return new Comparison\Repeater\Text( ...$base_arguments );
default:
return null;
}
}
}