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
<?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);
}
}