directory.php 2.83 KB
<?php
    /**
	* @Description : Process directory
	* @Package : Drag & Drop Multiple File Upload - Contact Form 7
	* @Author : CodeDropz
	*/

    if ( ! defined( 'ABSPATH' ) || ! defined('dnd_upload_cf7') || ! defined('dnd_upload_cf7_PRO') ) {
		exit;
	}

    class CodeDropz_Uploader_Directory {

        private static $instance = null;

        public $wp_dir = array();

        public static function get_instance() {
            if( null === self::$instance ) {
                self::$instance = new self();
            }
            return self::$instance;
        }

        public function __construct(){
            
            $this->wp_dir = apply_filters( 'dnd_cf7_upload_dir', wp_upload_dir() );

            // Base upload URL
            $base_url = $this->wp_dir['baseurl'];

            // Create upload folder where files being stored.
            if( defined('wp_dndcf7_upload_folder') ) {

                // concat path and defined folder dir
                $wp_dndcf7_folder = trailingslashit( wp_normalize_path( $this->wp_dir['basedir'] ) ) . wp_dndcf7_upload_folder;

                // Upload Path override in WP admin Settings
                if( $custom_dir = get_option('drag_n_drop_upload_dir') ) {
                    $wp_dndcf7_folder = trailingslashit( wp_normalize_path( $custom_dir ) ) . wp_dndcf7_upload_folder;
                    $base_url = str_replace(
                        wp_normalize_path( ABSPATH ),
                        trailingslashit( site_url() ),
                        empty( wp_dndcf7_upload_folder ) ? $wp_dndcf7_folder : trailingslashit( dirname( $wp_dndcf7_folder ) )
                    );
                }

                // Format correct slashes
                $base_url = preg_replace( '/\\\\/', '/', $base_url );

                // Create dir
                if( ! is_dir( $wp_dndcf7_folder ) ) {
                    wp_mkdir_p( $wp_dndcf7_folder );

                    // Generate .htaccess file`
                    $htaccess_file = path_join( $wp_dndcf7_folder, '.htaccess' );

                    if ( ! file_exists( $htaccess_file ) ) {
                        if ( $handle = fopen( $htaccess_file, 'w' ) ) {
                            fwrite( $handle, "Options -Indexes \n <Files *.php> \n deny from all \n </Files>" );
                            fclose( $handle );
                        }
                    }
                }

                // override default wordpress basedir and baseurl
                $this->wp_dir['basedir'] = apply_filters( 'dnd_cf7_base_dir', untrailingslashit( $wp_dndcf7_folder ) );
                $this->wp_dir['baseurl'] = apply_filters( 'dnd_cf7_base_url', untrailingslashit( path_join( $base_url , wp_dndcf7_upload_folder ) ) );

            }
        }

        // Get base dir and url
        public function get_dir(){
            return $this->wp_dir;
        }

    }