PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.6.13
Advanced Ads – Ad Manager & AdSense v1.6.13
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 10 years ago ad-ajax.php 10 years ago ad-model.php 11 years ago ad-select.php 10 years ago ad.php 10 years ago ad_ajax_callbacks.php 10 years ago ad_group.php 10 years ago ad_placements.php 10 years ago ad_type_abstract.php 11 years ago ad_type_content.php 10 years ago ad_type_image.php 10 years ago ad_type_plain.php 10 years ago checks.php 10 years ago plugin.php 10 years ago visitor-conditions.php 10 years ago widget.php 10 years ago
ad-select.php
153 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 if ( $id || ! isset( $args['id'] ) ) $args['id'] = $id;
80 $args['method'] = $method;
81
82 $args = apply_filters( 'advanced-ads-ad-select-args', $args );
83
84 return $args;
85 }
86
87 public function get_ad_by_method( $id, $method, $args = array() ) {
88
89 $methods = $this->get_methods();
90 if ( ! isset($methods[ $method ]) ) {
91 return ;
92 }
93 if ( ! advads_can_display_ads() ) {
94 return ;
95 }
96 $args = $this->get_ad_arguments( $method, $id, $args );
97
98 return call_user_func( $methods[ $method ], $args );
99 }
100
101 // internal
102 public function get_ad_by_id($args) {
103 if ( isset($args['override']) ) {
104 return $args['override'];
105 }
106 if ( ! isset($args['id']) || $args['id'] == 0 ) {
107 return ;
108 }
109
110 // get ad
111 $ad = new Advanced_Ads_Ad( (int) $args['id'], $args );
112
113 // check conditions
114 if ( $ad->can_display() ) {
115 return $ad->output();
116 }
117 }
118
119 // internal
120 public function get_ad_by_group($args) {
121 if ( isset($args['override']) ) {
122 return $args['override'];
123 }
124 if ( ! isset($args['id']) || $args['id'] == 0 ) {
125 return;
126 }
127
128 // get ad
129 $id = (int) $args['id'];
130 $adgroup = new Advanced_Ads_Group( $id, $args );
131 return $adgroup->output();
132 }
133
134 // internal
135 public function get_ad_by_placement($args) {
136 if ( isset($args['override']) ) {
137 return $args['override'];
138 }
139 if ( ! isset($args['id']) || $args['id'] == '' ) {
140 return ;
141 }
142
143 // check conditions
144 if ( ! Advanced_Ads_Placements::can_display( $args['id'] ) ) {
145 return;
146 }
147
148 // get placement content
149 $id = $args['id'];
150 return Advanced_Ads_Placements::output( $id, $args );
151 }
152 }
153