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-placement-type.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-placement-type.php
175 lines
1 <?php
2 /**
3 * This class is serving as the base for placement types.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 1.50.0
8 */
9
10 namespace AdvancedAds\Abstracts;
11
12 defined( 'ABSPATH' ) || exit;
13
14 /**
15 * Placement Type.
16 */
17 class Placement_Type {
18
19 /**
20 * Hold allowed ads for cache purpose.
21 *
22 * @var array
23 */
24 private $allowed_ads = null;
25
26 /**
27 * Hold allowed groups for cache purpose.
28 *
29 * @var array
30 */
31 private $allowed_groups = null;
32
33 /**
34 * Apply filters on options by type id.
35 *
36 * @param array $options Options array.
37 *
38 * @return array
39 */
40 protected function apply_filter_on_options( $options ): array {
41 $defaults = [
42 'show_position' => false,
43 'show_lazy_load' => false,
44 'uses_the_content' => false,
45 'amp' => false,
46 ];
47 $options = wp_parse_args( $options, $defaults );
48
49 return apply_filters(
50 'advanced-ads-placement-' . $this->get_id() . '-options',
51 $options
52 );
53 }
54
55 /**
56 * Get allowed item array for dropdown
57 *
58 * @param string $add_empty Add empty option.
59 *
60 * @return array
61 */
62 public function get_allowed_items( $add_empty = '' ): array {
63
64 $options = [];
65
66 if ( ! empty( $add_empty ) ) {
67 $options[] = [
68 'label' => $add_empty,
69 'value' => 0,
70 ];
71 }
72
73 $options['ads'] = [
74 'label' => __( 'Ads', 'advanced-ads' ),
75 'items' => $this->get_allowed_ads(),
76 ];
77
78 $options['groups'] = [
79 'label' => __( 'Ad Groups', 'advanced-ads' ),
80 'items' => $this->get_allowed_groups(),
81 ];
82
83 return $options;
84 }
85
86 /**
87 * Get all allowed ads for this placement type.
88 *
89 * @return array
90 */
91 public function get_allowed_ads(): array {
92 if ( null !== $this->allowed_ads ) {
93 return $this->allowed_ads;
94 }
95
96 $this->allowed_ads = [];
97 foreach ( wp_advads_get_ad_summaries() as $ad_id => $summary ) {
98 if ( ! $this->is_ad_type_allowed( $summary['type'] ) ) {
99 continue;
100 }
101
102 $this->allowed_ads[ 'ad_' . $ad_id ] = $summary['title'] . ( 'draft' === $summary['status'] ? ' (' . __( 'draft', 'advanced-ads' ) . ')' : '' );
103 }
104
105 return $this->allowed_ads;
106 }
107
108 /**
109 * Get all allowed groups for this placement type.
110 *
111 * @return array
112 */
113 public function get_allowed_groups(): array {
114 if ( null !== $this->allowed_groups ) {
115 return $this->allowed_groups;
116 }
117
118 $this->allowed_groups = [];
119
120 $group_summaries = wp_advads_get_group_summaries();
121
122 foreach ( $group_summaries as $group_id => $summary ) {
123 if ( ! $this->is_group_type_allowed( $summary['type'] ) ) {
124 continue;
125 }
126
127 foreach ( wp_advads_get_ads_by_group_id( $group_id, 'summaries' ) as $ad_id => $ad_summary ) {
128 if ( $this->is_ad_type_allowed( $ad_summary['type'] ) ) {
129 $this->allowed_groups[ 'group_' . $group_id ] = $summary['title'];
130 break;
131 }
132 }
133 }
134
135 return $this->allowed_groups;
136 }
137
138 /**
139 * Check if the provided ad type is allowed
140 *
141 * @param string $type Ad type.
142 *
143 * @return bool
144 */
145 public function is_ad_type_allowed( $type ): bool {
146 return $this->is_entity_allowed( $type, 'ad' );
147 }
148
149 /**
150 * Check if the provided group type is allowed.
151 *
152 * @param string $type Group type.
153 *
154 * @return bool
155 */
156 public function is_group_type_allowed( $type ): bool {
157 return $this->is_entity_allowed( $type, 'group' );
158 }
159
160 /**
161 * Abstraction of whether entity is allowed.
162 *
163 * @param string $type Type to check.
164 * @param string $entity Entity type i.e. `ad` or `group`.
165 *
166 * @return bool
167 */
168 public function is_entity_allowed( $type, $entity ) {
169 $options = $this->get_options();
170 $allowed = $options[ 'allowed_' . $entity . '_types' ] ?? true;
171
172 return true === $allowed ? true : in_array( $type, $allowed, true );
173 }
174 }
175