PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.25
Advanced Ads – Ad Manager & AdSense v2.0.25
2.0.25 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 / one-click / class-page-parser.php
advanced-ads / modules / one-click Last commit date
admin 1 day ago modules 1 year ago class-helpers.php 1 year ago class-options.php 1 year ago class-page-parser.php 1 year ago main.php 2 years ago
class-page-parser.php
140 lines
1 <?php
2 /**
3 * Modules TrafficCop Page Parser.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 1.48.0
8 */
9
10 namespace AdvancedAds\Modules\OneClick;
11
12 use AdvancedAds\Framework\Interfaces\Integration_Interface;
13
14 defined( 'ABSPATH' ) || exit;
15
16 /**
17 * Modules TrafficCop Page Parser.
18 *
19 * phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
20 */
21 class Page_Parser implements Integration_Interface {
22
23 /**
24 * Hold page.
25 *
26 * @var string
27 */
28 private $page = '';
29
30 /**
31 * Get Parser Instance
32 *
33 * @return Page_Parser
34 */
35 public static function get_instance() {
36 static $instance;
37
38 if ( null === $instance ) {
39 $instance = new Page_Parser();
40 $instance->hooks();
41 }
42
43 return $instance;
44 }
45
46 /**
47 * Hook into WordPress.
48 *
49 * @return void
50 */
51 public function hooks(): void {
52 add_action( 'template_redirect', [ $this, 'start_buffer' ], -9999 );
53 add_action( 'wp_footer', [ $this, 'flush_page' ], 9999 );
54 }
55
56 /**
57 * Get page
58 *
59 * @return string
60 */
61 public function get_page() {
62 return $this->page;
63 }
64
65 /**
66 * Start of buffer.
67 *
68 * @return void
69 */
70 public function start_buffer() {
71 ob_start( [ $this, 'parse' ] );
72 }
73
74 /**
75 * Parse page for script tag
76 *
77 * @param string $buffer Page buffer.
78 *
79 * @return string
80 */
81 public function parse( $buffer ): string {
82 $this->page = $buffer;
83 $this->loop_script_tags();
84 $this->page = apply_filters( 'pubguru_current_page', $this->page ); // phpcs:ignore
85
86 return $this->page;
87 }
88
89 /**
90 * Flush page after footer
91 *
92 * @return void
93 */
94 public function flush_page() {
95 $buffer_status = ob_get_status();
96
97 if (
98 ! empty( $buffer_status ) &&
99 1 === $buffer_status['type'] &&
100 get_class( $this ) . '::parse' === $buffer_status['name']
101 ) {
102 ob_end_flush();
103 }
104 }
105
106 /**
107 * Loop through script tags.
108 *
109 * @return void
110 */
111 public function loop_script_tags() {
112 // Early bail!!
113 if ( ! has_filter( 'pubguru_page_script_tag' ) ) {
114 return;
115 }
116
117 $scripts = $this->get_script_tags();
118
119 foreach ( $scripts as $script ) {
120 $find = $script;
121 $replace = apply_filters( 'pubguru_page_script_tag', $script );
122 if ( false !== $replace ) {
123 $this->page = str_replace( $find, $replace, $this->page );
124 }
125 }
126 }
127
128 /**
129 * Get script tags only.
130 *
131 * @return array
132 */
133 private function get_script_tags() {
134 $matches = [];
135 preg_match_all( '/<script[\s\S]*?>[\s\S]*?<\/script>/i', $this->page, $matches );
136
137 return isset( $matches[0] ) ? $matches[0] : [];
138 }
139 }
140