PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.5
Advanced Ads – Ad Manager & AdSense v2.0.5
2.0.26 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-types.php
advanced-ads / includes / abstracts Last commit date
abstract-ad.php 1 year ago abstract-admin-list-table.php 1 year ago abstract-data.php 1 year ago abstract-factory.php 1 year ago abstract-group.php 1 year ago abstract-placement-type.php 1 year ago abstract-placement.php 1 year ago abstract-screen.php 1 year ago abstract-types.php 1 year ago index.php 2 years ago
abstract-types.php
195 lines
1 <?php
2 /**
3 * Abstracts Types.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 1.47.0
8 */
9
10 namespace AdvancedAds\Abstracts;
11
12 use AdvancedAds\Framework\Utilities\Str;
13 use AdvancedAds\Framework\Interfaces\Integration_Interface;
14
15 defined( 'ABSPATH' ) || exit;
16
17 /**
18 * Abstracts Types.
19 */
20 abstract class Types implements Integration_Interface {
21
22 /**
23 * Hold types.
24 *
25 * @var array
26 */
27 private $types = [];
28
29 /**
30 * Hook to filter types.
31 *
32 * @var string
33 */
34 protected $hook = 'advanced-ads-none-types';
35
36 /**
37 * Class for unknown type.
38 *
39 * @var string
40 */
41 protected $type_unknown = '';
42
43 /**
44 * Type interface to check.
45 *
46 * @var string
47 */
48 protected $type_interface = '';
49
50 /**
51 * Check if has premium types.
52 *
53 * @var bool
54 */
55 private $has_premium = null;
56
57 /**
58 * Hook into WordPress.
59 *
60 * @return void
61 */
62 public function hooks(): void {
63 add_action( 'init', [ $this, 'register_types' ], 25 );
64 }
65
66 /**
67 * Create missing type
68 *
69 * @param string $type Missing type.
70 *
71 * @return mixed
72 */
73 public function create_missing( $type ) {
74 $this->types[ $type ] = new $this->type_unknown(
75 [
76 'id' => $type,
77 'title' => Str::capitalize( $type ),
78 ]
79 );
80
81 return $this->types[ $type ];
82 }
83
84 /**
85 * Register custom type.
86 *
87 * @param string $classname Type class name.
88 *
89 * @return void
90 */
91 public function register_type( $classname ): void {
92 $type = new $classname();
93 $this->types[ $type->get_id() ] = $type;
94 }
95
96 /**
97 * Register custom types.
98 *
99 * @return void
100 */
101 public function register_types(): void {
102 $this->register_default_types();
103 /**
104 * Developers can add new types using this filter
105 */
106 do_action( $this->hook . '-manager', $this );
107 $this->types = apply_filters( $this->hook, $this->types );
108
109 $this->validate_types();
110 }
111
112 /**
113 * Has type.
114 *
115 * @param string $type Type to check.
116 *
117 * @return bool
118 */
119 public function has_type( $type ): bool {
120 return array_key_exists( $type, $this->types );
121 }
122
123 /**
124 * Get the registered type.
125 *
126 * @param string $type Type to get.
127 *
128 * @return mixed|bool
129 */
130 public function get_type( $type ) {
131 return $this->types[ $type ] ?? false;
132 }
133
134 /**
135 * Get the registered types.
136 *
137 * @param bool $with_unknown Include unknown type placements.
138 *
139 * @return array
140 */
141 public function get_types( $with_unknown = true ): array {
142 return $with_unknown ? $this->types : array_filter( $this->types, fn( $type ) => ! is_a( $type, $this->type_unknown ) );
143 }
144
145 /**
146 * Check if has premium types.
147 *
148 * @return bool
149 */
150 public function has_premium(): bool {
151 if ( null !== $this->has_premium ) {
152 return $this->has_premium;
153 }
154
155 $this->has_premium = false;
156
157 foreach ( $this->get_types() as $type ) {
158 if ( $type->is_premium() ) {
159 $this->has_premium = true;
160 break;
161 }
162 }
163
164 return $this->has_premium;
165 }
166
167 /**
168 * Register default types.
169 *
170 * @return void
171 */
172 abstract protected function register_default_types(): void;
173
174 /**
175 * Validate types by type interface
176 *
177 * @return void
178 */
179 private function validate_types(): void {
180 // Early bail!!
181 if ( empty( $this->type_unknown ) || empty( $this->type_interface ) ) {
182 return;
183 }
184
185 foreach ( $this->types as $slug => $type ) {
186 if ( ! is_array( $type ) || is_a( $type, $this->type_interface ) ) {
187 continue;
188 }
189
190 $type['id'] = $slug;
191 $this->types[ $slug ] = new $this->type_unknown( $type );
192 }
193 }
194 }
195