PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.4
Advanced Ads – Ad Manager & AdSense v2.0.4
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 / inline-css.php
advanced-ads / classes Last commit date
ad-health-notices.php 1 year ago checks.php 1 year ago display-conditions.php 1 year ago filesystem.php 2 years ago frontend_checks.php 1 year ago in-content-injector.php 1 year ago inline-css.php 1 year ago utils.php 1 year ago visitor-conditions.php 1 year ago
inline-css.php
124 lines
1 <?php // phpcs:ignore WordPress.Files.FileName
2
3 use AdvancedAds\Abstracts\Ad;
4
5 /**
6 * Handles Advanced Ads Inline CSS settings.
7 */
8 class Advanced_Ads_Inline_Css {
9 /**
10 * Holds the state if inline css should be output or not.
11 *
12 * @var bool
13 */
14 protected $add_inline_css;
15
16 /**
17 * Initialize the module.
18 */
19 public function __construct() {
20
21 /**
22 * Filters the state if inline css should be output or not.
23 * Ajax CB container could have added inline css already.
24 *
25 * Set to false if an addon output inline css before the main plugin.
26 *
27 * @param bool Contains the state.
28 */
29 $this->add_inline_css = apply_filters( 'advanced-ads-output-inline-css', true );
30 if ( ! $this->add_inline_css ) {
31 return;
32 }
33
34 // Add inline css to the tcf container.
35 $this->check_tcf_option();
36 }
37
38 /**
39 * Adds inline css.
40 *
41 * @param array $wrapper Add wrapper array.
42 * @param string $css Custom inline css.
43 * @param bool|null $global_output Whether this ad is using cache-busting.
44 *
45 * @return array
46 */
47 public function add_css( $wrapper, $css, $global_output ) {
48 $this->add_inline_css = $this->add_inline_css && false !== $global_output;
49 if ( ! $this->add_inline_css ) {
50 return $wrapper;
51 }
52
53 $styles = $this->get_styles_by_string( $css );
54 $wrapper['style'] = empty( $wrapper['style'] ) ? $styles : array_merge( $wrapper['style'], $styles );
55 $this->add_inline_css = false;
56
57 return $wrapper;
58 }
59
60 /**
61 * Extend TCF output with a container containing inline css.
62 *
63 * @param string $output The output string.
64 * @param Ad $ad Ad instance.
65 *
66 * @return string
67 */
68 public function add_tcf_container( $output, Ad $ad ) {
69 $inline_css = $ad->get_prop( 'inline-css' );
70
71 if (
72 ! $ad->get_prop( 'ad_args.global_output' )
73 || empty( $inline_css )
74 || strpos( $output, '<div class="tcf-container"' ) === 0
75 ) {
76 return $output;
77 }
78
79 return sprintf(
80 '<div class="tcf-container" style="' . $inline_css . '">%s</div>',
81 $output
82 );
83 }
84
85 /**
86 * Reformat css styles string to array.
87 *
88 * @param string $string CSS-Style.
89 *
90 * @return array
91 */
92 private function get_styles_by_string( string $string ): array { // phpcs:ignore
93 $chunks = array_chunk( preg_split( '/[:;]/', $string ), 2 );
94 array_walk_recursive(
95 $chunks,
96 function ( &$value ) {
97 $value = trim( $value );
98 }
99 );
100
101 $keys = array_filter( array_column( $chunks, 0 ) );
102 $values = array_filter( array_column( $chunks, 1 ) );
103
104 $length = min( count( $keys ), count( $values ) );
105
106 return array_combine( array_slice( $keys, 0, $length ), array_slice( $values, 0, $length ) );
107 }
108
109 /**
110 * If TCF is active, i.e. there is a TCF container, add the options to this container.
111 */
112 private function check_tcf_option() {
113 static $privacy_options;
114 if ( null === $privacy_options ) {
115 $privacy_options = Advanced_Ads_Privacy::get_instance()->options();
116 }
117
118 if ( ! empty( $privacy_options['enabled'] ) && 'on' === $privacy_options['enabled'] && 'iab_tcf_20' === $privacy_options['consent-method'] ) {
119 add_filter( 'advanced-ads-output-final', [ $this, 'add_tcf_container' ], 20, 2 );
120 $this->add_inline_css = false;
121 }
122 }
123 }
124