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 / ListScreenSettings.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
ListScreenSettings.php
127 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\RequestHandler\Ajax;
6
7 use AC;
8 use AC\Admin\Preference;
9 use AC\Capabilities;
10 use AC\Form\NonceFactory;
11 use AC\ListScreen;
12 use AC\ListScreenRepository\Storage;
13 use AC\Request;
14 use AC\RequestAjaxHandler;
15 use AC\Type\TableId;
16 use InvalidArgumentException;
17
18 class ListScreenSettings implements RequestAjaxHandler
19 {
20 protected Storage $storage;
21
22 protected AC\TableScreenFactory\Aggregate $table_factory;
23
24 protected Preference\EditorPreference $editor_preference;
25
26 protected AC\Response\JsonListScreenSettingsFactory $response_factory;
27
28 private AC\Type\ListScreenIdGenerator $list_screen_id_generator;
29
30 public function __construct(
31 Storage $storage,
32 AC\TableScreenFactory\Aggregate $table_factory,
33 Preference\EditorPreference $preference,
34 AC\Response\JsonListScreenSettingsFactory $response_factory,
35 AC\Type\ListScreenIdGenerator $list_screen_id_generator
36 ) {
37 $this->storage = $storage;
38 $this->table_factory = $table_factory;
39 $this->editor_preference = $preference;
40 $this->response_factory = $response_factory;
41 $this->list_screen_id_generator = $list_screen_id_generator;
42 }
43
44 protected function validate(): void
45 {
46 $response = new AC\Response\Json();
47
48 if (! current_user_can(Capabilities::MANAGE)) {
49 $response->error();
50 }
51
52 if (! NonceFactory::create_ajax()->verify(new Request())) {
53 $response->error();
54 }
55 }
56
57 protected function set_editor_preference(ListScreen $list_screen): void
58 {
59 $this->editor_preference->save(
60 $list_screen->get_table_screen()->get_id(),
61 $list_screen->get_id()
62 );
63 }
64
65 protected function is_template(ListScreen $list_screen): bool
66 {
67 return false;
68 }
69
70 protected function add_middleware(Request $request, AC\TableScreen $table_screen): void
71 {
72 $request->add_middleware(
73 new Request\Middleware\ListScreenAdmin(
74 $this->storage,
75 $table_screen,
76 $this->editor_preference,
77 )
78 );
79 }
80
81 public function handle(): void
82 {
83 $this->validate();
84
85 $request = new Request();
86
87 $table_id = new TableId((string)$request->get('list_key'));
88
89 if (! $this->table_factory->can_create($table_id)) {
90 throw new InvalidArgumentException('Invalid table screen.');
91 }
92
93 $table_screen = $this->table_factory->create($table_id);
94
95 $this->add_middleware($request, $table_screen);
96
97 $list_screen = $request->get('list_screen');
98
99 // List Screen and context properties
100 $is_template = false;
101 $is_stored = false;
102 $title = $table_screen->get_labels()->get_singular();
103
104 if ($list_screen instanceof ListScreen) {
105 $this->set_editor_preference($list_screen);
106
107 if (! trim($list_screen->get_title())) {
108 $list_screen->set_title($title);
109 }
110
111 $is_template = $this->is_template($list_screen);
112 $is_stored = true;
113 } else {
114 $list_screen = new ListScreen(
115 $this->list_screen_id_generator->generate(),
116 $title,
117 $table_screen
118 );
119 }
120
121 $this->response_factory
122 ->create($list_screen, $is_stored, $is_template)
123 ->success();
124 }
125
126 }
127