PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.39.2
Advanced Ads – Ad Manager & AdSense v1.39.2
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 / filesystem.php
advanced-ads / classes Last commit date
Advanced_Ads_Modal.php 3 years ago EDD_SL_Plugin_Updater.php 4 years ago ad-ajax.php 3 years ago ad-debug.php 3 years ago ad-expiration.php 3 years ago ad-health-notices.php 3 years ago ad-model.php 3 years ago ad-select.php 3 years ago ad.php 3 years ago ad_ajax_callbacks.php 3 years ago ad_group.php 3 years ago ad_placements.php 3 years ago ad_type_abstract.php 3 years ago ad_type_content.php 3 years ago ad_type_dummy.php 3 years ago ad_type_group.php 3 years ago ad_type_image.php 3 years ago ad_type_plain.php 3 years ago checks.php 3 years ago compatibility.php 3 years ago display-conditions.php 3 years ago filesystem.php 3 years ago frontend-notices.php 3 years ago frontend_checks.php 3 years ago in-content-injector.php 3 years ago inline-css.php 3 years ago plugin.php 3 years ago upgrades.php 6 years ago utils.php 3 years ago visitor-conditions.php 3 years ago widget.php 3 years ago
filesystem.php
164 lines
1 <?php
2 /**
3 * @since 1.7.17
4 */
5 class Advanced_Ads_Filesystem {
6 /**
7 * Singleton instance of the class
8 *
9 * @var Advanced_Ads_Filesystem
10 */
11 protected static $instance;
12
13 /**
14 * Return an instance of Advanced_Ads_Filesystem
15 *
16 * @return Advanced_Ads_Filesystem
17 */
18 public static function get_instance() {
19 if ( null === self::$instance ) {
20 self::$instance = new self;
21 }
22
23 return self::$instance;
24 }
25
26 private function __construct() {}
27
28 /**
29 * Connect to the filesystem.
30 *
31 * @param array $directories A list of directories. If any of these do
32 * not exist, a WP_Error object will be returned.
33 * @return bool|WP_Error True if able to connect, false or a WP_Error otherwise.
34 */
35 public function fs_connect( $directories = [] ) {
36 global $wp_filesystem;
37 $directories = ( is_array( $directories ) && count( $directories ) ) ? $directories : [ WP_CONTENT_DIR ];
38
39 // This will output a credentials form in event of failure, We don't want that, so just hide with a buffer.
40 ob_start();
41 $credentials = request_filesystem_credentials( '', '', false, $directories[0] );
42 ob_end_clean();
43
44 if ( false === $credentials ) {
45 return false;
46 }
47
48 if ( ! WP_Filesystem( $credentials ) ) {
49 $error = true;
50 if ( is_object( $wp_filesystem ) && $wp_filesystem->errors->get_error_code() ) {
51 $error = $wp_filesystem->errors;
52 }
53 // Failed to connect, Error and request again.
54 ob_start();
55 request_filesystem_credentials( '', '', $error, $directories[0] );
56 ob_end_clean();
57 return false;
58 }
59
60 if ( ! is_object( $wp_filesystem) ) {
61 return new WP_Error( 'fs_unavailable', __( 'Could not access filesystem.', 'advanced-ads' ) );
62 }
63
64 if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
65 return new WP_Error( 'fs_error', __( 'Filesystem error.', 'advanced-ads' ), $wp_filesystem->errors);
66 }
67
68 foreach ( (array) $directories as $dir ) {
69 switch ( $dir ) {
70 case ABSPATH:
71 if ( ! $wp_filesystem->abspath() )
72 return new WP_Error( 'fs_no_root_dir', __( 'Unable to locate WordPress root directory.', 'advanced-ads' ) );
73 break;
74 case WP_CONTENT_DIR:
75 if ( ! $wp_filesystem->wp_content_dir() )
76 return new WP_Error( 'fs_no_content_dir', __( 'Unable to locate WordPress content directory (wp-content).', 'advanced-ads' ) );
77 break;
78 default:
79 if ( ! $wp_filesystem->find_folder( $dir ) )
80 return new WP_Error( 'fs_no_folder', sprintf( __( 'Unable to locate needed folder (%s).', 'advanced-ads' ) , esc_html( basename( $dir ) ) ) );
81 break;
82 }
83 }
84
85 return true;
86 }
87
88 /**
89 * Replace the 'direct' absolute path with the Filesystem API path. Useful only when the 'direct' method is not used.
90 * Works only with folders.
91 * Check https://codex.wordpress.org/Filesystem_API for info
92 *
93 * @param string existing path
94 * @return string normalized path
95 */
96 public function normalize_path( $path ) {
97 global $wp_filesystem;
98 return $wp_filesystem->find_folder( $path );
99 }
100
101 /**
102 * Recursive directory creation based on full path.
103 *
104 * @param string $target Full path to attempt to create.
105 * @return bool Whether the path was created. True if path already exists.
106 */
107 public function mkdir_p( $target ) {
108 global $wp_filesystem;
109
110 if ( $wp_filesystem instanceof WP_Filesystem_Direct ) {
111 return wp_mkdir_p( $target );
112 }
113
114 $target = rtrim($target, '/');
115 if ( empty($target) ) {
116 $target = '/';
117 }
118
119 if ( $wp_filesystem->exists( $target ) ) {
120 return $wp_filesystem->is_dir( $target );
121 }
122
123 $target_parent = dirname( $target );
124 while ( '.' != $target_parent && ! $wp_filesystem->is_dir( $target_parent ) ) {
125 $target_parent = dirname( $target_parent );
126 }
127
128 $folder_parts = explode( '/', substr( $target, strlen( $target_parent ) + 1 ) );
129 for ( $i = 1, $c = count( $folder_parts ); $i <= $c; $i++ ) {
130 $dir = $target_parent . '/' . implode( '/', array_slice( $folder_parts, 0, $i ) );
131 if ( $wp_filesystem->exists( $dir ) ) { continue; }
132
133 if ( ! $wp_filesystem->mkdir( $dir ) ) {
134 return false;
135 }
136 }
137 return true;
138 }
139
140 /**
141 * Print the filesystem credentials modal when needed.
142 */
143 public function print_request_filesystem_credentials_modal() {
144 $filesystem_method = get_filesystem_method();
145 ob_start();
146 $filesystem_credentials_are_stored = request_filesystem_credentials( self_admin_url() );
147 ob_end_clean();
148 $request_filesystem_credentials = ( $filesystem_method != 'direct' && ! $filesystem_credentials_are_stored );
149 if ( ! $request_filesystem_credentials ) {
150 return;
151 }
152 ?>
153 <div id="advanced-ads-rfc-dialog" class="notification-dialog-wrap request-filesystem-credentials-dialog">
154 <div class="notification-dialog-background"></div>
155 <div class="notification-dialog" role="dialog" aria-labelledby="request-filesystem-credentials-title" tabindex="0">
156 <div class="request-filesystem-credentials-dialog-content">
157 <?php request_filesystem_credentials( site_url() ); ?>
158 </div>
159 </div>
160 </div>
161 <?php
162 }
163 }
164