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