PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.29.0
Advanced Ads – Ad Manager & AdSense v1.29.0
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
EDD_SL_Plugin_Updater.php 4 years ago ad-ajax.php 5 years ago ad-debug.php 6 years ago ad-health-notices.php 5 years ago ad-model.php 5 years ago ad-select.php 9 years ago ad.php 4 years ago ad_ajax_callbacks.php 5 years ago ad_group.php 4 years ago ad_placements.php 4 years ago ad_type_abstract.php 5 years ago ad_type_content.php 5 years ago ad_type_dummy.php 5 years ago ad_type_group.php 5 years ago ad_type_image.php 5 years ago ad_type_plain.php 4 years ago checks.php 5 years ago compatibility.php 4 years ago display-conditions.php 4 years ago filesystem.php 8 years ago frontend-notices.php 6 years ago frontend_checks.php 4 years ago inline-css.php 4 years ago plugin.php 4 years ago upgrades.php 6 years ago utils.php 5 years ago visitor-conditions.php 4 years ago widget.php 4 years ago
inline-css.php
114 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 ) {
91 $chunks = array_chunk( preg_split( '/[:;]/', $string ), 2 );
92 array_walk_recursive( $chunks, function( &$value ) {
93 $value = trim( $value );
94 } );
95
96 return array_combine( array_filter( array_column( $chunks, 0 ) ), array_filter( array_column( $chunks, 1 ) ) );
97 }
98
99 /**
100 * If TCF is active, i.e. there is a TCF container, add the options to this container.
101 */
102 private function check_tcf_option() {
103 static $privacy_options;
104 if ( $privacy_options === null ) {
105 $privacy_options = Advanced_Ads_Privacy::get_instance()->options();
106 }
107
108 if ( ! empty( $privacy_options['enabled'] ) && $privacy_options['enabled'] === 'on' && $privacy_options['consent-method'] === 'iab_tcf_20' ) {
109 add_filter( 'advanced-ads-output-final', array( $this, 'add_tcf_container' ), 20, 2 );
110 $this->add_inline_css = false;
111 }
112 }
113 }
114