PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.24
Advanced Ads – Ad Manager & AdSense v2.0.24
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 / deprecated / ad-select.php
advanced-ads / deprecated Last commit date
Ad_Repository.php 1 year ago Group_Repository.php 1 year ago ad-ajax.php 1 year ago ad-debug.php 1 year ago ad-expiration.php 1 year ago ad-model.php 1 week ago ad-select.php 1 year ago ad.php 1 year ago ad_group.php 1 year ago ad_placements.php 1 year ago ad_type_abstract.php 1 year ago ad_type_content.php 1 year ago ad_type_dummy.php 1 year ago ad_type_group.php 1 year ago ad_type_image.php 1 year ago ad_type_plain.php 1 year ago class-admin.php 1 year ago class-advanced-ads-plugin.php 1 year ago gadsense-dummy.php 1 year ago in-content-injector.php 2 months ago placements-ad-label-position.php 1 year ago
ad-select.php
151 lines
1 <?php // phpcs:ignoreFilename
2
3 /**
4 * Abstracts ad selection.
5 *
6 * The class allows to modify 'methods' (named callbacks) to provide ads
7 * through `advanced-ads-ad-select-methods` filter.
8 * This can be used to replace default methods, wrap them or add new ones.
9 *
10 * Further allows to provide ad selection attributes
11 * through `advanced-ads-ad-select-args` filter to influence behaviour of the
12 * selection method.
13 * Default methods have a `override` attribute that allows to replace the
14 * content. This may be used to defer or skip ad codes dynamically.
15 *
16 * @since 1.5.0
17 */
18 class Advanced_Ads_Select {
19
20 const PLACEMENT = 'placement';
21 const GROUP = 'group';
22 const AD = 'id';
23
24 /**
25 * Hold methods
26 *
27 * @var array
28 */
29 protected $methods;
30
31 /**
32 * Get instance of this class.
33 *
34 * @return Advanced_Ads_Select
35 */
36 public static function get_instance() {
37 static $instance;
38 if ( ! isset( $instance ) ) {
39 $instance = new self();
40 }
41
42 return $instance;
43 }
44
45 /**
46 * Get ad selection methods.
47 *
48 * @return array
49 */
50 public function get_methods() {
51 if ( ! isset( $this->methods ) ) {
52 $methods = [
53 self::AD => [ $this, 'get_ad_by_id' ],
54 self::GROUP => [ $this, 'get_ad_by_group' ],
55 self::PLACEMENT => [ $this, 'get_ad_by_placement' ],
56 ];
57
58 $this->methods = apply_filters( 'advanced-ads-ad-select-methods', $methods );
59 }
60
61 return $this->methods;
62 }
63
64 /**
65 * Advanced ad selection methods should not directly rely on
66 * current environment factors.
67 * Prior to actual ad selection the meta is provided to allow for
68 * serialised, proxied or otherwise defered selection workflows.
69 *
70 * @param string $method Ad selection method.
71 * @param int $id Ad ID.
72 * @param array $args Ad selection arguments.
73 *
74 * @return array
75 */
76 public function get_ad_arguments( $method, $id, $args = [] ) {
77 $args = (array) $args;
78
79 $args['previous_id'] = $args['id'] ?? null;
80 $args['previous_method'] = $args['method'] ?? null;
81
82 if ( $id || ! isset( $args['id'] ) ) {
83 $args['id'] = $id;
84 }
85
86 $args['method'] = $method;
87
88 $args = apply_filters( 'advanced-ads-ad-select-args', $args, $method, $id );
89
90 return $args;
91 }
92
93 /**
94 * Get ad by method.
95 *
96 * @param int $id Ad ID.
97 * @param string $method Ad selection method.
98 * @param array $args Ad selection arguments.
99 *
100 * @return string
101 */
102 public function get_ad_by_method( $id, $method, $args = [] ) {
103 $methods = $this->get_methods();
104
105 if ( ! isset( $methods[ $method ] ) ) {
106 return;
107 }
108
109 if ( ! advads_can_display_ads() ) {
110 return;
111 }
112
113 $args = $this->get_ad_arguments( $method, $id, $args );
114
115 return call_user_func( $methods[ $method ], $args );
116 }
117
118 /**
119 * Get ad by ID.
120 *
121 * @param array $args Ad selection arguments.
122 *
123 * @return string
124 */
125 public function get_ad_by_id( $args ) {
126 return get_the_ad( $args['id'], '', $args );
127 }
128
129 /**
130 * Get ad by group.
131 *
132 * @param array $args Ad selection arguments.
133 *
134 * @return string
135 */
136 public function get_ad_by_group( $args ) {
137 return get_the_group( $args['id'], '', $args );
138 }
139
140 /**
141 * Get ad by placement.
142 *
143 * @param array $args Ad selection arguments.
144 *
145 * @return string
146 */
147 public function get_ad_by_placement( $args ) {
148 return get_the_placement( $args['id'], '', $args );
149 }
150 }
151