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 / ad-blocker / classes / plugin.php
advanced-ads / modules / ad-blocker / classes Last commit date
plugin.php 1 year ago
plugin.php
177 lines
1 <?php // phpcs:ignore WordPress.Files.FileName
2
3 /**
4 * Ad blocker frontend functionality.
5 */
6 class Advanced_Ads_Ad_Blocker {
7 /**
8 * Singleton instance of the plugin
9 *
10 * @var Advanced_Ads_Ad_Blocker
11 */
12 protected static $instance;
13
14 /**
15 * Module options
16 *
17 * @var array (if loaded)
18 */
19 protected $options;
20
21 /**
22 * Plugins directory URL
23 *
24 * @var string
25 */
26 protected $plugins_url;
27
28 /**
29 * Initialize the module
30 */
31 private function __construct() {
32 $options = $this->options();
33 if (
34 ! empty( $options['use-adblocker'] ) &&
35 ! empty( $options['folder_name'] ) &&
36 ! empty( $options['module_can_work'] ) &&
37 $options['upload_dir']
38 ) {
39 $this->plugins_url = plugins_url();
40 add_action( 'wp_enqueue_scripts', [ $this, 'edit_script_output' ], 101 );
41 }
42 }
43
44 /**
45 * Return an instance of Advanced_Ads_Ad_Blocker
46 *
47 * @return Advanced_Ads_Ad_Blocker
48 * @since 1.0.0
49 */
50 public static function get_instance() {
51 // If the single instance hasn't been set, set it now.
52 if ( null === self::$instance ) {
53 self::$instance = new self();
54 }
55
56 return self::$instance;
57 }
58
59 /**
60 * Edit the script output (URL's) for all advanced-ads plugins
61 *
62 * @since 1.0.0
63 */
64 public function edit_script_output() {
65 global $wp_scripts, $wp_styles;
66
67 $options = $this->options();
68
69 // Check if the asset folder is set (check if this is installed yet).
70 if ( isset( $options['folder_name'] ) && '' !== $options['folder_name'] ) {
71 // Loop through all script files and change the URL from which they are loaded.
72 if ( is_object( $wp_scripts ) && is_array( $wp_scripts->registered ) ) {
73 foreach ( $wp_scripts->registered as $script ) {
74 if ( $script->src && is_string( $script->src ) && strpos( $script->src, 'advanced-ads' ) !== false ) {
75 $script->src = $this->clean_up_filename( $script->src );
76 }
77 }
78 }
79
80 // Loop through all style files and change the URL from which they are loaded.
81 if ( is_array( $wp_styles->registered ) ) {
82 foreach ( $wp_styles->registered as $style ) {
83 if ( false !== strpos( $style->src, 'advanced-ads' ) ) {
84 $style->src = $this->clean_up_filename( $style->src );
85 }
86 }
87 }
88 }
89 }
90
91 /**
92 * Clean up the filename
93 *
94 * @param string $file File to clean up.
95 *
96 * @return string
97 */
98 public function clean_up_filename( $file ) {
99 $options = $this->options();
100 $upload_dir = $options['upload_dir'];
101 $url = str_replace( $this->plugins_url, '', $file );
102
103 if ( isset( $options['lookup_table'][ $url ] ) && is_array( $options['lookup_table'][ $url ] ) && isset( $options['lookup_table'][ $url ]['path'] ) ) {
104 return trailingslashit( $upload_dir['baseurl'] ) . trailingslashit( $options['folder_name'] ) . $options['lookup_table'][ $url ]['path'];
105 } elseif ( isset( $options['lookup_table'][ $url ] ) ) {
106 return trailingslashit( $upload_dir['baseurl'] ) . trailingslashit( $options['folder_name'] ) . $options['lookup_table'][ $url ];
107 }
108 return $file;
109 }
110
111 /**
112 * Return module options
113 *
114 * @param bool $force Whether the options should be fetched regardless if it has already been done. Is needed in AJAX calls.
115 *
116 * @return array
117 */
118 public function options( $force = false ) {
119 if ( ! isset( $this->options ) || $force ) {
120 if ( function_exists( 'is_multisite' ) && is_multisite() ) {
121 global $current_site;
122 // Switch to main blog.
123 switch_to_blog( $current_site->blog_id );
124
125 $this->options = get_option( ADVADS_AB_SLUG, [] );
126 $advads_options = (array) get_option( ADVADS_SETTINGS_ADBLOCKER, [] );
127 $upload_dir = wp_upload_dir();
128
129 restore_current_blog();
130 } else {
131 $this->options = get_option( ADVADS_AB_SLUG, [] );
132 $advads_options = Advanced_Ads::get_instance()->get_adblocker_options();
133 $upload_dir = wp_upload_dir();
134 }
135
136 if ( ! $this->options ) {
137 $this->options = [];
138 }
139
140 $this->options['use-adblocker'] = ! empty( $advads_options['use-adblocker'] );
141 if ( $upload_dir['error'] ) {
142 $this->options['upload_dir'] = false;
143 } else {
144 $upload_dir['url'] = set_url_scheme( $upload_dir['url'] );
145 $upload_dir['baseurl'] = set_url_scheme( $upload_dir['baseurl'] );
146
147 // array, that has indices 'basedir' and 'baseurl'.
148 $this->options['upload_dir'] = $upload_dir;
149 }
150 }
151 return $this->options;
152 }
153
154 /**
155 * Update module options.
156 *
157 * @param array $new_options New options.
158 */
159 public function update_options( $new_options ) {
160 if ( ! is_array( $new_options ) ) {
161 return;
162 }
163
164 update_option( ADVADS_AB_SLUG, $new_options );
165
166 // We do not save the following keys to the database.
167 if ( isset( $this->options['use-adblocker'] ) ) {
168 $new_options['use-adblocker'] = $this->options['use-adblocker'];
169 }
170 if ( isset( $this->options['upload_dir'] ) ) {
171 $new_options['upload_dir'] = $this->options['upload_dir'];
172 }
173
174 $this->options = $new_options;
175 }
176 }
177