ColumnInstantiator.php
1.97 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
<?php
namespace ACA\ACF;
final class ColumnInstantiator {
/**
* @var ConfigFactory
*/
private $config_factory;
/**
* @var Search\ComparisonFactory
*/
private $search_factory;
/**
* @var Sorting\ModelFactory
*/
private $sorting_factory;
/**
* @var Editing\EditingModelFactory
*/
private $editing_factory;
/**
* @var Filtering\ModelFactory
*/
private $filtering_factory;
/**
* @var ConditionalFormatting\FormattableFactory
*/
private $formattable_factory;
public function __construct(
ConfigFactory $config_factory,
Search\ComparisonFactory $search_factory,
Sorting\ModelFactory $sorting_factory,
Editing\EditingModelFactory $editing_factory,
Filtering\ModelFactory $filtering_factory,
ConditionalFormatting\FormattableFactory $formattable_factory
) {
$this->config_factory = $config_factory;
$this->search_factory = $search_factory;
$this->sorting_factory = $sorting_factory;
$this->editing_factory = $editing_factory;
$this->filtering_factory = $filtering_factory;
$this->formattable_factory = $formattable_factory;
}
public function initiate( Column $column ) {
$config = $this->config_factory->create( $column->get_type() );
if ( ! $config ) {
return;
}
$column->set_config( $config );
$column->set_label( $column->get_field()->get_settings()['label'] );
if ( $column instanceof Search\SearchFactoryAware ) {
$column->set_search_comparison_factory( $this->search_factory );
}
if ( $column instanceof Sorting\SortingFactoryAware ) {
$column->set_sorting_model_factory( $this->sorting_factory );
}
if ( $column instanceof Editing\EditingFactoryAware ) {
$column->set_editing_model_factory( $this->editing_factory );
}
if ( $column instanceof Filtering\FilteringFactoryAware ) {
$column->set_filtering_model_factory( $this->filtering_factory );
}
if( $column instanceof ConditionalFormatting\FormattableFactoryAware ){
$column->set_formattable_factory( $this->formattable_factory );
}
}
}