PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.1.4
Admin Columns v7.1.4
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 3 days 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 private string $screen_id;
15
16 private OriginalColumnsRepository $repository;
17
18 private TableId $table_id;
19
20 private int $priority;
21
22 private bool $do_exit;
23
24 public function __construct(
25 string $screen_id,
26 TableId $table_id,
27 OriginalColumnsRepository $repository,
28 int $priority = 199,
29 bool $do_exit = true
30 ) {
31 $this->screen_id = $screen_id;
32 $this->table_id = $table_id;
33 $this->repository = $repository;
34 $this->priority = $priority;
35 $this->do_exit = $do_exit;
36 }
37
38 /**
39 * @see get_column_headers()
40 * @see WP_List_Table::get_column_info()
41 */
42 public function register(): void
43 {
44 add_filter(
45 sprintf('manage_%s_columns', $this->screen_id),
46 [$this, 'save_columns'],
47 $this->priority
48 );
49 add_filter(
50 sprintf('manage_%s_sortable_columns', $this->screen_id),
51 [$this, 'save_sortable_columns'],
52 $this->priority
53 );
54 }
55
56 public function save_columns($headings)
57 {
58 if ($headings && is_array($headings)) {
59 remove_filter(
60 sprintf('manage_%s_columns', $this->screen_id),
61 [$this, 'save_columns'],
62 $this->priority
63 );
64
65 $this->repository->update(
66 $this->table_id,
67 OriginalColumns::create_from_headings($headings)
68 );
69 }
70
71 return $headings;
72 }
73
74 public function save_sortable_columns($sortable_columns)
75 {
76 if (! is_array($sortable_columns)) {
77 return $sortable_columns;
78 }
79
80 remove_filter(
81 sprintf('manage_%s_sortable_columns', $this->screen_id),
82 [$this, 'save_sortable_columns'],
83 $this->priority
84 );
85
86 $columns = $this->repository->find_all($this->table_id);
87
88 $sortables = array_keys($sortable_columns);
89
90 foreach ($columns as $column) {
91 $column->set_sortable(
92 in_array($column->get_name(), $sortables, true)
93 );
94 }
95
96 $this->repository->update(
97 $this->table_id,
98 $columns
99 );
100
101 if ($this->do_exit) {
102 ob_clean();
103 exit('ac_success');
104 }
105
106 return $sortable_columns;
107 }
108
109 }
110