PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.8.4
Advanced Ads – Ad Manager & AdSense v1.8.4
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 / classes / ad-select.php
advanced-ads / classes Last commit date
EDD_SL_Plugin_Updater.php 8 years ago ad-ajax.php 8 years ago ad-debug.php 8 years ago ad-model.php 8 years ago ad-select.php 9 years ago ad.php 8 years ago ad_ajax_callbacks.php 8 years ago ad_group.php 8 years ago ad_placements.php 8 years ago ad_type_abstract.php 11 years ago ad_type_content.php 8 years ago ad_type_dummy.php 8 years ago ad_type_group.php 8 years ago ad_type_image.php 8 years ago ad_type_plain.php 8 years ago checks.php 8 years ago display-conditions.php 8 years ago filesystem.php 8 years ago frontend_checks.php 8 years ago plugin.php 8 years ago upgrades.php 8 years ago utils.php 8 years ago visitor-conditions.php 8 years ago widget.php 8 years ago
ad-select.php
166 lines
1 <?php
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'; // alias of self::ID
23 const ID = 'id';
24
25 protected $methods;
26
27 private function __construct() {}
28
29 /**
30 *
31 * @var Advanced_Ads_Select
32 */
33 private static $instance;
34
35 /**
36 *
37 * @return Advanced_Ads_Select
38 */
39 public static function get_instance()
40 {
41 if ( ! isset(self::$instance) ) {
42 self::$instance = new self;
43 }
44
45 return self::$instance;
46 }
47
48 /**
49 *
50 * @return array
51 */
52 public function get_methods()
53 {
54 if ( ! isset($this->methods) ) {
55 $methods = array(
56 self::AD => array( $this, 'get_ad_by_id' ),
57 self::GROUP => array( $this, 'get_ad_by_group' ),
58 self::PLACEMENT => array( $this, 'get_ad_by_placement' ),
59 );
60
61 $this->methods = apply_filters( 'advanced-ads-ad-select-methods', $methods );
62 }
63
64 return $this->methods;
65 }
66
67 /**
68 * Advanced ad selection methods should not directly rely on
69 * current environment factors.
70 * Prior to actual ad selection the meta is provided to allow for
71 * serialised, proxied or otherwise defered selection workflows.
72 *
73 * @return array
74 */
75 public function get_ad_arguments( $method, $id, $args = array() )
76 {
77 $args = (array) $args;
78
79 $args['previous_method'] = isset( $args['method'] ) ? $args['method'] : null;
80 $args['previous_id'] = isset( $args['id'] ) ? $args['id'] : null;
81
82 if ( $id || ! isset( $args['id'] ) ) $args['id'] = $id;
83 $args['method'] = $method;
84
85 $args = apply_filters( 'advanced-ads-ad-select-args', $args, $method, $id );
86
87 return $args;
88 }
89
90 public function get_ad_by_method( $id, $method, $args = array() ) {
91
92 $methods = $this->get_methods();
93 if ( ! isset($methods[ $method ]) ) {
94 return ;
95 }
96 if ( ! advads_can_display_ads() ) {
97 return ;
98 }
99 $args = $this->get_ad_arguments( $method, $id, $args );
100
101 return call_user_func( $methods[ $method ], $args );
102 }
103
104 // internal
105 public function get_ad_by_id($args) {
106 if ( isset($args['override']) ) {
107 return $args['override'];
108 }
109 if ( ! isset($args['id']) || $args['id'] == 0 ) {
110 return ;
111 }
112
113 // get ad
114 $ad = new Advanced_Ads_Ad( (int) $args['id'], $args );
115
116 if ( false !== ( $override = apply_filters( 'advanced-ads-ad-select-override-by-ad', false, $ad, $args ) ) ) {
117 return $override;
118 }
119
120 // check conditions
121 if ( $ad->can_display() ) {
122 return $ad->output();
123 }
124 }
125
126 // internal
127 public function get_ad_by_group($args) {
128 if ( isset($args['override']) ) {
129 return $args['override'];
130 }
131 if ( ! isset($args['id']) || $args['id'] == 0 ) {
132 return;
133 }
134
135 // get ad
136 $id = (int) $args['id'];
137 $adgroup = new Advanced_Ads_Group( $id, $args );
138 $ordered_ad_ids = $adgroup->get_ordered_ad_ids();
139
140 if ( false !== ( $override = apply_filters( 'advanced-ads-ad-select-override-by-group', false, $adgroup, $ordered_ad_ids, $args ) ) ) {
141 return $override;
142 }
143
144 return $adgroup->output( $ordered_ad_ids );
145 }
146
147 // internal
148 public function get_ad_by_placement($args) {
149 if ( isset($args['override']) ) {
150 return $args['override'];
151 }
152 if ( ! isset($args['id']) || $args['id'] == '' ) {
153 return ;
154 }
155
156 // check conditions
157 if ( ! Advanced_Ads_Placements::can_display( $args['id'] ) ) {
158 return;
159 }
160
161 // get placement content
162 $id = $args['id'];
163 return Advanced_Ads_Placements::output( $id, $args );
164 }
165 }
166