PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.25
Advanced Ads – Ad Manager & AdSense v2.0.25
2.0.25 2.0.24 2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / includes / abstracts / abstract-admin-list-table.php
advanced-ads / includes / abstracts Last commit date
abstract-ad.php 2 days ago abstract-admin-list-table.php 1 week ago abstract-data.php 1 week ago abstract-factory.php 2 days ago abstract-group.php 2 days ago abstract-placement-type.php 1 week ago abstract-placement.php 2 days ago abstract-screen.php 3 months ago abstract-types.php 2 days ago index.php 2 years ago
abstract-admin-list-table.php
227 lines
1 <?php
2 /**
3 * This class is serving as the base for admin tables and providing a foundation.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 1.48.2
8 */
9
10 namespace AdvancedAds\Abstracts;
11
12 use AdvancedAds\Framework\Interfaces\Integration_Interface;
13 use WP_Screen;
14
15 defined( 'ABSPATH' ) || exit;
16
17 /**
18 * Admin List Table.
19 */
20 abstract class Admin_List_Table implements Integration_Interface {
21
22 /**
23 * Object being shown on the row.
24 *
25 * @var object|null
26 */
27 protected $object = null;
28
29 /**
30 * Object type.
31 *
32 * @var string
33 */
34 protected $object_type = 'unknown';
35
36 /**
37 * Post type.
38 *
39 * @var string
40 */
41 protected $list_table_type = '';
42
43 /**
44 * Hook into WordPress.
45 *
46 * @return void
47 */
48 public function hooks(): void {
49 if ( $this->list_table_type ) {
50 // Columns.
51 add_filter( 'default_hidden_columns', [ $this, 'default_hidden_columns' ], 10, 2 );
52 add_filter( 'manage_' . $this->list_table_type . '_posts_columns', [ $this, 'define_columns' ] );
53 add_filter( 'manage_edit-' . $this->list_table_type . '_sortable_columns', [ $this, 'define_sortable_columns' ] );
54 add_action( 'manage_' . $this->list_table_type . '_posts_custom_column', [ $this, 'render_columns' ], 10, 2 );
55
56 // Views.
57 add_filter( 'view_mode_post_types', [ $this, 'disable_view_mode' ] );
58 add_action( 'restrict_manage_posts', [ $this, 'restrict_manage_posts' ] );
59
60 // Query.
61 add_filter( 'request', [ $this, 'request_query' ] );
62 }
63 }
64
65 /**
66 * Define which columns to show on this screen.
67 *
68 * @param array $columns Existing columns.
69 *
70 * @return array
71 */
72 public function define_columns( $columns ): array {
73 return $columns;
74 }
75
76 /**
77 * Define which columns are sortable.
78 *
79 * @param array $columns Existing columns.
80 *
81 * @return array
82 */
83 public function define_sortable_columns( $columns ): array {
84 return $columns;
85 }
86
87 /**
88 * Define hidden columns.
89 *
90 * @return array
91 */
92 protected function define_hidden_columns(): array {
93 return [];
94 }
95
96 /**
97 * Adjust which columns are displayed by default.
98 *
99 * @param array $hidden Current hidden columns.
100 * @param WP_Screen $screen Current screen.
101 *
102 * @return array
103 */
104 public function default_hidden_columns( $hidden, $screen ): array {
105 if ( isset( $screen->id ) && 'edit-' . $this->list_table_type === $screen->id ) {
106 $hidden = array_merge( $hidden, $this->define_hidden_columns() );
107 }
108
109 return $hidden;
110 }
111
112 /**
113 * Pre-fetch any data for the row each column has access to it.
114 *
115 * @param int $post_id Post ID being shown.
116 *
117 * @return void
118 */
119 protected function prepare_row_data( $post_id ): void {}
120
121 /**
122 * Render individual columns.
123 *
124 * @param string $column Column ID to render.
125 * @param int $post_id Post ID being shown.
126 *
127 * @return void
128 */
129 public function render_columns( $column, $post_id ): void {
130 $this->prepare_row_data( $post_id );
131
132 if ( ! $this->object ) {
133 return;
134 }
135
136 if ( is_callable( [ $this, 'render_' . $column . '_column' ] ) ) {
137 $this->{"render_{$column}_column"}();
138 }
139
140 do_action( 'advanced-ads-ad-render-columns', $column, $this->object );
141 do_action( "advanced-ads-{$this->object_type}-render-column-{$column}", $this->object );
142 }
143
144 /**
145 * Removes this type from list of post types that support "View Mode" switching.
146 * View mode is seen on posts where you can switch between list or excerpt. Our post types don't support
147 * it, so we want to hide the useless UI from the screen options tab.
148 *
149 * @param array $post_types Array of post types supporting view mode.
150 *
151 * @return array Array of post types supporting view mode, without this type.
152 */
153 public function disable_view_mode( $post_types ): array {
154 unset( $post_types[ $this->list_table_type ] );
155
156 return $post_types;
157 }
158
159 /**
160 * Render any custom filters and search inputs for the list table.
161 *
162 * @return void
163 */
164 protected function render_filters(): void {}
165
166 /**
167 * See if we should render search filters or not.
168 *
169 * @return void
170 */
171 public function restrict_manage_posts(): void {
172 global $typenow;
173
174 if ( $this->list_table_type === $typenow ) {
175 $this->render_filters();
176 }
177 }
178
179 /**
180 * Handle any filters.
181 *
182 * @param array $query_vars Query vars.
183 *
184 * @return array
185 */
186 public function request_query( $query_vars ): array {
187 global $typenow;
188
189 if ( $this->list_table_type === $typenow ) {
190 return $this->query_filters( $query_vars );
191 }
192
193 return $query_vars;
194 }
195
196 /**
197 * Handle any custom filters.
198 *
199 * @param array $query_vars Query vars.
200 *
201 * @return array
202 */
203 protected function query_filters( $query_vars ): array {
204 return $query_vars;
205 }
206
207 /**
208 * Check if all filters are applied.
209 *
210 * @return bool
211 */
212 protected function is_all_filters_applied(): bool {
213 return count(
214 array_diff_key(
215 $_GET, // phpcs:ignore WordPress.Security.NonceVerification.Recommended
216 [
217 'post_type' => $this->list_table_type,
218 'orderby' => '',
219 'order' => '',
220 'paged' => '',
221 'mode' => '',
222 ]
223 )
224 ) === 0;
225 }
226 }
227