PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.0.3
Jetpack – WP Security, Backup, Speed, & Growth v12.0.3
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / wordads / php / class-wordads-params.php
jetpack / modules / wordads / php Last commit date
networks 5 years ago class-wordads-admin.php 5 years ago class-wordads-api.php 4 years ago class-wordads-california-privacy.php 3 years ago class-wordads-ccpa-do-not-sell-link-widget.php 3 years ago class-wordads-cron.php 5 years ago class-wordads-params.php 4 years ago class-wordads-sidebar-widget.php 3 years ago
class-wordads-params.php
257 lines
1 <?php
2 /**
3 * WordAds Param Class file.
4 *
5 * @package automattic/jetpack
6 */
7
8 use Automattic\Jetpack\Status;
9
10 /**
11 * Class WordAds_Params
12 *
13 * Sets parameters for WordAds.
14 */
15 class WordAds_Params {
16
17 /**
18 * Setup parameters for serving the ads
19 *
20 * @since 4.5.0
21 */
22 public function __construct() {
23 // WordAds setting => default.
24 $settings = array(
25 'wordads_approved' => false,
26 'wordads_active' => false,
27 'wordads_house' => true,
28 'wordads_unsafe' => false,
29 'enable_header_ad' => true,
30 'wordads_second_belowpost' => true,
31 'wordads_display_front_page' => true,
32 'wordads_display_post' => true,
33 'wordads_display_page' => true,
34 'wordads_display_archive' => true,
35 'wordads_custom_adstxt' => '',
36 'wordads_custom_adstxt_enabled' => false,
37 'wordads_ccpa_enabled' => false,
38 'wordads_ccpa_privacy_policy_url' => get_option( 'wp_page_for_privacy_policy' ) ? get_permalink( (int) get_option( 'wp_page_for_privacy_policy' ) ) : '',
39 );
40
41 // Grab settings, or set as default if it doesn't exist.
42 $this->options = array();
43
44 foreach ( $settings as $setting => $default ) {
45 $option = get_option( $setting, null );
46
47 if ( $option === null ) {
48
49 // Handle retroactively setting wordads_custom_adstxt_enabled to true if custom ads.txt content is already entered.
50 if ( 'wordads_custom_adstxt_enabled' === $setting ) {
51 $default = get_option( 'wordads_custom_adstxt' ) !== '';
52 }
53
54 // Convert boolean options to string first to work around update_option not setting the option if the value is false.
55 // This sets the option to either '1' if true or '' if false.
56 update_option( $setting, (string) $default, true );
57
58 $option = $default;
59 }
60
61 $this->options[ $setting ] = is_bool( $default ) ? (bool) $option : $option;
62 }
63
64 $this->url = esc_url_raw( ( is_ssl() ? 'https' : 'http' ) . '://' . ( isset( $_SERVER['HTTP_HOST'] ) ? wp_unslash( $_SERVER['HTTP_HOST'] ) : 'localhost' ) . ( isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : '' ) );
65 if ( ! ( false === strpos( $this->url, '?' ) ) && ! isset( $_GET['p'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
66 $this->url = substr( $this->url, 0, strpos( $this->url, '?' ) );
67 }
68
69 $this->cloudflare = self::is_cloudflare();
70 $this->blog_id = Jetpack::get_option( 'id', 0 );
71 $this->mobile_device = jetpack_is_mobile( 'any', true );
72 $this->targeting_tags = array(
73 'WordAds' => 1,
74 'BlogId' => ( new Status() )->is_offline_mode() ? 0 : Jetpack_Options::get_option( 'id' ),
75 'Domain' => esc_js( wp_parse_url( home_url(), PHP_URL_HOST ) ),
76 'PageURL' => esc_js( $this->url ),
77 'LangId' => false !== strpos( get_bloginfo( 'language' ), 'en' ) ? 1 : 0, // TODO something else?
78 'AdSafe' => 1, // TODO.
79 );
80 }
81
82 /**
83 * Is this a mobile device?
84 *
85 * @return boolean true if the user is browsing on a mobile device (iPad not included)
86 *
87 * @since 4.5.0
88 */
89 public function is_mobile() {
90 return ! empty( $this->mobile_device );
91 }
92
93 /**
94 * Is this site served by CloudFlare?
95 *
96 * @return boolean true if site is being served via CloudFlare
97 *
98 * @since 4.5.0
99 */
100 public static function is_cloudflare() {
101 if (
102 defined( 'WORDADS_CLOUDFLARE' )
103 || isset( $_SERVER['HTTP_CF_CONNECTING_IP'] )
104 || isset( $_SERVER['HTTP_CF_IPCOUNTRY'] )
105 || isset( $_SERVER['HTTP_CF_VISITOR'] )
106 ) {
107 return true;
108 }
109
110 return false;
111 }
112
113 /**
114 * Is this an iOS device?
115 *
116 * @return boolean true if user is browsing in iOS device
117 *
118 * @since 4.5.0
119 */
120 public function is_ios() {
121 return in_array( $this->get_device(), array( 'ipad', 'iphone', 'ipod' ), true );
122 }
123
124 /**
125 * Returns the user's device (see user-agent.php) or 'desktop'
126 *
127 * @return string user device
128 *
129 * @since 4.5.0
130 */
131 public function get_device() {
132 global $agent_info;
133
134 if ( ! empty( $this->mobile_device ) ) {
135 return $this->mobile_device;
136 }
137
138 if ( $agent_info->is_ipad() ) {
139 return 'ipad';
140 }
141
142 return 'desktop';
143 }
144
145 /**
146 * Get page type.
147 *
148 * @return string The type of page that is being loaded
149 *
150 * @since 4.5.0
151 */
152 public function get_page_type() {
153 if ( ! empty( $this->page_type ) ) {
154 return $this->page_type;
155 }
156
157 if ( self::is_static_home() ) {
158 $this->page_type = 'static_home';
159 } elseif ( is_home() ) {
160 $this->page_type = 'home';
161 } elseif ( is_page() ) {
162 $this->page_type = 'page';
163 } elseif ( is_single() ) {
164 $this->page_type = 'post';
165 } elseif ( is_search() ) {
166 $this->page_type = 'search';
167 } elseif ( is_category() ) {
168 $this->page_type = 'category';
169 } elseif ( is_archive() ) {
170 $this->page_type = 'archive';
171 } else {
172 $this->page_type = 'wtf';
173 }
174
175 return $this->page_type;
176 }
177
178 /**
179 * Get IPW code.
180 *
181 * @return int The page type code for ipw config
182 *
183 * @since 5.6.0
184 */
185 public function get_page_type_ipw() {
186 if ( ! empty( $this->page_type_ipw ) ) {
187 return $this->page_type_ipw;
188 }
189
190 $page_type_ipw = 6;
191 if ( self::is_static_home() || is_home() || is_front_page() ) {
192 $page_type_ipw = 0;
193 } elseif ( is_page() ) {
194 $page_type_ipw = 2;
195 } elseif ( is_singular() ) {
196 $page_type_ipw = 1;
197 } elseif ( is_search() ) {
198 $page_type_ipw = 4;
199 } elseif ( is_category() || is_tag() || is_archive() || is_author() ) {
200 $page_type_ipw = 3;
201 } elseif ( is_404() ) {
202 $page_type_ipw = 5;
203 }
204
205 $this->page_type_ipw = $page_type_ipw;
206 return $page_type_ipw;
207 }
208
209 /**
210 * Returns true if page is static home
211 *
212 * @return boolean true if page is static home
213 *
214 * @since 4.5.0
215 */
216 public static function is_static_home() {
217 return is_front_page() &&
218 'page' === get_option( 'show_on_front' ) &&
219 get_option( 'page_on_front' );
220 }
221
222 /**
223 * Logic for if we should show an ad
224 *
225 * @since 4.5.0
226 */
227 public function should_show() {
228 global $wp_query;
229 if ( ( is_front_page() || is_home() ) && ! $this->options['wordads_display_front_page'] ) {
230 return false;
231 }
232
233 if ( is_single() && ! $this->options['wordads_display_post'] ) {
234 return false;
235 }
236
237 if ( is_page() && ! $this->options['wordads_display_page'] ) {
238 return false;
239 }
240
241 if ( ( is_archive() || is_search() ) && ! $this->options['wordads_display_archive'] ) {
242 return false;
243 }
244
245 if ( is_single() || ( is_page() && ! is_home() ) ) {
246 return true;
247 }
248
249 // TODO this would be a good place for allowing the user to specify.
250 if ( ( is_home() || is_archive() || is_search() ) && 0 === $wp_query->current_post ) {
251 return true;
252 }
253
254 return false;
255 }
256 }
257