← All changes
|
includes/Core/Integration/ZohoMail/FilesApiHelper.php
+17
-0
3.1.1
→
3.3.1
View file →
| @@ -28,8 +28,9 @@ | ||
| 28 | 28 | } |
| 29 | 29 | |
| 30 | 30 | public function uploadFiles($files, $accountId, $dataCenter) |
| 31 | 31 | { |
| 32 | + $files = self::normalizeFileNames($files); | |
| 32 | 33 | $uploadFileEndpoint = "https://mail.zoho.{$dataCenter}/api/accounts/{$accountId}/messages/attachments"; |
| 33 | 34 | |
| 34 | 35 | $payload = ''; |
| 35 | 36 | |
| @@ -47,6 +48,22 @@ | ||
| 47 | 48 | $uploadResponse = HttpHelper::post($uploadFileEndpoint, $payload, $this->_defaultHeader); |
| 48 | 49 | |
| 49 | 50 | return $uploadResponse; |
| 50 | 51 | } |
| 52 | + } | |
| 53 | + | |
| 54 | + /** | |
| 55 | + * Field values may arrive as public file URLs (see IntegrationHandler::handleFileUrl), | |
| 56 | + * so reduce each to the stored file name before resolving against the entry directory. | |
| 57 | + * | |
| 58 | + * @param mixed $files file name(s) or URL(s) | |
| 59 | + * | |
| 60 | + * @return mixed | |
| 61 | + */ | |
| 62 | + private static function normalizeFileNames($files) | |
| 63 | + { | |
| 64 | + if (is_array($files)) { | |
| 65 | + return array_map([__CLASS__, 'normalizeFileNames'], $files); | |
| 66 | + } | |
| 67 | + return is_string($files) ? basename(wp_parse_url($files, PHP_URL_PATH) ?: $files) : $files; | |
| 51 | 68 | } |
| 52 | 69 | } |