PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.24
Advanced Ads – Ad Manager & AdSense v2.0.24
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 1 year ago admin.php 1 year ago
admin.php
213 lines
1 <?php // phpcs:ignoreFile
2
3 use AdvancedAds\Abstracts\Ad;
4 use AdvancedAds\Framework\Utilities\Params;
5
6 /**
7 * Admin class for privacy settings.
8 */
9 class Advanced_Ads_Privacy_Admin {
10 /**
11 * Singleton instance of the plugin
12 *
13 * @var Advanced_Ads_Privacy_Admin
14 */
15 protected static $instance;
16
17 /**
18 * Initialize the module
19 */
20 private function __construct() {
21 add_action( 'advanced-ads-settings-init', [ $this, 'settings_init' ], 20 );
22 add_filter( 'advanced-ads-setting-tabs', [ $this, 'setting_tabs' ], 20 );
23 add_action( 'advanced-ads-ad-params-after', [ $this, 'render_ad_options' ], 20 );
24 add_action( 'advanced-ads-ad-pre-save', [ $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'] = [
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, [ $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(
74 'advanced-ads-ad-admin-options',
75 function ( $options ) {
76 $options[] = ADVADS_PRIVACY_SLUG;
77
78 return $options;
79 }
80 );
81
82 add_settings_section(
83 ADVADS_PRIVACY_SLUG . '_settings_section',
84 '',
85 '__return_empty_string',
86 ADVADS_PRIVACY_SLUG . '-settings'
87 );
88
89 add_settings_field(
90 'enable-privacy-module',
91 __( 'Enable Privacy module', 'advanced-ads' ),
92 [ $this, 'render_settings_enable_module' ],
93 ADVADS_PRIVACY_SLUG . '-settings',
94 ADVADS_PRIVACY_SLUG . '_settings_section',
95 [ 'label_for' => Advanced_Ads_Privacy::OPTION_KEY . '_enabled' ]
96 );
97 }
98
99 /**
100 * Sanitize settings.
101 *
102 * @param array $options Privacy options.
103 *
104 * @return array
105 */
106 public function sanitize_settings( $options ) {
107 $options['custom-cookie-name'] = isset( $options['custom-cookie-name'] ) ? trim( $options['custom-cookie-name'] ) : '';
108 $options['custom-cookie-value'] = isset( $options['custom-cookie-value'] ) ? trim( $options['custom-cookie-value'] ) : '';
109
110 return $options;
111 }
112
113 /**
114 * Render enable module setting
115 */
116 public function render_settings_enable_module() {
117 $options = Advanced_Ads_Privacy::get_instance()->options();
118 $module_enabled = isset( $options['enabled'] );
119 $methods = [
120 '' => [
121 'label' => __( 'Show all ads even without consent', 'advanced-ads' ),
122 ],
123 'custom' => [
124 'label' => __( 'Cookie', 'advanced-ads' ),
125 'manual_url' => 'https://wpadvancedads.com/manual/ad-cookie-consent/?utm_source=advanced-ads&utm_medium=link&utm_campaign=privacy-tab',
126 ],
127 'iab_tcf_20' => [
128 'label' => __( 'IAB Transparency and Consent Framework (TCF) integration', 'advanced-ads' ),
129 'manual_url' => 'https://wpadvancedads.com/manual/tcf-consent-wordpress/?utm_source=advanced-ads&utm_medium=link&utm_campaign=privacy-tab',
130 ],
131 ];
132 $current_method = isset( $options['consent-method'] ) ? $options['consent-method'] : '';
133 $custom_cookie_name = isset( $options['custom-cookie-name'] ) ? $options['custom-cookie-name'] : '';
134 $custom_cookie_value = isset( $options['custom-cookie-value'] ) ? $options['custom-cookie-value'] : '';
135 $show_non_personalized_adsense = isset( $options['show-non-personalized-adsense'] );
136 $link_default_attrs = [
137 'href' => 'https://wpadvancedads.com/add-ons/advanced-ads-pro/?utm_source=advanced-ads&utm_medium=link&utm_campaign=privacy-cache',
138 'target' => '_blank',
139 ];
140 $pro_link_attrs = apply_filters( 'advanced-ads-privacy-custom-link-attributes', $link_default_attrs );
141 if ( ! array_key_exists( 'href', $pro_link_attrs ) ) {
142 $pro_link_attrs = wp_parse_args( $pro_link_attrs, $link_default_attrs );
143 }
144 $opening_link_to_pro = sprintf(
145 '<a %s>',
146 implode(
147 ' ',
148 array_map(
149 function ( $key, $value ) {
150 return sprintf( '%s="%s"', $key, esc_attr( $value ) );
151 },
152 array_keys( $pro_link_attrs ),
153 $pro_link_attrs
154 )
155 )
156 );
157
158 wp_enqueue_script( Advanced_Ads_Privacy::OPTION_KEY, ADVADS_PRIVACY_BASE_URL . 'admin/assets/js/privacy.js', [ 'jquery' ], '1.19.1', true );
159 wp_localize_script( Advanced_Ads_Privacy::OPTION_KEY, 'advads_privacy', [ 'option_key' => Advanced_Ads_Privacy::OPTION_KEY ] );
160
161 require ADVADS_PRIVACY_BASE_PATH . 'admin/views/setting-general.php';
162 }
163
164 /**
165 * Add options to ad edit page
166 *
167 * @param Ad $ad Ad object.
168 */
169 public function render_ad_options( Ad $ad ) {
170 if ( empty( $ad->get_id() ) ) {
171 return;
172 }
173
174 $privacy = Advanced_Ads_Privacy::get_instance();
175 $privacy_options = $privacy->options();
176 // module is not enabled.
177 if ( ! isset( $privacy_options['enabled'] ) ) {
178 return;
179 }
180
181 // Don't add override option if the ad is adsense, image or dummy.
182 $skip_option = $ad->is_type( 'adsense' ) || ! $privacy->ad_type_needs_consent( $ad->get_type() );
183
184 if ( (bool) apply_filters( 'advanced-ads-ad-privacy-hide-ignore-consent', $skip_option, $ad, $privacy_options ) ) {
185 return;
186 }
187
188 $ignore_consent = isset( $ad->get_data()['privacy']['ignore-consent'] );
189
190 include ADVADS_PRIVACY_BASE_PATH . 'admin/views/setting-ad-ignore-consent.php';
191 }
192
193 /**
194 * Save ad options.
195 *
196 * @param Ad $ad Ad instance.
197 * @param array $post_data Post data array.
198 *
199 * @return void
200 */
201 public function save_ad_options( Ad $ad, $post_data ): void {
202 if ( wp_verify_nonce( sanitize_key( Params::get( '_wpnonce' ) ), 'bulk-posts' ) || wp_verify_nonce( sanitize_key( Params::post( '_inline_edit' ) ), 'inlineeditnonce' ) ) {
203 // Don't mess with bulk and quick edit.
204 return;
205 }
206 if ( isset( $post_data['privacy'] ) ) {
207 $ad->set_prop( 'privacy', wp_unslash( $post_data['privacy'] ) );
208 } else {
209 $ad->unset_prop( 'privacy' );
210 }
211 }
212 }
213