Plugin Directory

Changeset 3385333


Ignore:
Timestamp:
10/27/2025 03:37:15 PM (5 months ago)
Author:
clonable
Message:

version 2.7.4

Location:
clonable
Files:
123 added
12 edited

Legend:

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

    r3384042 r3385333  
    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.7.3
     7Version: 2.7.4
    88Author: Clonable BV
    99Author URI: https://www.clonable.net
     
    115115
    116116define('CLONABLE_NAME', 'Clonable');
    117 define('CLONABLE_VERSION', '2.7.3');
     117define('CLONABLE_VERSION', '2.7.4');
    118118
    119119if (defined('WP_CLI') && WP_CLI) {
  • clonable/trunk/readme-da_DK.txt

    r3384042 r3385333  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.3
     7Stable tag: 2.7.4
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.4
     35Improved file uploads for subfolder clones.
     36
    3437v2.7.3
    3538Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013).
  • clonable/trunk/readme-de_DE.txt

    r3384042 r3385333  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.3
     7Stable tag: 2.7.4
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.4
     35Improved file uploads for subfolder clones.
     36
    3437v2.7.3
    3538Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013).
  • clonable/trunk/readme-es_ES.txt

    r3384042 r3385333  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.3
     7Stable tag: 2.7.4
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.4
     35Improved file uploads for subfolder clones.
     36
    3437v2.7.3
    3538Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013).
  • clonable/trunk/readme-fr_FR.txt

    r3384042 r3385333  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.3
     7Stable tag: 2.7.4
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.4
     35Improved file uploads for subfolder clones.
     36
    3437v2.7.3
    3538Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013).
  • clonable/trunk/readme-it_IT.txt

    r3384042 r3385333  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.3
     7Stable tag: 2.7.4
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.4
     35Improved file uploads for subfolder clones.
     36
    3437v2.7.3
    3538Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013).
  • clonable/trunk/readme-nb_NO.txt

    r3384042 r3385333  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.3
     7Stable tag: 2.7.4
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.4
     35Improved file uploads for subfolder clones.
     36
    3437v2.7.3
    3538Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013).
  • clonable/trunk/readme-nl_NL.txt

    r3384042 r3385333  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.3
     7Stable tag: 2.7.4
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.4
     35Improved file uploads for subfolder clones.
     36
    3437v2.7.3
    3538Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013).
  • clonable/trunk/readme-sv_SE.txt

    r3384042 r3385333  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.3
     7Stable tag: 2.7.4
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.4
     35Improved file uploads for subfolder clones.
     36
    3437v2.7.3
    3538Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013).
  • clonable/trunk/readme.txt

    r3384042 r3385333  
    55Tested up to: 6.8.3
    66Requires PHP: 7.2
    7 Stable tag: 2.7.3
     7Stable tag: 2.7.4
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.4
     35Improved file uploads for subfolder clones.
     36
    3437v2.7.3
    3538Improved support for IPv6 on hosts with Curl version < 7.34.0 (dec 2013).
  • clonable/trunk/services/SubfolderService.php

    r3384042 r3385333  
    227227        }
    228228
     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
    229238        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);
    255254            }
    256255        }
    257256
    258257        $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        }
    259289        return $data;
    260290    }
Note: See TracChangeset for help on using the changeset viewer.