Plugin Directory

Changeset 3232500


Ignore:
Timestamp:
01/31/2025 09:19:48 AM (14 months ago)
Author:
clonable
Message:

Version 2.3.1

Location:
clonable
Files:
116 added
13 edited

Legend:

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

    r3222934 r3232500  
    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.3.0
     7Version: 2.3.1
    88Author: Clonable BV
    99Author URI: https://www.clonable.net
     
    104104
    105105define('CLONABLE_NAME', 'Clonable');
    106 define('CLONABLE_VERSION', '2.3.0');
     106define('CLONABLE_VERSION', '2.3.1');
    107107
    108108try {
  • clonable/trunk/helpers/Session.php

    r3104460 r3232500  
    77
    88    public static function old($option_name, $default_value = false) {
     9        self::start_session_if_needed();
    910        if (isset($_SESSION[self::CLONABLE_VALIDATION_KEY][$option_name])) {
    1011            return $_SESSION[self::CLONABLE_VALIDATION_KEY][$option_name];
     
    1415
    1516    public static function put_validation_data($key, $data) {
     17        self::start_session_if_needed();
    1618        $data = Json::handle_output(Json::handle_output($data));
    1719        $_SESSION[self::CLONABLE_VALIDATION_KEY][$key] = $data;
     
    1921
    2022    public static function clear_validation_data() {
     23        self::start_session_if_needed();
    2124        unset($_SESSION[self::CLONABLE_VALIDATION_KEY]);
    2225    }
     26
     27    public static function start_session_if_needed() {
     28        if (!session_id()) {
     29            session_start();
     30        }
     31    }
    2332}
  • clonable/trunk/models/Site.php

    r3198101 r3232500  
    7272        $mapped_subdomains = array_map(function ($clone) use ($domain) {
    7373            if ($clone["domain"] == $domain) {
    74                 return $clone["subfolder_clone"];
     74                return [
     75                    'subfolder_clone' => $clone["subfolder_clone"],
     76                    'with_trailing_slash' => ($clone["use_subfolder_trailing_slash"] ?? true),
     77                ];
    7578            }
    7679            return null;
     
    9396        }
    9497
    95         return 'https://' . $prefix . $clone['domain'] . $clone['subfolder_clone'];
     98        $use_trailing_slash = ($clone['use_subfolder_trailing_slash'] ?? true);
     99        if ($use_trailing_slash) {
     100            return 'https://' . $prefix . $clone['domain'] . $clone['subfolder_clone'];
     101        } else {
     102            return 'https://' . $prefix . $clone['domain'] . substr($clone['subfolder_clone'], 0, -1);
     103        }
    96104    }
    97105
  • clonable/trunk/readme-da_DK.txt

    r3222934 r3232500  
    55Tested up to: 6.7.1
    66Requires PHP: 7.2
    7 Stable tag: 2.3.0
     7Stable tag: 2.3.1
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.3.1
     35Understøttelse af kloner af undermapper uden efterfølgende skråstreg.
     36Rettelse af udefinerede sessioner.
     37
    3438v2.3.0
    3539Kompatibilitet med WooCommerce High-Performance Order Storage
  • clonable/trunk/readme-de_DE.txt

    r3222934 r3232500  
    55Tested up to: 6.7.1
    66Requires PHP: 7.2
    7 Stable tag: 2.3.0
     7Stable tag: 2.3.1
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.3.1
     35Unterstützung für Unterordner-Klone mit nicht-nachlaufendem Schrägstrich.
     36Fix für undefinierte Sitzungen.
     37
    3438v2.3.0
    3539Kompatibilität mit WooCommerce High-Performance Order Storage
  • clonable/trunk/readme-es_ES.txt

    r3222934 r3232500  
    55Tested up to: 6.7.1
    66Requires PHP: 7.2
    7 Stable tag: 2.3.0
     7Stable tag: 2.3.1
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.3.1
     35Soporte para clones de subcarpetas sin barra diagonal.
     36Corrección de sesiones no definidas.
     37
    3438v2.3.0
    3539Compatibilidad con High-Performance Order Storage
  • clonable/trunk/readme-fr_FR.txt

    r3222934 r3232500  
    55Tested up to: 6.7.1
    66Requires PHP: 7.2
    7 Stable tag: 2.3.0
     7Stable tag: 2.3.1
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.3.1
     35Prise en charge des clones de sous-dossiers sans barre oblique de fin.
     36Correction des sessions indéfinies.
     37
    3438v2.3.0
    3539Compatibilité avec WooCommerce High-Performance Order Storage
  • clonable/trunk/readme-it_IT.txt

    r3222934 r3232500  
    55Tested up to: 6.7.1
    66Requires PHP: 7.2
    7 Stable tag: 2.3.0
     7Stable tag: 2.3.1
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.3.1
     35Supporto per i cloni di sottocartelle con slash non traccianti.
     36Correzione di sessioni non definite.
     37
    3438v2.3.0
    3539Compatibilità con High-Performance Order Storage
  • clonable/trunk/readme-nb_NO.txt

    r3222934 r3232500  
    55Tested up to: 6.7.1
    66Requires PHP: 7.2
    7 Stable tag: 2.3.0
     7Stable tag: 2.3.1
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.3.1
     35Støtte for kloner av undermapper uten skråstrek.
     36Løsning for udefinerte økter.
     37
    3438v2.3.0
    3539Kompatibilitet med High-Performance Order Storage
  • clonable/trunk/readme-nl_NL.txt

    r3222934 r3232500  
    55Tested up to: 6.7.1
    66Requires PHP: 7.2
    7 Stable tag: 2.3.0
     7Stable tag: 2.3.1
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.3.1
     35Ondersteuning voor niet-trailing slash submappen klonen.
     36Fix voor ongedefinieerde sessies.
     37
    3438v2.3.0
    3539Compatibiliteit met WooCommerce High-Performance Order Storage
  • clonable/trunk/readme-sv_SE.txt

    r3222934 r3232500  
    55Tested up to: 6.7.1
    66Requires PHP: 7.2
    7 Stable tag: 2.3.0
     7Stable tag: 2.3.1
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.3.1
     35Stöd för kloner av undermappar med snedstreck utan efterföljande snedstreck.
     36Fix för odefinierade sessioner.
     37
    3438v2.3.0
    3539Kompatibilitet med High-Performance Order Storage
  • clonable/trunk/readme.txt

    r3222934 r3232500  
    55Tested up to: 6.7.1
    66Requires PHP: 7.2
    7 Stable tag: 2.3.0
     7Stable tag: 2.3.1
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.3.1
     35Support for non-trailing slash subfolder clones.
     36Fix for undefined sessions.
     37
    3438v2.3.0
    3539Compatibility with WooCommerce High-Performance Order Storage
  • clonable/trunk/services/SubfolderService.php

    r3185619 r3232500  
    5757    }
    5858
     59    /**
     60     * @return array
     61     */
    5962    private function get_subfolder_languages() {
    6063        $response = get_option("clonable_site");
     
    7073        $server_data = $_SERVER; // this fixes some linting rules
    7174
    72         $languages = $this->get_subfolder_languages();
     75        $subfolder_languages = $this->get_subfolder_languages();
    7376        $is_clonable_page = false;
    74         $request_path = $server_data['REQUEST_URI'];
    75 
     77
     78        $request_url = explode('?', $server_data['REQUEST_URI'], 2);
     79        $request_path = $request_url[0] ?? '/';
    7680        if ($request_path == null || $request_path == '/' || !empty($server_data['HTTP_CLONABLE_CLONE_SUBFOLDER'])) {
    7781            return;
     
    7983
    8084        // Check if this request is for a subfolder
    81         foreach ($languages as $language) {
    82             if (Functions::str_starts_with($request_path, $language)) {
     85        foreach ($subfolder_languages as $subfolder_language) {
     86            if (Functions::str_starts_with($request_path, $subfolder_language['subfolder_clone'])) {
    8387                $is_clonable_page = true;
    8488                break;
     
    8690
    8791            // Intercept cases where eg /en is requested. Redirect those to /en/
    88             $trimmed_lang = rtrim($language, '/');
     92            $trimmed_lang = rtrim($subfolder_language['subfolder_clone'], '/');
     93
    8994            if ($request_path === $trimmed_lang) {
    90                 wp_redirect($language, 302, 'WordPress - Clonable');
    91                 exit();
    92             }
    93         }
    94 
     95                if ($subfolder_language['with_trailing_slash']) {
     96                    wp_redirect($subfolder_language['subfolder_clone'], 302, 'WordPress - Clonable');
     97                    exit();
     98                } else {
     99                    $is_clonable_page = true;
     100                    break;
     101                }
     102            }
     103        }
     104
     105        $request_path = $request_path . (count($request_url) === 2 ? "?{$request_url[1]}" : "");
    95106        if ($is_clonable_page) {
    96107            // Check the circuit breaker before actually sending the request to Clonable
Note: See TracChangeset for help on using the changeset viewer.