Edit File by line

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