PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.13
Admin Columns v7.0.13
7.1.4 7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / TableScreen / SaveHeading / ScreenColumns.php
codepress-admin-columns / classes / TableScreen / SaveHeading Last commit date
ScreenColumns.php 5 months ago
ScreenColumns.php
110 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\TableScreen\SaveHeading;
6
7 use AC\Registerable;
8 use AC\Storage\Repository\OriginalColumnsRepository;
9 use AC\Type\OriginalColumns;
10 use AC\Type\TableId;
11
12 class ScreenColumns implements Registerable
13 {
14
15 private string $screen_id;
16
17 private OriginalColumnsRepository $repository;
18
19 private TableId $table_id;
20
21 private int $priority;
22
23 private bool $do_exit;
24
25 public function __construct(
26 string $screen_id,
27 TableId $table_id,
28 OriginalColumnsRepository $repository,
29 int $priority = 199,
30 bool $do_exit = true
31 ) {
32 $this->screen_id = $screen_id;
33 $this->table_id = $table_id;
34 $this->repository = $repository;
35 $this->priority = $priority;
36 $this->do_exit = $do_exit;
37 }
38
39 /**
40 * @see get_column_headers()
41 * @see WP_List_Table::get_column_info()
42 */
43 public function register(): void
44 {
45 add_filter(
46 sprintf('manage_%s_columns', $this->screen_id),
47 [$this, 'save_columns'],
48 $this->priority
49 );
50 add_filter(
51 sprintf('manage_%s_sortable_columns', $this->screen_id),
52 [$this, 'save_sortable_columns'],
53 $this->priority
54 );
55 }
56
57 public function save_columns($headings)
58 {
59 if ($headings && is_array($headings)) {
60 remove_filter(
61 sprintf('manage_%s_columns', $this->screen_id),
62 [$this, 'save_columns'],
63 $this->priority
64 );
65
66 $this->repository->update(
67 $this->table_id,
68 OriginalColumns::create_from_headings($headings)
69 );
70 }
71
72 return $headings;
73 }
74
75 public function save_sortable_columns($sortable_columns)
76 {
77 if ( ! is_array($sortable_columns)) {
78 return $sortable_columns;
79 }
80
81 remove_filter(
82 sprintf('manage_%s_sortable_columns', $this->screen_id),
83 [$this, 'save_sortable_columns'],
84 $this->priority
85 );
86
87 $columns = $this->repository->find_all($this->table_id);
88
89 $sortables = array_keys($sortable_columns);
90
91 foreach ($columns as $column) {
92 $column->set_sortable(
93 in_array($column->get_name(), $sortables, true)
94 );
95 }
96
97 $this->repository->update(
98 $this->table_id,
99 $columns
100 );
101
102 if ($this->do_exit) {
103 ob_clean();
104 exit('ac_success');
105 }
106
107 return $sortable_columns;
108 }
109
110 }