folders.php 2.94 KB
<?php
    /**
	* @Description : Create directory/folder
	* @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_Folders {

        private static $instance = null;

        public $dir = null;

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

        public function __construct(){

            $helper = CodeDropz_Uploader_Helpers::get_instance();
            
            // Set Upload Path
            $_dir = '';

            // Folder Option
            if( get_option('drag_n_drop_folder_option') ) {

                // Getting folder option name
                $folder_option = get_option('drag_n_drop_folder_option');

                // Get choosen folder type
                if( $folder_option ){

                    // User
                    $user = $helper->get_user();

					switch( $folder_option ) {
						case 'dynamic_folder':
						case 'cf7_fields':
							$_dir = null;
							break;
						case 'date_n_time':
                            $date_format = apply_filters('dnd_cf7_dir_date_format', 'Y-m-d-h-i-s');
							$_dir = $helper->get_date( $date_format );
							break;
						case 'user_login':
                            $user_prefix = apply_filters('dnd_cf7_user_prefix', 'user-');
							$_dir = ( ( is_user_logged_in() && $user->exists() ) ? $user_prefix . sanitize_title( $user->display_name ) : 'user-file-'.time() );
							break;
						case 'generated':
							$rand_max = mt_getrandmax();
							$_dir = zeroise( mt_rand( 0, $rand_max ), strlen( $rand_max ) );
							break;
						default:
							$_dir = ( get_option('drag_n_drop_custom_folder') ? get_option('drag_n_drop_custom_folder') : 'custom-' . $helper->get_date('m-d-y') );
							break;
					}
                }
            }

            // Assign new dir
            $this->dir = ( $_dir ? $_dir : wp_dndcf7_tmp_folder );

        }
        
        // Set folder/Dir
        public function set_folder( $dir ) {
            if( $dir ){
                $this->dir = wp_basename( $dir );
            }
        }

        // Get folder/dir (will display in hidden field)
        public function get_folder(){
            return $this->dir;
        }

        // Create directory
        public function create_folder( $directory, $create = false ) {

            // Create dir
            if( $create ) {
                if( ! is_dir( $directory ) ) {
                    wp_mkdir_p( $directory );
                }
                if( file_exists( $directory ) ) {
                    return wp_normalize_path( realpath( $directory ) );
                }
            }

            // Get current IDR
            return wp_normalize_path( realpath( $directory ) );
        }

    }