AddColumns.php
1.31 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
<?php
namespace ACA\ACF\Service;
use AC\ListScreen;
use AC\Registerable;
use ACA\ACF\Column\Deprecated;
use ACA\ACF\ColumnFactory;
use ACA\ACF\FieldRepository;
use ACA\ACF\FieldsFactory;
class AddColumns implements Registerable {
/**
* @var FieldRepository
*/
private $field_repository;
/**
* @var FieldsFactory
*/
private $fields_factory;
/**
* @var ColumnFactory
*/
private $column_factory;
public function __construct( FieldRepository $field_repository, FieldsFactory $fields_factory, ColumnFactory $column_factory ) {
$this->field_repository = $field_repository;
$this->fields_factory = $fields_factory;
$this->column_factory = $column_factory;
}
public function register() {
add_action( 'ac/column_types', [ $this, 'add_columns' ] );
}
public function add_columns( ListScreen $list_screen ) {
$fields = $this->field_repository->find_by_list_screen( $list_screen );
// Fields including subfields
$all_fields = array_map( [ $this->fields_factory, 'create' ], $fields );
if ( ! empty( $all_fields ) ) {
$all_fields = array_merge( ...$all_fields );
}
$columns = array_filter( array_map( [ $this->column_factory, 'create' ], $all_fields ) );
// Register deprecated column
$columns[] = new Deprecated();
array_map( [ $list_screen, 'register_column_type' ], $columns );
}
}