PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.13.4
Advanced Ads – Ad Manager & AdSense v1.13.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 / utils.php
advanced-ads / classes Last commit date
EDD_SL_Plugin_Updater.php 7 years ago ad-ajax.php 7 years ago ad-debug.php 8 years ago ad-health-notices.php 7 years ago ad-model.php 8 years ago ad-select.php 9 years ago ad.php 7 years ago ad_ajax_callbacks.php 7 years ago ad_group.php 7 years ago ad_placements.php 7 years ago ad_type_abstract.php 8 years ago ad_type_content.php 7 years ago ad_type_dummy.php 7 years ago ad_type_group.php 8 years ago ad_type_image.php 7 years ago ad_type_plain.php 7 years ago checks.php 7 years ago compatibility.php 7 years ago display-conditions.php 7 years ago filesystem.php 8 years ago frontend_checks.php 7 years ago plugin.php 7 years ago upgrades.php 7 years ago utils.php 7 years ago visitor-conditions.php 7 years ago widget.php 7 years ago
utils.php
131 lines
1 <?php
2 class Advanced_Ads_Utils {
3 /**
4 * Merges multiple arrays, recursively, and returns the merged array.
5 *
6 * This function is similar to PHP's array_merge_recursive() function, but it
7 * handles non-array values differently. When merging values that are not both
8 * arrays, the latter value replaces the former rather than merging with it.
9 *
10 * Example:
11 * $link_options_1 = array( 'fragment' => 'x', 'class' => array( 'a', 'b' ) );
12 * $link_options_2 = array( 'fragment' => 'y', 'class' => array( 'c', 'd' ) );
13 * // This results in array( 'fragment' => 'y', 'class' => array( 'a', 'b', 'c', 'd' ) ).
14 *
15 * @param array $arrays An arrays of arrays to merge.
16 * @param bool $preserve_integer_keys (optional) If given, integer keys will be preserved and merged instead of appended.
17 * @return array The merged array.
18 * @copyright Copyright 2001 - 2013 Drupal contributors. License: GPL-2.0+. Drupal is a registered trademark of Dries Buytaert.
19 */
20 public static function merge_deep_array( array $arrays, $preserve_integer_keys = FALSE ) {
21 $result = array();
22 foreach ( $arrays as $array ) {
23 if ( ! is_array( $array ) ) { continue; }
24
25 foreach ( $array as $key => $value ) {
26 // Renumber integer keys as array_merge_recursive() does unless
27 // $preserve_integer_keys is set to TRUE. Note that PHP automatically
28 // converts array keys that are integer strings (e.g., '1') to integers.
29 if ( is_integer( $key ) && ! $preserve_integer_keys ) {
30 $result[] = $value;
31 }
32 // Recurse when both values are arrays.
33 elseif ( isset( $result[ $key ] ) && is_array( $result[ $key ] ) && is_array( $value ) ) {
34 $result[ $key ] = self::merge_deep_array( array( $result[ $key ], $value ), $preserve_integer_keys );
35 }
36 // Otherwise, use the latter value, overriding any previous value.
37 else {
38 $result[ $key ] = $value;
39 }
40 }
41 }
42 return $result;
43 }
44
45 /**
46 * Convert array of html attributes to string.
47 *
48 * @param array $data
49 * @return string
50 * @since untagged
51 */
52 public static function build_html_attributes( $data ) {
53 $result = '';
54 foreach ( $data as $_html_attr => $_values ){
55 if ( $_html_attr == 'style' ){
56 $_style_values_string = '';
57 foreach ( $_values as $_style_attr => $_style_values ){
58 if ( is_array( $_style_values ) ) {
59 $_style_values_string .= $_style_attr . ': ' .implode( ' ', $_style_values ). '; '; }
60 else {
61 $_style_values_string .= $_style_attr . ': ' .$_style_values. '; '; }
62 }
63 $result .= " style=\"$_style_values_string\"";
64 } else {
65 if ( is_array( $_values ) ) {
66 $_values_string = esc_attr( implode( ' ', $_values ) ); }
67 else {
68 $_values_string = esc_attr( $_values ); }
69 $result .= " $_html_attr=\"$_values_string\"";
70 }
71 }
72 return $result;
73 }
74
75 /**
76 * Get inline asset.
77 *
78 * @param str $content
79 * @return str $content
80 */
81 public static function get_inline_asset( $content ) {
82 if ( Advanced_Ads_Checks::active_autoptimize() || Advanced_Ads_Checks::active_wp_rocket() ) {
83 return '<!--noptimize-->' . $content . '<!--/noptimize-->';
84 }
85 // WP Fastest Cache Premium: "Render Blocking Js" feature.
86 if ( class_exists( 'WpFastestCache', false )
87 && '<script' === substr( $content, 0, 7 ) ) {
88 $content = substr_replace( $content, '<script data-wpfc-render="false"', 0, 7 );
89 }
90 return $content;
91 }
92
93 /**
94 * Get nested ads of an ad or a group.
95 *
96 * @param str $id Id.
97 * @param str $type Type (placement, ad or group).
98 * @return array of Advanced_Ads_Ad objects.
99 */
100 public static function get_nested_ads( $id, $type ) {
101 $result = array();
102
103 switch( $type ) {
104 case 'placement':
105 $placements = Advanced_Ads::get_ad_placements_array();
106 if ( isset( $placements[ $id ]['item'] ) ) {
107 $item = explode( '_', $placements[ $id ]['item'] );
108 if ( isset( $item[1] ) ) {
109 return self::get_nested_ads( $item[1], $item[0] );
110 }
111 }
112 case 'ad':
113 $ad = new Advanced_Ads_Ad( $id );
114 $result[] = $ad;
115 if ( 'group' === $ad->type && ! empty( $ad->output['group_id'] ) ) {
116 $result = array_merge( $result, self::get_nested_ads( $ad->output['group_id'], 'group' ) );
117 }
118 break;
119 case 'group':
120 $group = new Advanced_Ads_Group( $id );
121 $ads = $group->get_all_ads();
122 foreach ( $ads as $ad ) {
123 $result = array_merge( $result, self::get_nested_ads( $ad->ID, 'ad' ) );
124 }
125 break;
126 }
127 return $result;
128 }
129 }
130 ?>
131