PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.13
Admin Columns v7.0.13
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 3 months ago AdminGeneralOptionsPersist.php 3 months ago CustomFieldKeys.php 3 months ago EditorMenuFavorites.php 3 months ago EditorMenuStatus.php 3 months ago ExtendedValue.php 3 months ago IntegrationToggle.php 3 months ago Integrations.php 3 months ago ListScreenAddColumn.php 3 months ago ListScreenDelete.php 3 months ago ListScreenOriginalColumns.php 3 months ago ListScreenSave.php 3 months ago ListScreenSelectColumn.php 3 months ago ListScreenSettings.php 3 months ago NetworkPostStati.php 3 months ago NumberFormat.php 3 months ago RestoreSettingsRequest.php 3 months ago ScreenOptions.php 3 months 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
20 private Aggregate $table_screen_factory;
21
22 private AC\ColumnFactories\Aggregate $column_factory;
23
24 private AC\Response\JsonColumnFactory $json_response_factory;
25
26 public function __construct(
27 Aggregate $table_screen_factory,
28 AC\ColumnFactories\Aggregate $column_factory,
29 AC\Response\JsonColumnFactory $json_response_factory
30 ) {
31 $this->table_screen_factory = $table_screen_factory;
32 $this->column_factory = $column_factory;
33 $this->json_response_factory = $json_response_factory;
34 }
35
36 private function get_column_factory($table_screen, $column_type): ?ColumnFactory
37 {
38 foreach ($this->column_factory->create($table_screen) as $factory) {
39 if ($factory->get_column_type() === $column_type) {
40 return $factory;
41 }
42 }
43
44 return null;
45 }
46
47 public function handle(): void
48 {
49 if ( ! current_user_can(Capabilities::MANAGE)) {
50 return;
51 }
52
53 $request = new Request();
54 $response = new Json();
55
56 if ( ! (new Nonce\Ajax())->verify($request)) {
57 $response->error();
58 }
59
60 $table_screen = $this->table_screen_factory->create(
61 new TableId((string)$request->get('list_key'))
62 );
63
64 $column_data = json_decode((string)$request->get('data'), true);
65
66 $factory = $this->get_column_factory($table_screen, $column_data['type']);
67
68 if ( ! $factory) {
69 $response->error();
70 }
71
72 $column = $factory->create(new AC\Setting\Config($column_data));
73
74 $this->json_response_factory
75 ->create_by_column($column)
76 ->success();
77 }
78
79 }