?? GreyFile — Mystic File Browser

Current path: home/webdevt/www/demo2/wp-content/plugins/divi-contact-form-helper/d5/server/Frontend/Controllers/



?? Go up: /home/webdevt/www/demo2/wp-content/plugins/divi-contact-form-helper/d5/server/Frontend

?? Viewing: ContactFormFileManager.php

<?php

namespace KS_PAC_DCFH\Frontend\Controllers;

if (!defined('ABSPATH')) {
    exit;
}

class ContactFormFileManager
{
    private static $_instance;

    private ContactFormDataRepository $contact_form_rep;

    public function __construct()
    {
        $this->contact_form_rep = ContactFormDataRepository::instance();
    }

    public static function instance(): self
    {
        return self::$_instance ??= new self();
    }

    public function save(): array
    {
        $files_arr = $this->contact_form_rep->save_files_to_media
            ? $this->save_temp_uploads_to_media()
            : $this->save_temp_uploads_to_directory();
        $this->contact_form_rep->files_arr = $files_arr;

        return $files_arr;
    }

    public function get_uploaded_temp_files(): array
    {
        $files_arr = [
            'uploaded_dir' => [],
            'uploaded_urls' => [],
        ];
        $files = $this->get_temp_files();
        if (empty($files)) {
            return $files_arr;
        }
        $upload_tmp_dir = ks_pac_dcfh_app()->file_utils()::get_tmp_upload_dir();
        $wp_upload_dir = wp_upload_dir();
        foreach ($files as $file_name) {
            $file_path = path_join($upload_tmp_dir, $file_name);
            if (!$this->is_valid_file($file_path)) {
                continue;
            }
            $files_arr['uploaded_dir'][] = $file_path;
            $uploaded_url = $this->contact_form_rep->save_files_to_media
                ? path_join($wp_upload_dir['url'], $file_name)
                : (ks_pac_dcfh_app()->file_utils()::upload_files_to_dir($this->contact_form_rep->contact_form_id, $file_name)['baseurl'] ?? '');
            $files_arr['uploaded_urls'][] = $uploaded_url;
        }

        return $files_arr;
    }

    private function save_temp_uploads_to_directory(): array
    {
        $files_arr = [];
        $upload_tmp_dir = ks_pac_dcfh_app()->file_utils()::get_tmp_upload_dir();
        foreach ($this->get_temp_files() as $index => $file) {
            $file_temp_path = path_join($upload_tmp_dir, $file);
            if (!$this->is_valid_file($file_temp_path)) {
                continue;
            }
            $upload_info = ks_pac_dcfh_app()->file_utils()::upload_files_to_dir($this->contact_form_rep->contact_form_id, $file);
            if ($this->copy_file($file_temp_path, $upload_info['basedir'])) {
                $files_arr['basedir'][$index] = $upload_info['basedir'];
                $files_arr['baseurl'][$index] = $upload_info['baseurl'];
                if (strpos($file, "digital-signature-") !== false) {
                    $this->contact_form_rep->digital_signature_file = $upload_info['baseurl'];
                }
            }
        }

        return $files_arr;
    }

    private function save_temp_uploads_to_media(): array
    {
        require_once ABSPATH.'wp-admin/includes/image.php';
        require_once ABSPATH.'wp-admin/includes/media.php';
        $files_arr = [];
        $upload_tmp_dir = ks_pac_dcfh_app()->file_utils()::get_tmp_upload_dir();
        $wp_upload_dir = wp_upload_dir();
        $post_title = __('Divi Contact Form Helper', 'divi-contact-form-helper');
        foreach ($this->get_temp_files() as $index => $file) {
            $file_temp_path = path_join($upload_tmp_dir, $file);
            $file_upload_path = path_join($wp_upload_dir['path'], $file);
            $file_upload_url = path_join($wp_upload_dir['url'], $file);
            if (strpos($file, "digital-signature-") !== false) {
                $this->contact_form_rep->digital_signature_file = $file_upload_url;
            }
            $filename = pathinfo($file, PATHINFO_FILENAME);
            $file_type = wp_check_filetype($file);
            if (!$this->is_valid_file($file_temp_path)) {
                continue;
            }
            if (!$this->copy_file($file_temp_path, $file_upload_path)) {
                continue;
            }
            $attachment_data = [
                'post_title' => $filename,
                'post_name' => $filename,
                'post_content' => $post_title,
                'post_excerpt' => $post_title,
                'post_mime_type' => $file_type['type'],
                'post_parent' => $this->contact_form_rep->entry_number,
                'guid' => $file_upload_url,
                'post_author' => 0,
                'post_status' => 'inherit',
                'comment_status' => 'closed',
                'ping_status' => 'closed'
            ];
            $attachment_id = wp_insert_attachment($attachment_data, $file_upload_path, $this->contact_form_rep->entry_number, true);
            if (!is_wp_error($attachment_id)) {
                $attach_data = wp_generate_attachment_metadata($attachment_id, $file_upload_path);
                wp_update_attachment_metadata($attachment_id, $attach_data);
                update_post_meta($attachment_id, '_wp_attachment_image_alt', $post_title);
                $files_arr['basedir'][$index] = $file_upload_path;
                $files_arr['baseurl'][$index] = $file_upload_url;
            }
        }

        return $files_arr;
    }

    private function get_temp_files(): array
    {
        $temp_uploaded_files = $this->contact_form_rep->temp_files ?? [];
        $files = [];
        foreach ($temp_uploaded_files as $file_group) {
            foreach (explode(',', $file_group) as $file) {
                $trimmed = trim($file);
                if ($trimmed !== '') {
                    $files[] = $trimmed;
                }
            }
        }

        return $files;
    }

    private function is_valid_file(string $file_path): bool
    {
        $fs = et_()->WPFS();

        return $fs->is_file($file_path) && $fs->exists($file_path);
    }

    private function copy_file(string $source, string $destination): bool
    {
        return copy($source, $destination);
    }
}


??

??