Changeset 3386387
- Timestamp:
- 10/29/2025 11:53:39 AM (5 months ago)
- Location:
- clonable
- Files:
-
- 123 added
- 1 deleted
- 12 edited
-
assets/Thumbs.db (deleted)
-
tags/2.7.5 (added)
-
tags/2.7.5/Bootstrap.php (added)
-
tags/2.7.5/clonable-wp.php (added)
-
tags/2.7.5/controllers (added)
-
tags/2.7.5/controllers/Controller.php (added)
-
tags/2.7.5/controllers/DashboardController.php (added)
-
tags/2.7.5/controllers/LandingPageController.php (added)
-
tags/2.7.5/controllers/LanguageSwitcherController.php (added)
-
tags/2.7.5/controllers/LanguageTagController.php (added)
-
tags/2.7.5/controllers/SettingController.php (added)
-
tags/2.7.5/controllers/WoocommerceController.php (added)
-
tags/2.7.5/controllers/index.php (added)
-
tags/2.7.5/exceptions (added)
-
tags/2.7.5/exceptions/ApiException.php (added)
-
tags/2.7.5/exceptions/CurlException.php (added)
-
tags/2.7.5/exceptions/ValidationException.php (added)
-
tags/2.7.5/helpers (added)
-
tags/2.7.5/helpers/Functions.php (added)
-
tags/2.7.5/helpers/Html.php (added)
-
tags/2.7.5/helpers/Json.php (added)
-
tags/2.7.5/helpers/Locales.php (added)
-
tags/2.7.5/helpers/MultiCurrency.php (added)
-
tags/2.7.5/helpers/Session.php (added)
-
tags/2.7.5/helpers/clonable-locales-list.php (added)
-
tags/2.7.5/helpers/index.php (added)
-
tags/2.7.5/images (added)
-
tags/2.7.5/images/clonable-full-logo.png (added)
-
tags/2.7.5/images/clonable.png (added)
-
tags/2.7.5/images/configure-wordpress-thumbnail.png (added)
-
tags/2.7.5/images/flags.png (added)
-
tags/2.7.5/images/index.php (added)
-
tags/2.7.5/images/language-switcher-thumbnail.png (added)
-
tags/2.7.5/index.php (added)
-
tags/2.7.5/middleware (added)
-
tags/2.7.5/middleware/Auth.php (added)
-
tags/2.7.5/middleware/ClonedSite.php (added)
-
tags/2.7.5/middleware/MiddlewareHandler.php (added)
-
tags/2.7.5/middleware/MiddlewareInterface.php (added)
-
tags/2.7.5/middleware/WooCommerce.php (added)
-
tags/2.7.5/middleware/index.php (added)
-
tags/2.7.5/models (added)
-
tags/2.7.5/models/ApiKey.php (added)
-
tags/2.7.5/models/ClonableWooCommerce.php (added)
-
tags/2.7.5/models/ClonedSite.php (added)
-
tags/2.7.5/models/LanguageSwitcher.php (added)
-
tags/2.7.5/models/LanguageTag.php (added)
-
tags/2.7.5/models/Settings.php (added)
-
tags/2.7.5/models/Site.php (added)
-
tags/2.7.5/models/index.php (added)
-
tags/2.7.5/objects (added)
-
tags/2.7.5/objects/ApiResponse.php (added)
-
tags/2.7.5/objects/CircuitBreaker.php (added)
-
tags/2.7.5/objects/ClonableConfig.php (added)
-
tags/2.7.5/objects/ClonableResponse.php (added)
-
tags/2.7.5/objects/CurlBuilder.php (added)
-
tags/2.7.5/objects/ExcludedProductTerm.php (added)
-
tags/2.7.5/objects/Notification.php (added)
-
tags/2.7.5/objects/index.php (added)
-
tags/2.7.5/readme-da_DK.txt (added)
-
tags/2.7.5/readme-de_DE.txt (added)
-
tags/2.7.5/readme-es_ES.txt (added)
-
tags/2.7.5/readme-fr_FR.txt (added)
-
tags/2.7.5/readme-it_IT.txt (added)
-
tags/2.7.5/readme-nb_NO.txt (added)
-
tags/2.7.5/readme-nl_NL.txt (added)
-
tags/2.7.5/readme-sv_SE.txt (added)
-
tags/2.7.5/readme.txt (added)
-
tags/2.7.5/routes (added)
-
tags/2.7.5/routes/Router.php (added)
-
tags/2.7.5/routes/index.php (added)
-
tags/2.7.5/services (added)
-
tags/2.7.5/services/AllowedHostsService.php (added)
-
tags/2.7.5/services/ApiService.php (added)
-
tags/2.7.5/services/CacheService.php (added)
-
tags/2.7.5/services/ClonableWooCommerceService.php (added)
-
tags/2.7.5/services/LanguageSwitcherService.php (added)
-
tags/2.7.5/services/LanguageTagService.php (added)
-
tags/2.7.5/services/LocaleService.php (added)
-
tags/2.7.5/services/MultiCurrencyService.php (added)
-
tags/2.7.5/services/ShortCodeService.php (added)
-
tags/2.7.5/services/SubfolderService.php (added)
-
tags/2.7.5/services/SyncService.php (added)
-
tags/2.7.5/services/index.php (added)
-
tags/2.7.5/services/modules (added)
-
tags/2.7.5/services/modules/DataPanelModule.php (added)
-
tags/2.7.5/services/modules/ExclusionModule.php (added)
-
tags/2.7.5/services/modules/ProductImporterModule.php (added)
-
tags/2.7.5/services/modules/TaxonomyModule.php (added)
-
tags/2.7.5/services/modules/index.php (added)
-
tags/2.7.5/traits (added)
-
tags/2.7.5/traits/Forms.php (added)
-
tags/2.7.5/traits/PluginCheck.php (added)
-
tags/2.7.5/traits/Validation.php (added)
-
tags/2.7.5/traits/index.php (added)
-
tags/2.7.5/uninstall.php (added)
-
tags/2.7.5/views (added)
-
tags/2.7.5/views/DashboardView.php (added)
-
tags/2.7.5/views/LanguageSwitcherView.php (added)
-
tags/2.7.5/views/LanguageTagView.php (added)
-
tags/2.7.5/views/Layout.php (added)
-
tags/2.7.5/views/OnboardingView.php (added)
-
tags/2.7.5/views/SettingsView.php (added)
-
tags/2.7.5/views/ViewInterface.php (added)
-
tags/2.7.5/views/WoocommerceView.php (added)
-
tags/2.7.5/views/css (added)
-
tags/2.7.5/views/css/clonable-extra-button.css (added)
-
tags/2.7.5/views/css/clonable-global.css (added)
-
tags/2.7.5/views/css/clonable-thumbnails.css (added)
-
tags/2.7.5/views/css/clonable-woocommerce.css (added)
-
tags/2.7.5/views/css/clonable.css (added)
-
tags/2.7.5/views/css/fomantic-dropdown.css (added)
-
tags/2.7.5/views/css/fomantic-transition.css (added)
-
tags/2.7.5/views/css/freakflags.css (added)
-
tags/2.7.5/views/css/index.php (added)
-
tags/2.7.5/views/index.php (added)
-
tags/2.7.5/views/scripts (added)
-
tags/2.7.5/views/scripts/alpine.js (added)
-
tags/2.7.5/views/scripts/dohjs.js (added)
-
tags/2.7.5/views/scripts/fomantic-dropdown.js (added)
-
tags/2.7.5/views/scripts/fomantic-transition.js (added)
-
tags/2.7.5/views/scripts/index.php (added)
-
tags/2.7.5/views/scripts/onload.js (added)
-
tags/2.7.5/views/scripts/woocommerce-clone-field.js (added)
-
trunk/clonable-wp.php (modified) (2 diffs)
-
trunk/objects/CurlBuilder.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/SyncService.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
clonable/trunk/clonable-wp.php
r3385333 r3386387 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. 47 Version: 2.7.5 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. 4');117 define('CLONABLE_VERSION', '2.7.5'); 118 118 119 119 if (defined('WP_CLI') && WP_CLI) { -
clonable/trunk/objects/CurlBuilder.php
r3384042 r3386387 3 3 namespace Clonable\Objects; 4 4 5 use Throwable; 6 5 7 class CurlBuilder { 6 8 private $curl; 9 10 const IP_MODE_46 = "ipv4_ipv6"; 11 const IP_MODE_4 = "ipv4"; 12 const IP_MODE_6 = "ipv6"; 7 13 8 14 public function __construct($url) { … … 27 33 curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, false); // don't care about SSL 28 34 29 if (self::canUseIpv6()) { 30 curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:" . ClonableConfig::SERVER_IP . ',[' . ClonableConfig::SERVER_IPV6 . ']']); 31 } else { 32 curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:" . ClonableConfig::SERVER_IP]); 35 switch (self::ipMode()) { 36 case self::IP_MODE_46: 37 curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:" . ClonableConfig::SERVER_IP . ",[" . ClonableConfig::SERVER_IPV6 . "]"]); 38 break; 39 case self::IP_MODE_6: 40 curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:[" . ClonableConfig::SERVER_IPV6 . "]"]); 41 break; 42 case self::IP_MODE_4: 43 default: 44 curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:" . ClonableConfig::SERVER_IP]); 45 break; 33 46 } 47 34 48 return $this; 35 49 } 36 50 37 private static function canUseIpv6(): bool 38 { 39 $version = curl_version(); 40 if ($version) { // Version succeeded 41 if ($version['features'] & CURL_VERSION_IPV6) { // Version supports IPv6 42 if (version_compare($version['version'], '7.34.0', '>=')) { // Version has happy eyeballs 43 return true; 51 private static function ipMode() { 52 $cached = get_transient("clonable_connection_mode"); 53 if ($cached === false) { 54 $mode = self::IP_MODE_4; 55 $version = curl_version(); 56 if ($version) { // Version succeeded 57 if ($version['features'] & CURL_VERSION_IPV6) { // Version supports IPv6 58 if (self::canUseIpv6()) { 59 // Only if we know for sure IPv6 works, use it 60 $mode = self::IP_MODE_6; 61 } 44 62 } 45 63 } 64 65 set_transient("clonable_connection_mode", $mode, 3600); 66 return $mode; 67 } else { 68 return $cached; 46 69 } 70 } 47 71 48 return false; 72 private static function canUseIpv6(): bool{ 73 // This resource is a simple connectivity check, so http is fine 74 $url='http://ipv6.icanhazip.com/'; 75 return self::canReachUrl($url); 76 } 77 78 private static function canUseIpv4(): bool { 79 // This resource is a simple connectivity check, so http is fine 80 $url='http://ipv4.icanhazip.com/'; 81 return self::canReachUrl($url); 82 } 83 84 private static function canReachUrl(string $url): bool { 85 try { 86 $ch=curl_init(); 87 $timeout=3; 88 89 curl_setopt($ch, CURLOPT_URL, $url); 90 curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 91 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 92 93 $result=curl_exec($ch); 94 curl_close($ch); 95 96 return $result !== false; 97 } catch (Throwable $e) { 98 error_log("Clonable failed to check connectivity: " . $e->getMessage()); 99 return false; 100 } 49 101 } 50 102 -
clonable/trunk/readme-da_DK.txt
r3385333 r3386387 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 47 Stable tag: 2.7.5 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.5 35 Add connectivity checks when determining which IP version to use. 36 34 37 v2.7.4 35 38 Improved file uploads for subfolder clones. -
clonable/trunk/readme-de_DE.txt
r3385333 r3386387 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 47 Stable tag: 2.7.5 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.5 35 Add connectivity checks when determining which IP version to use. 36 34 37 v2.7.4 35 38 Improved file uploads for subfolder clones. -
clonable/trunk/readme-es_ES.txt
r3385333 r3386387 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 47 Stable tag: 2.7.5 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.5 35 Add connectivity checks when determining which IP version to use. 36 34 37 v2.7.4 35 38 Improved file uploads for subfolder clones. -
clonable/trunk/readme-fr_FR.txt
r3385333 r3386387 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 47 Stable tag: 2.7.5 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.5 35 Add connectivity checks when determining which IP version to use. 36 34 37 v2.7.4 35 38 Improved file uploads for subfolder clones. -
clonable/trunk/readme-it_IT.txt
r3385333 r3386387 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 47 Stable tag: 2.7.5 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.5 35 Add connectivity checks when determining which IP version to use. 36 34 37 v2.7.4 35 38 Improved file uploads for subfolder clones. -
clonable/trunk/readme-nb_NO.txt
r3385333 r3386387 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 47 Stable tag: 2.7.5 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.5 35 Add connectivity checks when determining which IP version to use. 36 34 37 v2.7.4 35 38 Improved file uploads for subfolder clones. -
clonable/trunk/readme-nl_NL.txt
r3385333 r3386387 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 47 Stable tag: 2.7.5 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.5 35 Add connectivity checks when determining which IP version to use. 36 34 37 v2.7.4 35 38 Improved file uploads for subfolder clones. -
clonable/trunk/readme-sv_SE.txt
r3385333 r3386387 5 5 Tested up to: 6.8.2 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 47 Stable tag: 2.7.5 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.5 35 Add connectivity checks when determining which IP version to use. 36 34 37 v2.7.4 35 38 Improved file uploads for subfolder clones. -
clonable/trunk/readme.txt
r3385333 r3386387 5 5 Tested up to: 6.8.3 6 6 Requires PHP: 7.2 7 Stable tag: 2.7. 47 Stable tag: 2.7.5 8 8 License: GPL v2 or later 9 9 … … 32 32 33 33 == Changelog == 34 v2.7.5 35 Add connectivity checks when determining which IP version to use. 36 34 37 v2.7.4 35 38 Improved file uploads for subfolder clones. -
clonable/trunk/services/SyncService.php
r3302098 r3386387 13 13 class SyncService { 14 14 public function sync_site() { 15 // Reset connectivity check 16 delete_transient("clonable_connection_mode"); 17 15 18 if (get_option('clonable_subfolder_clone_origin_domain')) { 16 19 $url_parts = wp_parse_url('https://' . get_option('clonable_subfolder_clone_origin_domain'));
Note: See TracChangeset
for help on using the changeset viewer.