From e524528c9426a2e55780502e0425591b24767e9b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lucas=20Garc=C3=ADa?= <lucas@codeccoop.org>
Date: Sat, 27 Apr 2024 18:20:38 +0200
Subject: [PATCH] feat: gf attachments auxiliad functions

---
 includes/integrations/gf/attachments.php      | 37 +++++++++++--------
 .../integrations/gf/class-integration.php     |  2 +-
 2 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/includes/integrations/gf/attachments.php b/includes/integrations/gf/attachments.php
index 3c6526c..23c5137 100644
--- a/includes/integrations/gf/attachments.php
+++ b/includes/integrations/gf/attachments.php
@@ -11,14 +11,9 @@ function wpct_erp_forms_upload_path($path_info, $form_id)
         return $path_info;
     }
 
-    $upload_dir = wp_upload_dir();
-    $base_path = apply_filters('wpct_erp_forms_upload_path', $upload_dir['basedir'] . '/erp-forms');
-    if (!($base_path && is_string($base_path))) {
-        throw new Exception('WPCT ERP Forms: Invalid upload path');
-    }
-    $base_path = preg_replace('/\/$/', '', $base_path);
+    $base_path = wpct_erp_forms_attachment_base_path();
+    $path = $base_path . '/' . implode('/', [$form_id, date('Y'), date('m')]) . '/';
 
-    $path = $base_path . '/' . implode('/', [$form_id, date('Y'), date('m')]);
     if (!is_dir($path)) {
         mkdir($path, 0700, true);
     }
@@ -33,12 +28,9 @@ deny from all',
         );
         fclose($fp);
     }
-    $path_info['path'] = $path;
-
-    $url = get_site_url() . '/index.php?';
-    $url .= 'erp-forms-attachment=' . urlencode(str_replace($base_path, '', $path) . '/');
-    $path_info['url'] = $url;
 
+    $path_info['path'] = $path;
+    $path_info['url'] = wpct_erp_forms_attachment_url($path);
     return $path_info;
 };
 
@@ -52,7 +44,7 @@ function wpct_erp_forms_download_file()
         return;
     }
 
-    $path = wpct_erp_forms_attachment_path($_GET['erp-forms-attachment']);
+    $path = wpct_erp_forms_attachment_fullpath($_GET['erp-forms-attachment']);
 
     if (!(is_user_logged_in() && file_exists($path))) {
         global $wp_query;
@@ -86,7 +78,7 @@ function wpct_erp_forms_download_file()
     die();
 }
 
-function wpct_erp_forms_attachment_path($attachment_path)
+function wpct_erp_forms_attachment_base_path()
 {
     $upload_dir = wp_upload_dir();
     $base_path = apply_filters('wpct_erp_forms_upload_path', $upload_dir['basedir'] . '/erp-forms');
@@ -94,11 +86,24 @@ function wpct_erp_forms_attachment_path($attachment_path)
         throw new Exception('WPCT ERP Forms: Invalid upload path');
     }
     $base_path = preg_replace('/\/$/', '', $base_path);
-    return $base_path . urldecode($attachment_path);
+    return $base_path;
+}
+
+function wpct_erp_forms_attachment_fullpath($filepath)
+{
+    $base_path = wpct_erp_forms_attachment_base_path();
+    return $base_path . urldecode($filepath);
+}
+
+function wpct_erp_forms_attachment_url($filepath)
+{
+    $base_path = wpct_erp_forms_attachment_base_path();
+    $url = get_site_url() . '/index.php?';
+    $url .= 'erp-forms-attachment=' . urlencode(str_replace($base_path, '', $filepath));
+    return $url;
 }
 
 function wpct_erp_forms_private_upload($form_id)
 {
     return apply_filters('wpct_erp_forms_private_upload', true, $form_id);
-
 }
diff --git a/includes/integrations/gf/class-integration.php b/includes/integrations/gf/class-integration.php
index 7727b6f..1abdfb8 100644
--- a/includes/integrations/gf/class-integration.php
+++ b/includes/integrations/gf/class-integration.php
@@ -183,7 +183,7 @@ class Integration extends BaseIntegration
                 if ($private_upload) {
                     $url = parse_url($path);
                     parse_str($url['query'], $query);
-                    $path = wpct_erp_forms_attachment_path($query['erp-forms-attachment']);
+                    $path = wpct_erp_forms_attachment_fullpath($query['erp-forms-attachment']);
                 }
 
                 return $path;
-- 
GitLab