Plugin Directory

Changeset 3121209


Ignore:
Timestamp:
07/18/2024 10:05:00 AM (21 months ago)
Author:
clonable
Message:

Version 2.2.0

Location:
clonable
Files:
118 added
16 edited

Legend:

Unmodified
Added
Removed
  • clonable/trunk/clonable-wp.php

    r3104460 r3121209  
    55Description: Official plugin for improving your clones made with Clonable.
    66Plugin URI: https://kb.clonable.net/en/introduction/getting-started/wordpress#de-clonable-plug-in-downloaden
    7 Version: 2.1.16
     7Version: 2.2.0
    88Author: Clonable BV
    99Author URI: https://www.clonable.net
     
    3737include_once "models/ApiKey.php";
    3838include_once "models/ClonedSite.php";
     39include_once "models/Settings.php";
    3940
    4041// custom objects
     
    4546include_once "objects/ClonableConfig.php";
    4647include_once "objects/Notification.php";
     48include_once "objects/CircuitBreaker.php";
    4749
    4850// include views
    4951include_once "views/Layout.php";
    5052include_once "views/ViewInterface.php";
     53include_once "views/DashboardView.php";
    5154include_once "views/LanguageSwitcherView.php";
    5255include_once "views/LanguageTagView.php";
    5356include_once "views/WoocommerceView.php";
    54 include_once "views/GeneralSettingsView.php";
     57include_once "views/SettingsView.php";
    5558include_once "views/OnboardingView.php";
    5659
    5760// include controllers
    5861include_once "controllers/Controller.php";
     62include_once "controllers/DashboardController.php";
    5963include_once "controllers/WoocommerceController.php";
    6064include_once "controllers/LanguageTagController.php";
    6165include_once "controllers/LanguageSwitcherController.php";
    62 include_once "controllers/GeneralSettingController.php";
     66include_once "controllers/SettingController.php";
    6367include_once "controllers/LandingPageController.php";
    6468
     
    98102
    99103define('CLONABLE_NAME', 'Clonable');
    100 define('CLONABLE_VERSION', '2.1.16');
     104define('CLONABLE_VERSION', '2.2.0');
    101105
    102106try {
  • clonable/trunk/objects/CurlBuilder.php

    r3039574 r3121209  
    2020    }
    2121
    22     public function set_standard_headers($site_url) {
    23         curl_setopt($this->curl, CURLOPT_TIMEOUT, 30);
     22    public function set_standard_headers($site_url, $max_timeout = 15) {
     23        curl_setopt($this->curl, CURLOPT_TIMEOUT, $max_timeout);
    2424        curl_setopt($this->curl, CURLOPT_DNS_USE_GLOBAL_CACHE, false);
    2525        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);           // get body response
  • clonable/trunk/readme-da_DK.txt

    r3104460 r3121209  
    11=== Clonable - Oversæt Woocommerce / WordPress-websted. Flersproget på 5 minutter ===
    22Contributors: clonable
    3 Tags: oversættelser, oversæt, flersproget, clonable, seo, hreflang, undermappe, oversættelse
     3Tags: oversættelser, oversæt, flersproget, clonable, seo
    44Requires at least: 5.0
    5 Tested up to: 6.5.4
    6 Requires PHP: 7.0
    7 Stable tag: 2.1.16
     5Tested up to: 6.6
     6Requires PHP: 7.2
     7Stable tag: 2.2.0
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.0
     35Tilføjet understøttelse af WordPress 6.6 og hævet minimumsversionen for PHP.
     36Tilføjet afbryder til undermappekommunikation med Clonable.
     37Tilføjet indstillingsvindue til aktivering og deaktivering af specifikke tjenester.
     38
    3439v2.1.16
    3540Bedre standardværdier for klonbare indstillinger.
  • clonable/trunk/readme-de_DE.txt

    r3104460 r3121209  
    11=== Clonable - Woocommerce / WordPress Website übersetzen. Mehrsprachig in 5 Minuten. ===
    22Contributors: clonable
    3 Tags: Übersetzungen, übersetzen, mehrsprachig, clonable, seo, hreflang, subfolder, Übersetzung
     3Tags: Übersetzungen, übersetzen, mehrsprachig, clonable, seo
    44Requires at least: 5.0
    5 Tested up to: 6.5.4
    6 Requires PHP: 7.0
    7 Stable tag: 2.1.16
     5Tested up to: 6.6
     6Requires PHP: 7.2
     7Stable tag: 2.2.0
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.0
     35Unterstützung für WordPress 6.6 hinzugefügt und die Mindestversion für PHP erhöht.
     36Unterbrecher für die Kommunikation von Unterordnern mit Clonable hinzugefügt.
     37Einstellungsfenster zum Aktivieren und Deaktivieren bestimmter Dienste hinzugefügt.
     38
    3439v2.1.16
    3540Bessere Standardwerte für Clonable-Optionen.
  • clonable/trunk/readme-es_ES.txt

    r3104460 r3121209  
    11=== Clonable - Traducir Woocommerce / WordPress sitio web. Multilingüe en 5 minutos. ===
    22Contributors: clonable
    3 Tags: traducciones, traducir, multilingüe, clonable, seo, hreflang, subcarpeta, traducción
     3Tags: traducciones, traducir, multilingüe, clonable, seo
    44Requires at least: 5.0
    5 Tested up to: 6.5.4
    6 Requires PHP: 7.0
    7 Stable tag: 2.1.16
     5Tested up to: 6.6
     6Requires PHP: 7.2
     7Stable tag: 2.2.0
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.0
     35Añadido soporte para WordPress 6.6 y bumped la versión mínima para PHP.
     36Añadido disyuntor para la comunicación de subcarpetas con Clonable.
     37Añadida ventana de configuración para activar y desactivar servicios específicos.
     38
    3439v2.1.16
    3540Mejores valores por defecto para las opciones de Clonable.
  • clonable/trunk/readme-fr_FR.txt

    r3104460 r3121209  
    11===== Clonable - Traduire un site Woocommerce / WordPress. Multilingue en 5 minutes. ===
    22Contributors : clonable
    3 Tags : traductions, traduire, multilingue, clonable, seo, hreflang, sous-dossier, traduction
     3Tags : traductions, traduire, multilingue, clonable, seo
    44Requires at least: 5.0
    5 Tested up to: 6.5.4
    6 Requires PHP: 7.0
    7 Stable tag: 2.1.16
     5Tested up to: 6.6
     6Requires PHP: 7.2
     7Stable tag: 2.2.0
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.0
     35Ajout du support de WordPress 6.6 et augmentation de la version minimale de PHP.
     36Ajout d'un disjoncteur pour la communication des sous-dossiers avec Clonable.
     37Ajout d'une fenêtre de paramétrage pour activer et désactiver des services spécifiques.
     38
    3439v2.1.16
    3540Meilleures valeurs par défaut pour les options Clonable.
  • clonable/trunk/readme-it_IT.txt

    r3104460 r3121209  
    11=== Clonable - Traduci il sito Woocommerce / WordPress. Multilingua in 5 minuti. ===
    22Contributors: clonable
    3 Tags: traduzioni, tradurre, multilingue, clonable, seo, hreflang, sottocartella, traduzione
     3Tags: traduzioni, tradurre, multilingue, clonable, seo
    44Requires at least: 5.0
    5 Tested up to: 6.5.4
    6 Requires PHP: 7.0
    7 Stable tag: 2.1.16
     5Tested up to: 6.6
     6Requires PHP: 7.2
     7Stable tag: 2.2.0
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.0
     35Aggiunto il supporto per WordPress 6.6 e aumentata la versione minima di PHP.
     36Aggiunto un interruttore per la comunicazione delle sottocartelle con Clonable.
     37Aggiunta la finestra delle impostazioni per abilitare e disabilitare servizi specifici.
     38
    3439v2.1.16
    3540Migliori valori predefiniti per le opzioni Clonable.
  • clonable/trunk/readme-nb_NO.txt

    r3104460 r3121209  
    11=== Clonable - Oversett Woocommerce / WordPress-nettsted. Flerspråklig på 5 minutter ===
    22Contributors: clonable
    3 Tags: oversettelser, oversette, flerspråklig, clonable, seo, hreflang, undermappe, oversettelse
     3Tags: oversettelser, oversette, flerspråklig, clonable
    44Requires at least: 5.0
    5 Tested up to: 6.5.4
    6 Requires PHP: 7.0
    7 Stable tag: 2.1.16
     5Tested up to: 6.6
     6Requires PHP: 7.2
     7Stable tag: 2.2.0
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.0
     35Lagt til støtte for WordPress 6.6 og økt minimumsversjonen for PHP.
     36Lagt til strømbryter for undermappekommunikasjon med Clonable.
     37Lagt til innstillingsvindu for å aktivere og deaktivere spesifikke tjenester.
     38
    3439v2.1.16
    3540Bedre standardverdier for klonbare alternativer.
  • clonable/trunk/readme-nl_NL.txt

    r3104460 r3121209  
    11=== Clonable - Vertaal Woocommerce / WordPress website. Meertalig in 5 minuten. ===
    22Contributors: clonable
    3 Tags: vertalingen, vertalen, meertalig, clonable, seo, hreflang, submap, vertaling
     3Tags: vertalingen, vertalen, meertalig, clonable
    44Requires at least: 5.0
    5 Tested up to: 6.5.4
    6 Requires PHP: 7.0
    7 Stable tag: 2.1.16
     5Tested up to: 6.6
     6Requires PHP: 7.2
     7Stable tag: 2.2.0
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.0
     35Ondersteuning toegevoegd voor WordPress 6.6 en de minimale versie voor PHP verhoogd.
     36Stroomonderbreker toegevoegd voor submapcommunicatie met Clonable.
     37Instellingenvenster toegevoegd voor het in- en uitschakelen van specifieke services.
     38
    3439v2.1.16
    3540Betere standaardwaarden voor klonen-opties.
  • clonable/trunk/readme-sv_SE.txt

    r3104460 r3121209  
    11=== Clonable - Översätt Woocommerce / WordPress-webbplats. Flerspråkig på 5 minuter. ===
    22Contributors: clonable
    3 Tags: översättningar, översätta, flerspråkig, clonable, seo, hreflang, undermapp, översättning
     3Tags: översättningar, översätta, flerspråkig, clonable, seo
    44Requires at least: 5.0
    5 Tested up to: 6.5.4
    6 Requires PHP: 7.0
    7 Stable tag: 2.1.16
     5Tested up to: 6.6
     6Requires PHP: 7.2
     7Stable tag: 2.2.0
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.0
     35Lagt till stöd för WordPress 6.6 och höjt lägsta version för PHP.
     36Lagt till brytare för undermappskommunikation med Clonable.
     37Inställningsfönster för aktivering och inaktivering av specifika tjänster har lagts till.
     38
    3439v2.1.16
    3540Bättre standardvärden för Clonable-alternativ.
  • clonable/trunk/readme.txt

    r3104460 r3121209  
    11=== Clonable - Translate Woocommerce / WordPress website. Multilingual in 5 minutes. ===
    22Contributors: clonable
    3 Tags: translations, translate, multilingual, clonable, seo, hreflang, subfolder, translation
     3Tags: translations, translate, multilingual, clonable, seo
    44Requires at least: 5.0
    5 Tested up to: 6.5.4
    6 Requires PHP: 7.0
    7 Stable tag: 2.1.16
     5Tested up to: 6.6
     6Requires PHP: 7.2
     7Stable tag: 2.2.0
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.0
     35Added support for WordPress 6.6 and bumped the minimum version for PHP.
     36Added circuit breaker for subfolder communication with Clonable.
     37Added settings window for enabling and disabling specific services.
     38
    3439v2.1.16
    3540Better default values for Clonable options.
  • clonable/trunk/routes/Router.php

    r3012322 r3121209  
    33namespace Clonable\Routes;
    44
    5 use Clonable\Controllers\GeneralSettingController;
     5use Clonable\Controllers\SettingController;
    66use Clonable\Controllers\LandingPageController;
    77use Clonable\Controllers\LanguageSwitcherController;
    88use Clonable\Controllers\LanguageTagController;
    99use Clonable\Controllers\WooCommerceController;
     10use Clonable\Controllers\DashboardController;
    1011use Clonable\MiddlewareHandler;
    1112use Clonable\Traits\WooCommerceCheck;
     
    5859        ];
    5960
    60         $routes['general'] = [
    61             'name' => 'General settings',
    62             'controller' => GeneralSettingController::class,
     61        $routes['dashboard'] = [
     62            'name' => 'Dashboard',
     63            'controller' => DashboardController::class,
    6364            'type' => $this::PAGE_TYPE_TAB,
    6465            'middleware' => ['auth'],
     
    8889        ];
    8990
     91        $routes['settings'] = [
     92            'name' => 'Settings',
     93            'controller' => SettingController::class,
     94            'type' => $this::PAGE_TYPE_TAB,
     95            'middleware' => ['auth'],
     96        ];
     97
    9098        $this->routes = $routes;
    9199    }
     
    95103            return "setup";
    96104        } else {
    97             return "general";
     105            return "dashboard";
    98106        }
    99107    }
  • clonable/trunk/services/AllowedHostsService.php

    r3058276 r3121209  
    77class AllowedHostsService {
    88    public function __construct() {
     9        if (get_option('clonable_allowed_hosts_enabled', 'on') !== 'on') {
     10            return;
     11        }
    912        add_filter('allowed_redirect_hosts', [$this, 'add_allowed_hosts'], 10, 2);
    1013    }
  • clonable/trunk/services/LanguageTagService.php

    r3104460 r3121209  
    1010class LanguageTagService {
    1111    public function clonable_echo_language_tags() {
     12        if (get_option('clonable_language_tag_service_enabled', 'on') !== 'on') {
     13            return;
     14        }
     15
    1216        try {
    1317            $tags = $this->clonable_get_all_language_tags();
  • clonable/trunk/services/LocaleService.php

    r3104460 r3121209  
    99
    1010    public function __construct() {
     11        if (get_option('clonable_locale_service_enabled', 'on') !== 'on') {
     12            return;
     13        }
     14
    1115        $response = get_option("clonable_site");
    1216        if (empty($response)) {
  • clonable/trunk/services/SubfolderService.php

    r3104460 r3121209  
    55use Clonable\Helpers\Functions;
    66use Clonable\Models\Site;
     7use Clonable\Objects\CircuitBreaker;
    78use Clonable\Objects\CurlBuilder;
    89use Clonable\Objects\ClonableResponse;
     
    1011
    1112class SubfolderService {
     13    private $circuit_breaker;
     14
    1215    public function __construct() {
     16        if (get_option('clonable_subfolder_service_enabled', 'on') !== 'on') {
     17            return;
     18        }
     19
    1320        $languages = $this->get_subfolder_languages();
    1421        if (empty($languages) && !is_admin()) {
     
    1825        }
    1926
     27        $this->circuit_breaker = new CircuitBreaker();
    2028        add_filter('woocommerce_get_script_data', [$this, 'setup_subfolder_script_data'], 1, 2);
    2129        add_action('plugins_loaded', array($this, 'subfolder_request_intercept'), 2);
     
    7886
    7987        if ($is_clonable_page) {
     88            // Check the circuit breaker before actually sending the request to Clonable
     89            if ($this->circuit_breaker->isOpen()) {
     90                $this->circuit_breaker_response();
     91                // phpcs:enable WordPress.Security.EscapeOutput.OutputNotEscaped
     92                exit;
     93            }
     94
    8095            $headers = getallheaders();
    8196            $request_method = $server_data['REQUEST_METHOD'];
     
    8499            $clonable_response = $this->make_curl_request($request_url, $headers, $request_method, $post_body);
    85100
    86             // Send status code
     101            $this->circuit_breaker->handle($clonable_response->get_code() < 500);
     102            if ($this->circuit_breaker->isOpen()) {
     103                $this->circuit_breaker_response();
     104                // phpcs:enable WordPress.Security.EscapeOutput.OutputNotEscaped
     105                exit; // exit current script, otherwise the page gets loaded twice at the bottom of the page
     106            }
     107
     108            // Set status code
    87109            status_header($clonable_response->get_code());
    88110
     
    117139    }
    118140
     141    private function circuit_breaker_response() {
     142        status_header(504);
     143        echo '<h1>Bad Gateway</h1><br/>';
     144        echo '<p>The server, while acting as a gateway or proxy, did not get a response in time from the upstream server that it needed in order to complete the request.</p>';
     145        if (Functions::can_log_sensitive()) {
     146            echo "<br/>";
     147            echo "<h2>Admin only:</h2>";
     148            $this->circuit_breaker->debug();
     149        }
     150    }
     151
    119152    /**
    120153     * @param $content_type
     
    172205
    173206        try {
     207            $max_timeout = get_option('clonable_max_proxy_timeout', 15);
    174208            $site_url = str_replace(array('https://', 'http://'), '', Functions::get_root_domain());
    175209            $curl = $curl_builder
    176210                ->set_request_type($request_type)
    177                 ->set_standard_headers($site_url)
     211                ->set_standard_headers($site_url, $max_timeout)
    178212                ->set_header_response($headers)
    179213                ->set_http_headers($request_headers)
    180214                ->build();
    181215        } catch (Exception $e) {
     216            curl_close($curl_builder->build());
     217
    182218            error_log("Clonable failed to forward the request: {$e->getMessage()}");
    183219            $message = 'An error occurred. Please check the server logs.<br/>';
     
    204240                $message .= $error;
    205241            }
    206             return new ClonableResponse($message, $headers, 500);
     242            return new ClonableResponse($message, $headers ?? [], 504);
    207243        }
    208244
Note: See TracChangeset for help on using the changeset viewer.