PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.11.2
Advanced Ads – Ad Manager & AdSense v1.11.2
2.0.26 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 / modules / privacy / classes / plugin.php
advanced-ads / modules / privacy / classes Last commit date
plugin.php 7 years ago
plugin.php
164 lines
1 <?php
2 class Advanced_Ads_Privacy
3 {
4 /**
5 * Singleton instance of the plugin
6 *
7 * @var Advanced_Ads_Privacy
8 */
9 protected static $instance;
10
11 /**
12 * module options
13 *
14 * @var array (if loaded)
15 */
16 protected $options;
17
18 /**
19 * option key
20 *
21 * @const array
22 */
23 const OPTION_KEY = 'advanced-ads-privacy';
24
25 /**
26 * Initialize the module
27 */
28 private function __construct() {
29 $options = $this->options();
30
31 add_filter( 'advanced-ads-can-display', array( $this, 'can_display_by_consent' ), 10, 3 );
32
33 if ( ! empty( $options['enabled'] ) ) {
34 add_filter( 'advanced-ads-activate-advanced-js', '__return_true' );
35 }
36 }
37
38 /**
39 * Return an instance of Advanced_Ads_Privacy
40 *
41 * @return Advanced_Ads_Privacy
42 */
43 public static function get_instance() {
44 // If the single instance hasn't been set, set it now.
45 if ( null === self::$instance )
46 {
47 self::$instance = new self;
48 }
49
50 return self::$instance;
51 }
52
53 /**
54 * Return module options
55 *
56 * @return array $options
57 */
58 public function options() {
59 if ( ! isset( $this->options ) ) {
60 $this->options = get_option( self::OPTION_KEY, array() );
61 }
62 return $this->options;
63 }
64
65 /**
66 * Check if ad can be displayed based on user's consent.
67 *
68 * @return bool
69 */
70 public function can_display_by_consent( $can_display, Advanced_Ads_Ad $ad, $check_options ) {
71 if ( ! $can_display ) {
72 return $can_display;
73 }
74
75 if ( $check_options['passive_cache_busting'] ) {
76 return true;
77 }
78
79 $ad_options = $ad->options();
80 // If consent is not needed for the ad.
81 if ( ! empty( $ad_options['privacy']['ignore-consent'] ) ) {
82 return true;
83 }
84
85 $privacy_options = $this->options();
86 if ( $ad->type === 'adsense' ) {
87 if ( ! empty( $privacy_options['show-non-personalized-adsense'] ) ) {
88 // Either personalized or non-personalized ad will be shown.
89 return true;
90 }
91 }
92
93 $state = $this->get_state();
94 return ( $state === 'accepted' || $state === 'not_needed' );
95 }
96
97 /**
98 * Check if consent is not needed or was given by the user.
99 *
100 * @return str
101 * 'not_needed' - consent is not needed.
102 * 'accepted' - consent was given.
103 * 'unknown' - consent was not given yet.
104 */
105 public function get_state() {
106 if ( empty ( $this->options['enabled'] ) ) {
107 return 'not_needed';
108 }
109
110 $consent_method = isset( $this->options['consent-method'] ) ? $this->options['consent-method'] : 0;
111 switch ( $consent_method ) {
112 case '0':
113 return 'not_needed';
114 break;
115 case 'custom':
116 if ( ! isset( $this->options['custom-cookie-name'] ) || ! isset( $this->options['custom-cookie-value'] ) ) {
117 return 'not_needed';
118 }
119 $name = $this->options['custom-cookie-name'];
120 $value = $this->options['custom-cookie-value'];
121 if ( ! isset( $_COOKIE[ $name ] ) ) {
122 return 'unknown';
123 }
124
125 if ( ( $value === '' && $_COOKIE[ $name ] === '' )
126 || ($value !== '' && strpos( $_COOKIE[ $name ], $value ) !== false ) ) {
127 return 'accepted';
128 }
129 return 'unknown';
130 break;
131 default:
132 return isset( $_COOKIE[ $consent_method ] ) ? 'accepted' : 'unknown';
133 break;
134 }
135 }
136
137 /**
138 * Get consent methods.
139 *
140 * @return arr
141 */
142 public function get_consent_methods() {
143 $methods = array(
144 '0' => __( 'Show all ads even without consent.', 'advanced-ads' ),
145 'custom' => __( 'Cookie', 'advanced-ads' ),
146 );
147 /*
148 // https://wordpress.org/plugins/cookie-notice/
149 if ( class_exists( 'Cookie_Notice' ) ) {
150 $methods['cookie_notice_accepted'] = 'Cookie Notice by dFactory';
151 }
152 // https://wordpress.org/plugins/uk-cookie-consent/
153 if ( defined( 'CTCC_PLUGIN_URL' ) ) {
154 $methods['catAccCookies'] = 'Cookie Consent';
155 }
156 // https://wordpress.org/plugins/cookie-law-info/
157 if ( defined( 'CLI_PLUGIN_DEVELOPMENT_MODE' ) ) {
158 $methods['viewed_cookie_policy'] = 'GDPR Cookie Consent';
159 }
160 */
161 return $methods;
162 }
163 }
164