Viewing file: class.redux_filesystem.php (5.35 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
if ( ! defined( 'ABSPATH' ) ) { exit; }
if ( ! class_exists( 'Redux_Filesystem' ) ) { class Redux_Filesystem { private $parent = null;
public $fs_object = null;
public function __construct( $parent ) { $parent->filesystem = $this; $this->parent = $parent; add_action( 'all_admin_notices', array( $this, 'ftp_form' ) ); }
public function ftp_form() { if ( isset( $this->ftp_form ) && ! empty( $this->ftp_form ) ) { echo '<div class="wrap"><div class="error"><p>'; echo __( 'Unable to create a required directory. Please ensure that', 'redux-framework' ); echo ' <code>' . Redux_Helpers::cleanFilePath( trailingslashit( WP_CONTENT_DIR ) ) . '/uploads/</code> '; echo __( 'has the proper read/write permissions or enter your FTP information below.', 'redux-framework' ); echo '</p></div><h2></h2>' . $this->ftp_form . '</div>'; } }
public function execute( $action, $file = '', $params = '' ) {
if ( ! empty ( $params ) ) { extract( $params ); }
// Setup the filesystem with creds require_once( ABSPATH . '/wp-admin/includes/file.php' ); require_once( ABSPATH . '/wp-admin/includes/template.php' );
if ( $this->parent->args['menu_type'] == 'submenu' ) { $page_parent = $this->parent->args['page_parent']; $base = $page_parent . '?page=' . $this->parent->args['page_slug']; } else { $base = 'admin.php?page=' . $this->parent->args['page_slug']; }
$url = wp_nonce_url( $base );
if ( ! isset( $this->creds ) ) { if ( false === ( $this->creds = request_filesystem_credentials( $url, 'direct', false, false ) ) ) { $res = $this->do_action( $action, $file, $params ); if ( $res ) { $this->creds = true; } else { return true; } } }
if ( ! WP_Filesystem( $this->creds ) ) {
$res = $this->do_action( $action, $file, $params ); if ( $res ) { return $res; } else if ( is_admin() ) { // our credentials were no good, ask the user for them again ob_start(); request_filesystem_credentials( $url, '', true, false ); $this->ftp_form = ob_get_contents(); ob_end_clean();
return true; } else { return false; }
}
return $this->do_action( $action, $file, $params ); }
public function do_action( $action, $file = '', $params = '' ) {
if ( ! empty ( $params ) ) { extract( $params ); }
global $wp_filesystem;
if ( defined( 'FS_CHMOD_FILE' ) ) { $chmod = FS_CHMOD_FILE; }
// Do unique stuff if ( $action == 'mkdir' && ! isset( $this->filesystem->killswitch ) ) { wp_mkdir_p( $file ); $res = file_exists( $file ); if ( defined( 'FS_CHMOD_DIR' ) ) { $chmod = FS_CHMOD_DIR; } else { $chmod = 0755; } if ( ! $res ) { mkdir( $file, $chmod, true ); $res = file_exists( $file ); } } elseif ( $action == 'copy' && ! isset( $this->filesystem->killswitch ) ) { $res = $wp_filesystem->copy( $file, $destination, $overwrite, $chmod ); if ( ! $res ) { $res = copy( $file, $destination ); if ( $res ) { chmod( $destination, $chmod ); } } } elseif ( $action == 'put_contents' && ! isset( $this->filesystem->killswitch ) ) { $res = $wp_filesystem->put_contents( $file, $content, $chmod ); if ( ! $res ) { $res = file_put_contents( $file, $content ); if ( $res ) { chmod( $file, $chmod ); } } } elseif ( $action == 'get_contents' ) { $res = $wp_filesystem->get_contents( $file ); if ( ! $res ) { $res = file_get_contents( $file ); } } elseif ( $action == 'object' ) { $res = $wp_filesystem; } if ( isset( $res ) && ! $res ) { $this->killswitch = true; }
return $res; } } }
|