@@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* A helper class for Filesystem checks.
|
||||
*
|
||||
* @author Time.ly Network, Inc.
|
||||
* @since 2.0
|
||||
* @package Ai1EC
|
||||
* @subpackage Ai1EC.Filesystem
|
||||
*/
|
||||
class Ai1ec_Filesystem_Checker {
|
||||
|
||||
|
||||
public function __construct() {
|
||||
include_once ABSPATH . 'wp-admin/includes/file.php';
|
||||
}
|
||||
/**
|
||||
* check if the path is writable. To make the check .
|
||||
*
|
||||
* @param string $path
|
||||
* @return boolean
|
||||
*/
|
||||
public function is_writable( $path ) {
|
||||
global $wp_filesystem;
|
||||
|
||||
// try without credentials
|
||||
$writable = WP_Filesystem( false, $path );
|
||||
// We consider the directory as writable if it uses the direct transport,
|
||||
// otherwise credentials would be needed
|
||||
if ( true === $writable ) {
|
||||
return true;
|
||||
}
|
||||
// if the user has FTP and sockets defined
|
||||
if (
|
||||
$this->is_ftp_or_sockets( $wp_filesystem->method ) &&
|
||||
$this->are_ftp_constants_defined()
|
||||
) {
|
||||
$creds = request_filesystem_credentials( '', $wp_filesystem->method, false, $path );
|
||||
$writable = WP_Filesystem( $creds, $path );
|
||||
if ( true === $writable ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (
|
||||
$this->is_ssh( $wp_filesystem->method ) &&
|
||||
$this->are_ssh_constants_defined()
|
||||
) {
|
||||
$creds = request_filesystem_credentials( '', $wp_filesystem->method, false, $path );
|
||||
$writable = WP_Filesystem( $creds, $path );
|
||||
if ( true === $writable ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if method is ssh
|
||||
*
|
||||
* @param strin $method
|
||||
* @return boolean
|
||||
*/
|
||||
public function is_ssh( $method ) {
|
||||
return 'ssh2' === $method;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if method is ftp or sockets
|
||||
*
|
||||
* @param string $method
|
||||
* @return boolean
|
||||
*/
|
||||
public function is_ftp_or_sockets( $method ) {
|
||||
return 'ftpext' === $method ||
|
||||
'ftpsockets' === $method;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if credentials for ssh are defined
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function are_ssh_constants_defined() {
|
||||
return defined('FTP_HOST') &&
|
||||
defined('FTP_PUBKEY') &&
|
||||
defined('FTP_PRIKEY');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if credentials for ftp are defined
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function are_ftp_constants_defined() {
|
||||
return defined('FTP_HOST') &&
|
||||
defined('FTP_USER') &&
|
||||
defined('FTP_PASS');
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a file using $wp_filesystem.
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $content
|
||||
*/
|
||||
public function put_contents( $file, $content ) {
|
||||
global $wp_filesystem;
|
||||
return $wp_filesystem->put_contents(
|
||||
$file,
|
||||
$content
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the content folder from Wordpress if available
|
||||
*
|
||||
* @return string the folder to use or ''
|
||||
*/
|
||||
public function get_ai1ec_static_dir_if_available() {
|
||||
global $wp_filesystem;
|
||||
// reset the filesystem to it's standard.
|
||||
WP_Filesystem();
|
||||
$content_dir = $wp_filesystem->wp_content_dir() . DIRECTORY_SEPARATOR
|
||||
. 'uploads' . DIRECTORY_SEPARATOR;
|
||||
$static_dir = trailingslashit( $content_dir . 'ai1ec_static' );
|
||||
if (
|
||||
! $wp_filesystem->is_dir( $static_dir ) &&
|
||||
! $wp_filesystem->mkdir( $static_dir )
|
||||
) {
|
||||
return '';
|
||||
}
|
||||
return $static_dir;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if specified file exists
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function check_file_exists( $file, $check_is_empty ) {
|
||||
try {
|
||||
if ( ! file_exists( $file ) ) {
|
||||
return false;
|
||||
} else {
|
||||
if ( $check_is_empty && 0 == filesize( $file ) ) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch ( Exception $e ) {
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user