PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.29.0
Advanced Ads – Ad Manager & AdSense v1.29.0
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 / admin / admin.php
advanced-ads / modules / privacy / admin Last commit date
assets 5 years ago views 4 years ago admin.php 5 years ago
admin.php
214 lines
1 <?php
2
3 /**
4 * Admin class for privacy settings.
5 */
6 class Advanced_Ads_Privacy_Admin {
7 /**
8 * Singleton instance of the plugin
9 *
10 * @var Advanced_Ads_Privacy_Admin
11 */
12 protected static $instance;
13
14 /**
15 * Initialize the module
16 */
17 private function __construct() {
18 // add module settings to Advanced Ads settings page
19 add_action( 'advanced-ads-settings-init', array( $this, 'settings_init' ), 20 );
20 add_filter( 'advanced-ads-setting-tabs', array( $this, 'setting_tabs' ), 20 );
21
22 // additional ad options
23 add_action( 'advanced-ads-ad-params-after', array( $this, 'render_ad_options' ), 20 );
24 add_filter( 'advanced-ads-save-options', array( $this, 'save_ad_options' ), 10, 2 );
25 }
26
27 /**
28 * Return an instance of Advanced_Ads_Privacy_Admin
29 *
30 * @return Advanced_Ads_Privacy_Admin
31 */
32 public static function get_instance() {
33 // If the single instance hasn't been set, set it now.
34 if ( is_null( self::$instance ) ) {
35 self::$instance = new self();
36 }
37
38 return self::$instance;
39 }
40
41 /**
42 * Add tracking settings tab.
43 *
44 * @param array $tabs existing setting tabs.
45 *
46 * @return array $tabs setting tabs with AdSense tab attached
47 * @since 1.8.30
48 */
49 public function setting_tabs( array $tabs ) {
50 $tabs['privacy'] = array(
51 'page' => ADVADS_PRIVACY_SLUG . '-settings',
52 'group' => ADVADS_PRIVACY_SLUG,
53 'tabid' => 'privacy',
54 'title' => __( 'Privacy', 'advanced-ads' ),
55 );
56
57 return $tabs;
58 }
59
60 /**
61 * Add settings to settings page
62 */
63 public function settings_init() {
64 register_setting( ADVADS_PRIVACY_SLUG, Advanced_Ads_Privacy::OPTION_KEY, array( $this, 'sanitize_settings' ) );
65
66 /**
67 * Allow Ad Admin to save privacy options.
68 *
69 * @param array $settings Array with allowed options.
70 *
71 * @return array
72 */
73 add_filter( 'advanced-ads-ad-admin-options', function( $options ) {
74 $options[] = ADVADS_PRIVACY_SLUG;
75
76 return $options;
77 } );
78
79 add_settings_section(
80 ADVADS_PRIVACY_SLUG . '_settings_section',
81 '',
82 '__return_empty_string',
83 ADVADS_PRIVACY_SLUG . '-settings'
84 );
85
86 add_settings_field(
87 'enable-privacy-module',
88 __( 'Enable Privacy module', 'advanced-ads' ),
89 array( $this, 'render_settings_enable_module' ),
90 ADVADS_PRIVACY_SLUG . '-settings',
91 ADVADS_PRIVACY_SLUG . '_settings_section',
92 array( 'label_for' => Advanced_Ads_Privacy::OPTION_KEY . '_enabled' )
93 );
94 }
95
96 /**
97 * Sanitize settings.
98 *
99 * @param array $options Privacy options.
100 *
101 * @return array
102 */
103 public function sanitize_settings( $options ) {
104 $options['custom-cookie-name'] = isset( $options['custom-cookie-name'] ) ? trim( $options['custom-cookie-name'] ) : '';
105 $options['custom-cookie-value'] = isset( $options['custom-cookie-value'] ) ? trim( $options['custom-cookie-value'] ) : '';
106
107 return $options;
108 }
109
110 /**
111 * Render enable module setting
112 */
113 public function render_settings_enable_module() {
114 $options = Advanced_Ads_Privacy::get_instance()->options();
115 $module_enabled = isset( $options['enabled'] );
116 $methods = array(
117 '' => array(
118 'label' => __( 'Show all ads even without consent', 'advanced-ads' ),
119 ),
120 'custom' => array(
121 'label' => __( 'Cookie', 'advanced-ads' ),
122 'manual_url' => ADVADS_URL . 'manual/ad-cookie-consent/#utm_source=advanced-ads&utm_medium=link&utm_campaign=privacy-tab',
123 ),
124 'iab_tcf_20' => array(
125 'label' => sprintf(
126 // translators: %s is a string with various CMPs (companies) that support the TCF standard
127 __( 'TCF v2.0 integration (e.g., %s)', 'advanced-ads' ),
128 'Quantcast Choices'
129 ),
130 'manual_url' => ADVADS_URL . 'manual/tcf-consent-wordpress/#utm_source=advanced-ads&utm_medium=link&utm_campaign=privacy-tab',
131 ),
132 );
133 $current_method = isset( $options['consent-method'] ) ? $options['consent-method'] : '';
134 $custom_cookie_name = isset( $options['custom-cookie-name'] ) ? $options['custom-cookie-name'] : '';
135 $custom_cookie_value = isset( $options['custom-cookie-value'] ) ? $options['custom-cookie-value'] : '';
136 $show_non_personalized_adsense = isset( $options['show-non-personalized-adsense'] );
137 $link_default_attrs = array(
138 'href' => esc_url( ADVADS_URL . 'add-ons/advanced-ads-pro/#utm_source=advanced-ads&utm_medium=link&utm_campaign=privacy-cache' ),
139 'target' => '_blank',
140 );
141 $pro_link_attrs = apply_filters( 'advanced-ads-privacy-custom-link-attributes', $link_default_attrs );
142 if ( ! array_key_exists( 'href', $pro_link_attrs ) ) {
143 $pro_link_attrs = wp_parse_args( $pro_link_attrs, $link_default_attrs );
144 }
145 $opening_link_to_pro = sprintf(
146 '<a %s>',
147 implode(
148 ' ',
149 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- attrs get escaped below.
150 array_map(
151 function( $key, $value ) {
152 return sprintf( '%s="%s"', $key, esc_attr( $value ) );
153 },
154 array_keys( $pro_link_attrs ),
155 $pro_link_attrs
156 )
157 )
158 );
159
160 wp_enqueue_script( Advanced_Ads_Privacy::OPTION_KEY, ADVADS_PRIVACY_BASE_URL . 'admin/assets/js/privacy.js', array( 'jquery' ), '1.19.1', true );
161 wp_localize_script( Advanced_Ads_Privacy::OPTION_KEY, 'advads_privacy', array( 'option_key' => Advanced_Ads_Privacy::OPTION_KEY ) );
162
163 require ADVADS_PRIVACY_BASE_PATH . 'admin/views/setting-general.php';
164 }
165
166 /**
167 * Add options to ad edit page
168 *
169 * @param Advanced_Ads_Ad $ad Ad object.
170 */
171 public function render_ad_options( Advanced_Ads_Ad $ad ) {
172 if ( empty( $ad->id ) ) {
173 return;
174 }
175
176 $privacy = Advanced_Ads_Privacy::get_instance();
177 $privacy_options = $privacy->options();
178 // module is not enabled.
179 if ( ! isset( $privacy_options['enabled'] ) ) {
180 return;
181 }
182
183 // Don't add override option if the ad is adsense and tcf is enabled, or if the ad is image or dummy.
184 $skip_option = ( $ad->type === 'adsense' && $privacy_options['consent-method'] === 'iab_tcf_20' ) || ! $privacy->ad_type_needs_consent( $ad->type );
185
186 if ( (bool) apply_filters( 'advanced-ads-ad-privacy-hide-ignore-consent', $skip_option, $ad, $privacy_options ) ) {
187 return;
188 }
189
190 $ignore_consent = isset( $ad->options()['privacy']['ignore-consent'] );
191
192 include ADVADS_PRIVACY_BASE_PATH . 'admin/views/setting-ad-ignore-consent.php';
193 }
194
195 /**
196 * Save ad options.
197 *
198 * @param array $options Current options, default empty.
199 *
200 * @return array
201 */
202 public function save_ad_options( $options = array() ) {
203 // phpcs:disable WordPress.Security.NonceVerification.Missing
204 if ( isset( $_POST['advanced_ad']['privacy'] ) ) {
205 $options['privacy'] = $_POST['advanced_ad']['privacy'];
206 } else {
207 unset( $options['privacy'] );
208 }
209 // phpcs:enable
210
211 return $options;
212 }
213 }
214