Changeset 3385333
- Timestamp:
- 10/27/2025 03:37:15 PM (5 months ago)
- Location:
- clonable
- Files:
-
- 123 added
- 12 edited
-
assets/Thumbs.db (modified) (previous)
-
tags/2.7.4 (added)
-
tags/2.7.4/Bootstrap.php (added)
-
tags/2.7.4/clonable-wp.php (added)
-
tags/2.7.4/controllers (added)
-
tags/2.7.4/controllers/Controller.php (added)
-
tags/2.7.4/controllers/DashboardController.php (added)
-
tags/2.7.4/controllers/LandingPageController.php (added)
-
tags/2.7.4/controllers/LanguageSwitcherController.php (added)
-
tags/2.7.4/controllers/LanguageTagController.php (added)
-
tags/2.7.4/controllers/SettingController.php (added)
-
tags/2.7.4/controllers/WoocommerceController.php (added)
-
tags/2.7.4/controllers/index.php (added)
-
tags/2.7.4/exceptions (added)
-
tags/2.7.4/exceptions/ApiException.php (added)
-
tags/2.7.4/exceptions/CurlException.php (added)
-
tags/2.7.4/exceptions/ValidationException.php (added)
-
tags/2.7.4/helpers (added)
-
tags/2.7.4/helpers/Functions.php (added)
-
tags/2.7.4/helpers/Html.php (added)
-
tags/2.7.4/helpers/Json.php (added)
-
tags/2.7.4/helpers/Locales.php (added)
-
tags/2.7.4/helpers/MultiCurrency.php (added)
-
tags/2.7.4/helpers/Session.php (added)
-
tags/2.7.4/helpers/clonable-locales-list.php (added)
-
tags/2.7.4/helpers/index.php (added)
-
tags/2.7.4/images (added)
-
tags/2.7.4/images/clonable-full-logo.png (added)
-
tags/2.7.4/images/clonable.png (added)
-
tags/2.7.4/images/configure-wordpress-thumbnail.png (added)
-
tags/2.7.4/images/flags.png (added)
-
tags/2.7.4/images/index.php (added)
-
tags/2.7.4/images/language-switcher-thumbnail.png (added)
-
tags/2.7.4/index.php (added)
-
tags/2.7.4/middleware (added)
-
tags/2.7.4/middleware/Auth.php (added)
-
tags/2.7.4/middleware/ClonedSite.php (added)
-
tags/2.7.4/middleware/MiddlewareHandler.php (added)
-
tags/2.7.4/middleware/MiddlewareInterface.php (added)
-
tags/2.7.4/middleware/WooCommerce.php (added)
-
tags/2.7.4/middleware/index.php (added)
-
tags/2.7.4/models (added)
-
tags/2.7.4/models/ApiKey.php (added)
-
tags/2.7.4/models/ClonableWooCommerce.php (added)
-
tags/2.7.4/models/ClonedSite.php (added)
-
tags/2.7.4/models/LanguageSwitcher.php (added)
-
tags/2.7.4/models/LanguageTag.php (added)
-
tags/2.7.4/models/Settings.php (added)
-
tags/2.7.4/models/Site.php (added)
-
tags/2.7.4/models/index.php (added)
-
tags/2.7.4/objects (added)
-
tags/2.7.4/objects/ApiResponse.php (added)
-
tags/2.7.4/objects/CircuitBreaker.php (added)
-
tags/2.7.4/objects/ClonableConfig.php (added)
-
tags/2.7.4/objects/ClonableResponse.php (added)
-
tags/2.7.4/objects/CurlBuilder.php (added)
-
tags/2.7.4/objects/ExcludedProductTerm.php (added)
-
tags/2.7.4/objects/Notification.php (added)
-
tags/2.7.4/objects/index.php (added)
-
tags/2.7.4/readme-da_DK.txt (added)
-
tags/2.7.4/readme-de_DE.txt (added)
-
tags/2.7.4/readme-es_ES.txt (added)
-
tags/2.7.4/readme-fr_FR.txt (added)
-
tags/2.7.4/readme-it_IT.txt (added)
-
tags/2.7.4/readme-nb_NO.txt (added)
-
tags/2.7.4/readme-nl_NL.txt (added)
-
tags/2.7.4/readme-sv_SE.txt (added)
-
tags/2.7.4/readme.txt (added)
-
tags/2.7.4/routes (added)
-
tags/2.7.4/routes/Router.php (added)
-
tags/2.7.4/routes/index.php (added)
-
tags/2.7.4/services (added)
-
tags/2.7.4/services/AllowedHostsService.php (added)
-
tags/2.7.4/services/ApiService.php (added)
-
tags/2.7.4/services/CacheService.php (added)
-
tags/2.7.4/services/ClonableWooCommerceService.php (added)
-
tags/2.7.4/services/LanguageSwitcherService.php (added)
-
tags/2.7.4/services/LanguageTagService.php (added)
-
tags/2.7.4/services/LocaleService.php (added)
-
tags/2.7.4/services/MultiCurrencyService.php (added)
-
tags/2.7.4/services/ShortCodeService.php (added)
-
tags/2.7.4/services/SubfolderService.php (added)
-
tags/2.7.4/services/SyncService.php (added)
-
tags/2.7.4/services/index.php (added)
-
tags/2.7.4/services/modules (added)
-
tags/2.7.4/services/modules/DataPanelModule.php (added)
-
tags/2.7.4/services/modules/ExclusionModule.php (added)
-
tags/2.7.4/services/modules/ProductImporterModule.php (added)
-
tags/2.7.4/services/modules/TaxonomyModule.php (added)
-
tags/2.7.4/services/modules/index.php (added)
-
tags/2.7.4/traits (added)
-
tags/2.7.4/traits/Forms.php (added)
-
tags/2.7.4/traits/PluginCheck.php (added)
-
tags/2.7.4/traits/Validation.php (added)
-
tags/2.7.4/traits/index.php (added)
-
tags/2.7.4/uninstall.php (added)
-
tags/2.7.4/views (added)
-
tags/2.7.4/views/DashboardView.php (added)
-
tags/2.7.4/views/LanguageSwitcherView.php (added)
-
tags/2.7.4/views/LanguageTagView.php (added)
-
tags/2.7.4/views/Layout.php (added)
-
tags/2.7.4/views/OnboardingView.php (added)
-
tags/2.7.4/views/SettingsView.php (added)
-
tags/2.7.4/views/ViewInterface.php (added)
-
tags/2.7.4/views/WoocommerceView.php (added)
-
tags/2.7.4/views/css (added)
-
tags/2.7.4/views/css/clonable-extra-button.css (added)
-
tags/2.7.4/views/css/clonable-global.css (added)
-
tags/2.7.4/views/css/clonable-thumbnails.css (added)
-
tags/2.7.4/views/css/clonable-woocommerce.css (added)
-
tags/2.7.4/views/css/clonable.css (added)
-
tags/2.7.4/views/css/fomantic-dropdown.css (added)
-
tags/2.7.4/views/css/fomantic-transition.css (added)
-
tags/2.7.4/views/css/freakflags.css (added)
-
tags/2.7.4/views/css/index.php (added)
-
tags/2.7.4/views/index.php (added)
-
tags/2.7.4/views/scripts (added)
-
tags/2.7.4/views/scripts/alpine.js (added)
-
tags/2.7.4/views/scripts/dohjs.js (added)
-
tags/2.7.4/views/scripts/fomantic-dropdown.js (added)
-
tags/2.7.4/views/scripts/fomantic-transition.js (added)
-
tags/2.7.4/views/scripts/index.php (added)
-
tags/2.7.4/views/scripts/onload.js (added)
-
tags/2.7.4/views/scripts/woocommerce-clone-field.js (added)
-
trunk/clonable-wp.php (modified) (2 diffs)
-
trunk/readme-da_DK.txt (modified) (2 diffs)
-
trunk/readme-de_DE.txt (modified) (2 diffs)
-
trunk/readme-es_ES.txt (modified) (2 diffs)
-
trunk/readme-fr_FR.txt (modified) (2 diffs)
-
trunk/readme-it_IT.txt (modified) (2 diffs)
-
trunk/readme-nb_NO.txt (modified) (2 diffs)
-
trunk/readme-nl_NL.txt (modified) (2 diffs)
-
trunk/readme-sv_SE.txt (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/services/SubfolderService.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
clonable/trunk/clonable-wp.php
r3384042 r3385333 5 5 Description: Official plugin for improving your clones made with Clonable. 6 6 Plugin URI: https://kb.clonable.net/en/introduction/getting-started/wordpress#de-clonable-plug-in-downloaden 7 Version: 2.7. 37 Version: 2.7.4 8 8 Author: Clonable BV 9 9 Author URI: https://www.clonable.net … … 115 115 116 116 define('CLONABLE_NAME', 'Clonable'); 117 define('CLONABLE_VERSION', '2.7. 3');117 define('CLONABLE_VERSION', '2.7.4'); 118 118 119 119 if (defined('WP_CLI') && WP_CLI) { -
clonable/trunk/readme-da_DK.txt
r3384042 r3385333 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 37 Stable tag: 2.7.4 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.4 35 Improved file uploads for subfolder clones. 36 34 37 v2.7.3 35 38 Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013). -
clonable/trunk/readme-de_DE.txt
r3384042 r3385333 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 37 Stable tag: 2.7.4 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.4 35 Improved file uploads for subfolder clones. 36 34 37 v2.7.3 35 38 Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013). -
clonable/trunk/readme-es_ES.txt
r3384042 r3385333 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 37 Stable tag: 2.7.4 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.4 35 Improved file uploads for subfolder clones. 36 34 37 v2.7.3 35 38 Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013). -
clonable/trunk/readme-fr_FR.txt
r3384042 r3385333 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 37 Stable tag: 2.7.4 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.4 35 Improved file uploads for subfolder clones. 36 34 37 v2.7.3 35 38 Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013). -
clonable/trunk/readme-it_IT.txt
r3384042 r3385333 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 37 Stable tag: 2.7.4 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.4 35 Improved file uploads for subfolder clones. 36 34 37 v2.7.3 35 38 Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013). -
clonable/trunk/readme-nb_NO.txt
r3384042 r3385333 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 37 Stable tag: 2.7.4 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.4 35 Improved file uploads for subfolder clones. 36 34 37 v2.7.3 35 38 Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013). -
clonable/trunk/readme-nl_NL.txt
r3384042 r3385333 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 37 Stable tag: 2.7.4 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.4 35 Improved file uploads for subfolder clones. 36 34 37 v2.7.3 35 38 Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013). -
clonable/trunk/readme-sv_SE.txt
r3384042 r3385333 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 37 Stable tag: 2.7.4 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.4 35 Improved file uploads for subfolder clones. 36 34 37 v2.7.3 35 38 Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013). -
clonable/trunk/readme.txt
r3384042 r3385333 5 5 Tested up to: 6.8.3 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 37 Stable tag: 2.7.4 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.4 35 Improved file uploads for subfolder clones. 36 34 37 v2.7.3 35 38 Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013). -
clonable/trunk/services/SubfolderService.php
r3384042 r3385333 227 227 } 228 228 229 // ======== Optional file uploads ======== 230 // --------------------------------------- 231 // For optional files, filenames can be empty. 232 // Even the files themselves can be totally empty. 233 // But the content-disposition and content-type data should still be added 234 // 235 // Example of optional file upload field data: 236 // Content-Disposition: form-data; name="input_13"; filename="" 237 // Content-Type: application/octet-stream 229 238 foreach ($_FILES as $field_name => $file_data) { 230 // ======== Optional file uploads ======== 231 // --------------------------------------- 232 // For optional files, filenames can be empty. 233 // Even the files themselves can be totally empty. 234 // But the content-disposition and content-type data should still be added 235 // 236 // Example of optional file upload field data: 237 // Content-Disposition: form-data; name="input_13"; filename="" 238 // Content-Type: application/octet-stream 239 $filename = ""; 240 if (isset($file_data['name'])) { 241 $filename = $file_data['name']; 242 } 243 244 // build content disposition file header for multipart input (file uploads) 245 $data .= "--" . $delimiter . $eol 246 . 'Content-Disposition: form-data; name="' . $field_name . '"; filename="' . $filename . '"' . $eol; 247 if (isset($file_data['type'])) { 248 $data .= 'Content-Type: ' . $file_data['type'] .$eol; 249 } 250 251 $data .= $eol; 252 $file_content = file_get_contents($file_data['tmp_name']); 253 if ($file_content !== false) { 254 $data .= $file_content . $eol; // append file content (if it's not empty) 239 // I cannot explain the disappointment I felt when I discovered how image arrays were parsed by PHP. 240 // for some reason it's not an array of images, but multiple array of array grouped by images properties. 241 if (is_array($file_data['name'])) { 242 foreach ($file_data['name'] as $key => $name) { 243 $file_name = $file_data['name'][$key]; 244 $file_type = $file_data['type'][$key]; 245 $tmp_name = $file_data['tmp_name'][$key]; 246 $data .= $this->build_individual_data_file($delimiter, "{$field_name}[]", $eol, $file_name, $file_type, $tmp_name); 247 } 248 249 } else { 250 $file_name = $file_data['name']; 251 $file_type = $file_data['type']; 252 $tmp_name = $file_data['tmp_name']; 253 $data .= $this->build_individual_data_file($delimiter, $field_name, $eol, $file_name, $file_type, $tmp_name); 255 254 } 256 255 } 257 256 258 257 $data .= "--" . $delimiter . "--".$eol; 258 return $data; 259 } 260 261 /** 262 * @param $delimiter 263 * @param $field_name 264 * @param $eol 265 * @param $file_name 266 * @param $file_type 267 * @param $tmp_name 268 * @return string 269 */ 270 private function build_individual_data_file($delimiter, $field_name, $eol, $file_name, $file_type, $tmp_name) { 271 $filename = ""; 272 if (isset($file_name)) { 273 $filename = $file_name; 274 } 275 276 // build content disposition file header for multipart input (file uploads) 277 $data = "--" . $delimiter . $eol 278 . 'Content-Disposition: form-data; name="' . $field_name . '"; filename="' . $filename . '"' . $eol; 279 if (isset($file_type)) { 280 $data .= 'Content-Type: ' . $file_type .$eol; 281 } 282 283 $data .= $eol; 284 $file_content = file_get_contents($tmp_name); 285 286 if ($file_content !== false) { 287 $data .= $file_content . $eol; // append file content (if it's not empty) 288 } 259 289 return $data; 260 290 }
Note: See TracChangeset
for help on using the changeset viewer.