SettingFactory.php
2.92 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
<?php
namespace ACA\ACF\Settings;
use AC;
use ACA\ACF;
use ACA\ACF\Column;
use ACA\ACF\Field;
use ACA\ACF\Field\Type;
class SettingFactory {
/**
* @param Field $field
* @param Column $column
*
* @return array
*/
public function create( Field $field, Column $column ) {
switch ( true ) {
case $field instanceof Type\Number:
return [ new AC\Settings\Column\NumberFormat( $column ) ];
case $field instanceof Type\FlexibleContent:
return [ new ACF\Settings\Column\FlexibleContent( $column ) ];
case $field instanceof Type\Gallery:
return [ new AC\Settings\Column\Images( $column ) ];
case $field instanceof Type\Image:
return [ new AC\Settings\Column\Image( $column ) ];
case $field instanceof Type\Oembed:
return [ new ACF\Settings\Column\Oembed( $column ) ];
case $field instanceof Type\Password:
return [ new AC\Settings\Column\Password( $column ) ];
case $field instanceof Type\PageLinks:
return [ new ACF\Settings\Column\PageLink( $column ) ];
case $field instanceof Type\PostObject:
case $field instanceof Type\Relationship:
$settings = [ new AC\Settings\Column\Post( $column ) ];
if ( $field instanceof ACF\Field\Multiple && $field->is_multiple() ) {
$settings[] = new AC\Settings\Column\NumberOfItems( $column );
$settings[] = new AC\Settings\Column\Separator( $column );
}
return $settings;
case $field instanceof Type\Date:
case $field instanceof Type\DateTime:
return [ new ACF\Settings\Column\Date( $column ) ];
case $field instanceof Type\Text:
return [ new AC\Settings\Column\CharacterLimit( $column ) ];
case $field instanceof Type\Textarea:
case $field instanceof Type\Wysiwyg:
return [ new AC\Settings\Column\WordLimit( $column ) ];
case $field instanceof Type\Time:
return [ new ACF\Settings\Column\Time( $column ) ];
case $field instanceof Type\User:
$settings = [ new AC\Settings\Column\User( $column ) ];
if ( $field instanceof ACF\Field\Multiple && $field->is_multiple() ) {
$settings[] = new AC\Settings\Column\NumberOfItems( $column );
$settings[] = new AC\Settings\Column\Separator( $column );
}
return $settings;
case $field instanceof Type\Url:
return [ new AC\Settings\Column\LinkLabel( $column ) ];
case $field instanceof Type\Select:
$settings = [];
if ( $field->is_multiple() ) {
$settings[] = new AC\Settings\Column\NumberOfItems( $column );
$settings[] = new AC\Settings\Column\Separator( $column );
}
return $settings;
case $field instanceof Type\Taxonomy:
$settings = [
new AC\Settings\Column\Term( $column ),
new AC\Settings\Column\TermLink( $column ),
];
if ( $field instanceof ACF\Field\Multiple && $field->is_multiple() ) {
$settings[] = new AC\Settings\Column\NumberOfItems( $column );
$settings[] = new AC\Settings\Column\Separator( $column );
}
return $settings;
default:
return [];
}
}
}