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 / RequestHandler / Ajax / ListScreenSelectColumn.php
codepress-admin-columns / classes / RequestHandler / Ajax Last commit date
AdminGeneralOptionsGet.php 2 days ago AdminGeneralOptionsPersist.php 2 days ago CustomFieldKeys.php 2 days ago EditorMenuFavorites.php 2 days ago EditorMenuStatus.php 2 days ago ExtendedValue.php 2 days ago IntegrationToggle.php 2 days ago Integrations.php 2 days ago ListScreenAddColumn.php 2 days ago ListScreenDelete.php 2 days ago ListScreenOriginalColumns.php 2 days ago ListScreenSave.php 2 days ago ListScreenSelectColumn.php 2 days ago ListScreenSettings.php 2 days ago NetworkPostStati.php 2 days ago NumberFormat.php 2 days ago RestoreSettingsRequest.php 2 days ago ScreenOptions.php 2 days ago
ListScreenSelectColumn.php
79 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\RequestHandler\Ajax;
6
7 use AC;
8 use AC\Capabilities;
9 use AC\Column\ColumnFactory;
10 use AC\Nonce;
11 use AC\Request;
12 use AC\RequestAjaxHandler;
13 use AC\Response\Json;
14 use AC\TableScreenFactory\Aggregate;
15 use AC\Type\TableId;
16
17 class ListScreenSelectColumn implements RequestAjaxHandler
18 {
19 private Aggregate $table_screen_factory;
20
21 private AC\ColumnFactories\Aggregate $column_factory;
22
23 private AC\Response\JsonColumnFactory $json_response_factory;
24
25 public function __construct(
26 Aggregate $table_screen_factory,
27 AC\ColumnFactories\Aggregate $column_factory,
28 AC\Response\JsonColumnFactory $json_response_factory
29 ) {
30 $this->table_screen_factory = $table_screen_factory;
31 $this->column_factory = $column_factory;
32 $this->json_response_factory = $json_response_factory;
33 }
34
35 private function get_column_factory($table_screen, $column_type): ?ColumnFactory
36 {
37 foreach ($this->column_factory->create($table_screen) as $factory) {
38 if ($factory->get_column_type() === $column_type) {
39 return $factory;
40 }
41 }
42
43 return null;
44 }
45
46 public function handle(): void
47 {
48 if (! current_user_can(Capabilities::MANAGE)) {
49 return;
50 }
51
52 $request = new Request();
53 $response = new Json();
54
55 if (! (new Nonce\Ajax())->verify($request)) {
56 $response->error();
57 }
58
59 $table_screen = $this->table_screen_factory->create(
60 new TableId((string)$request->get('list_key'))
61 );
62
63 $column_data = json_decode((string)$request->get('data'), true);
64
65 $factory = $this->get_column_factory($table_screen, $column_data['type']);
66
67 if (! $factory) {
68 $response->error();
69 }
70
71 $column = $factory->create(new AC\Setting\Config($column_data));
72
73 $this->json_response_factory
74 ->create_by_column($column)
75 ->success();
76 }
77
78 }
79