Plugin Directory

Changeset 2976978


Ignore:
Timestamp:
10/10/2023 11:03:54 AM (2 years ago)
Author:
stuartmcalpine
Message:

Deploy version 4.2.0

Location:
speechkit
Files:
284 added
2 deleted
22 edited

Legend:

Unmodified
Added
Removed
  • speechkit/trunk/languages/speechkit.pot

    r2969729 r2976978  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: BeyondWords - Text-to-Speech 4.1.2\n"
     5"Project-Id-Version: BeyondWords - Text-to-Speech 4.2.0\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/speechkit\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2023-09-21T10:53:11+00:00\n"
     12"POT-Creation-Date: 2023-10-10T09:58:16+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.8.1\n"
  • speechkit/trunk/readme.txt

    r2969729 r2976978  
    44Donate link: https://beyondwords.io
    55Tags: text to speech, text to audio, tts, speech synthesis, podcast, audio
    6 Stable tag: 4.1.2
     6Stable tag: 4.2.0
    77Requires PHP: 7.4
    88Requires at least: 5.8
     
    8080
    8181== Changelog ==
     82
     83= 4.2.0 =
     84
     85Release date: 10th October 2023
     86
     87**Enhancements**
     88
     89* Add `[beyondwords_player]` shortcode. See our "WordPress shortcode" docs at [https://docs.beyondwords.io/docs-and-guides/content/connect-cms/wordpress].
     90
     91**Fixes**
     92
     93* Ensure an array is always returned for `PlayerStyle::getCachedPlayerStyles()` to prevent PHP warnings.
     94* For AMP content, the player is no longer auto-prepended if a custom player is found in the content.
     95* Clean up 'beyondwords_player_style' option on plugin uninstall.
    8296
    8397= 4.1.2 =
  • speechkit/trunk/speechkit.php

    r2969729 r2976978  
    1616 * Author:            BeyondWords
    1717 * Author URI:        https://beyondwords.io
    18  * Version:           4.1.2
     18 * Version:           4.2.0
    1919 * License:           GPL-2.0+
    2020 * License URI:       http://www.gnu.org/licenses/gpl-2.0.txt
     
    3636// Define constants
    3737// phpcs:disable
    38 define('BEYONDWORDS__PLUGIN_VERSION', '4.1.2');
     38define('BEYONDWORDS__PLUGIN_VERSION', '4.2.0');
    3939define('BEYONDWORDS__PLUGIN_DIR',     plugin_dir_path(__FILE__));
    4040define('BEYONDWORDS__PLUGIN_URI',     plugin_dir_url(__FILE__));
  • speechkit/trunk/src/Component/Post/PostContentUtils.php

    r2947765 r2976978  
    8686        // Temporarily remove our Player filter, to exclude the player <div>
    8787        if ($beyondwords_wordpress_plugin && isset($beyondwords_wordpress_plugin->player)) {
    88             remove_filter('the_content', array($beyondwords_wordpress_plugin->player, 'addPlayerToContent'));
     88            remove_filter('the_content', array($beyondwords_wordpress_plugin->player, 'autoPrependPlayer'));
    8989        }
    9090
     
    9494        // Add our Player filter back in again
    9595        if ($beyondwords_wordpress_plugin && isset($beyondwords_wordpress_plugin->player)) {
    96             add_filter('the_content', array($beyondwords_wordpress_plugin->player, 'addPlayerToContent'));
     96            add_filter('the_content', array($beyondwords_wordpress_plugin->player, 'autoPrependPlayer'));
    9797        }
    9898
  • speechkit/trunk/src/Component/Settings/PlayerStyle/PlayerStyle.php

    r2969729 r2976978  
    203203     *
    204204     * @since 4.1.0
    205      *
    206      * @param int $hook projectId BeyondWords Project ID.
     205     * @since 4.2.0 Fix: return empty array instead of false
     206     *
     207     * @param int $projectId BeyondWords Project ID.
    207208     *
    208209     * @return string[] Associative array of Player styles and labels.
     
    212213        $transientName = sprintf('beyondwords_player_styles[%s]', $projectId);
    213214
    214         return get_transient($transientName, []);
     215        $playerStyles = get_transient($transientName);
     216
     217        if (! is_array($playerStyles)) {
     218            return [];
     219        }
     220
     221        return $playerStyles;
    215222    }
    216223
  • speechkit/trunk/src/Core/Uninstaller.php

    r2967566 r2976978  
    3333            'beyondwords_languages',
    3434            'beyondwords_player_ui',
     35            'beyondwords_player_style',
    3536            'beyondwords_player_version',
    3637            'beyondwords_settings_updated',
  • speechkit/trunk/src/Plugin.php

    r2967566 r2976978  
    88use Beyondwords\Wordpress\Core\ApiClient;
    99use Beyondwords\Wordpress\Core\Core;
    10 use Beyondwords\Wordpress\Core\LegacyPlayer;
    11 use Beyondwords\Wordpress\Core\Player;
     10use Beyondwords\Wordpress\Core\Player\LegacyPlayer;
     11use Beyondwords\Wordpress\Core\Player\Player;
    1212use Beyondwords\Wordpress\Core\Updater;
    1313use Beyondwords\Wordpress\Component\Post\AddPlayer\AddPlayer;
  • speechkit/trunk/vendor/autoload.php

    r2969729 r2976978  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit4a0431fa44277627d27011b13cfbc44d::getLoader();
     25return ComposerAutoloaderInit8b481c384704f2b066830e5c020a532c::getLoader();
  • speechkit/trunk/vendor/composer/autoload_classmap.php

    r2967566 r2976978  
    4545    'Beyondwords\\Wordpress\\Core\\CoreUtils' => $baseDir . '/src/Core/CoreUtils.php',
    4646    'Beyondwords\\Wordpress\\Core\\Environment' => $baseDir . '/src/Core/Environment.php',
    47     'Beyondwords\\Wordpress\\Core\\LegacyPlayer' => $baseDir . '/src/Core/LegacyPlayer.php',
    48     'Beyondwords\\Wordpress\\Core\\Player' => $baseDir . '/src/Core/Player.php',
     47    'Beyondwords\\Wordpress\\Core\\Player\\LegacyPlayer' => $baseDir . '/src/Core/Player/LegacyPlayer.php',
     48    'Beyondwords\\Wordpress\\Core\\Player\\Player' => $baseDir . '/src/Core/Player/Player.php',
    4949    'Beyondwords\\Wordpress\\Core\\Request' => $baseDir . '/src/Core/Request.php',
    5050    'Beyondwords\\Wordpress\\Core\\Response' => $baseDir . '/src/Core/Response.php',
  • speechkit/trunk/vendor/composer/autoload_real.php

    r2969729 r2976978  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit4a0431fa44277627d27011b13cfbc44d
     5class ComposerAutoloaderInit8b481c384704f2b066830e5c020a532c
    66{
    77    private static $loader;
     
    2323        }
    2424
    25         spl_autoload_register(array('ComposerAutoloaderInit4a0431fa44277627d27011b13cfbc44d', 'loadClassLoader'), true, true);
     25        spl_autoload_register(array('ComposerAutoloaderInit8b481c384704f2b066830e5c020a532c', 'loadClassLoader'), true, true);
    2626        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    27         spl_autoload_unregister(array('ComposerAutoloaderInit4a0431fa44277627d27011b13cfbc44d', 'loadClassLoader'));
     27        spl_autoload_unregister(array('ComposerAutoloaderInit8b481c384704f2b066830e5c020a532c', 'loadClassLoader'));
    2828
    2929        require __DIR__ . '/autoload_static.php';
    30         call_user_func(\Composer\Autoload\ComposerStaticInit4a0431fa44277627d27011b13cfbc44d::getInitializer($loader));
     30        call_user_func(\Composer\Autoload\ComposerStaticInit8b481c384704f2b066830e5c020a532c::getInitializer($loader));
    3131
    3232        $loader->setClassMapAuthoritative(true);
    3333        $loader->register(true);
    3434
    35         $filesToLoad = \Composer\Autoload\ComposerStaticInit4a0431fa44277627d27011b13cfbc44d::$files;
     35        $filesToLoad = \Composer\Autoload\ComposerStaticInit8b481c384704f2b066830e5c020a532c::$files;
    3636        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    3737            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • speechkit/trunk/vendor/composer/autoload_static.php

    r2969729 r2976978  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit4a0431fa44277627d27011b13cfbc44d
     7class ComposerStaticInit8b481c384704f2b066830e5c020a532c
    88{
    99    public static $files = array (
     
    9090        'Beyondwords\\Wordpress\\Core\\CoreUtils' => __DIR__ . '/../..' . '/src/Core/CoreUtils.php',
    9191        'Beyondwords\\Wordpress\\Core\\Environment' => __DIR__ . '/../..' . '/src/Core/Environment.php',
    92         'Beyondwords\\Wordpress\\Core\\LegacyPlayer' => __DIR__ . '/../..' . '/src/Core/LegacyPlayer.php',
    93         'Beyondwords\\Wordpress\\Core\\Player' => __DIR__ . '/../..' . '/src/Core/Player.php',
     92        'Beyondwords\\Wordpress\\Core\\Player\\LegacyPlayer' => __DIR__ . '/../..' . '/src/Core/Player/LegacyPlayer.php',
     93        'Beyondwords\\Wordpress\\Core\\Player\\Player' => __DIR__ . '/../..' . '/src/Core/Player/Player.php',
    9494        'Beyondwords\\Wordpress\\Core\\Request' => __DIR__ . '/../..' . '/src/Core/Request.php',
    9595        'Beyondwords\\Wordpress\\Core\\Response' => __DIR__ . '/../..' . '/src/Core/Response.php',
     
    127127    {
    128128        return \Closure::bind(function () use ($loader) {
    129             $loader->prefixLengthsPsr4 = ComposerStaticInit4a0431fa44277627d27011b13cfbc44d::$prefixLengthsPsr4;
    130             $loader->prefixDirsPsr4 = ComposerStaticInit4a0431fa44277627d27011b13cfbc44d::$prefixDirsPsr4;
    131             $loader->classMap = ComposerStaticInit4a0431fa44277627d27011b13cfbc44d::$classMap;
     129            $loader->prefixLengthsPsr4 = ComposerStaticInit8b481c384704f2b066830e5c020a532c::$prefixLengthsPsr4;
     130            $loader->prefixDirsPsr4 = ComposerStaticInit8b481c384704f2b066830e5c020a532c::$prefixDirsPsr4;
     131            $loader->classMap = ComposerStaticInit8b481c384704f2b066830e5c020a532c::$classMap;
    132132
    133133        }, null, ClassLoader::class);
  • speechkit/trunk/vendor/composer/installed.json

    r2967566 r2976978  
    151151        {
    152152            "name": "symfony/polyfill-ctype",
    153             "version": "v1.27.0",
    154             "version_normalized": "1.27.0.0",
     153            "version": "v1.28.0",
     154            "version_normalized": "1.28.0.0",
    155155            "source": {
    156156                "type": "git",
    157157                "url": "https://github.com/symfony/polyfill-ctype.git",
    158                 "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
     158                "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
    159159            },
    160160            "dist": {
    161161                "type": "zip",
    162                 "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
    163                 "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
     162                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
     163                "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
    164164                "shasum": ""
    165165            },
     
    173173                "ext-ctype": "For best performance"
    174174            },
    175             "time": "2022-11-03T14:55:06+00:00",
     175            "time": "2023-01-26T09:26:14+00:00",
    176176            "type": "library",
    177177            "extra": {
    178178                "branch-alias": {
    179                     "dev-main": "1.27-dev"
     179                    "dev-main": "1.28-dev"
    180180                },
    181181                "thanks": {
     
    216216            ],
    217217            "support": {
    218                 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
     218                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0"
    219219            },
    220220            "funding": [
     
    236236        {
    237237            "name": "symfony/polyfill-mbstring",
    238             "version": "v1.27.0",
    239             "version_normalized": "1.27.0.0",
     238            "version": "v1.28.0",
     239            "version_normalized": "1.28.0.0",
    240240            "source": {
    241241                "type": "git",
    242242                "url": "https://github.com/symfony/polyfill-mbstring.git",
    243                 "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
     243                "reference": "42292d99c55abe617799667f454222c54c60e229"
    244244            },
    245245            "dist": {
    246246                "type": "zip",
    247                 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
    248                 "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
     247                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
     248                "reference": "42292d99c55abe617799667f454222c54c60e229",
    249249                "shasum": ""
    250250            },
     
    258258                "ext-mbstring": "For best performance"
    259259            },
    260             "time": "2022-11-03T14:55:06+00:00",
     260            "time": "2023-07-28T09:04:16+00:00",
    261261            "type": "library",
    262262            "extra": {
    263263                "branch-alias": {
    264                     "dev-main": "1.27-dev"
     264                    "dev-main": "1.28-dev"
    265265                },
    266266                "thanks": {
     
    302302            ],
    303303            "support": {
    304                 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
     304                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
    305305            },
    306306            "funding": [
     
    322322        {
    323323            "name": "symfony/polyfill-php80",
    324             "version": "v1.27.0",
    325             "version_normalized": "1.27.0.0",
     324            "version": "v1.28.0",
     325            "version_normalized": "1.28.0.0",
    326326            "source": {
    327327                "type": "git",
    328328                "url": "https://github.com/symfony/polyfill-php80.git",
    329                 "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
     329                "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
    330330            },
    331331            "dist": {
    332332                "type": "zip",
    333                 "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
    334                 "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
     333                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
     334                "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
    335335                "shasum": ""
    336336            },
     
    338338                "php": ">=7.1"
    339339            },
    340             "time": "2022-11-03T14:55:06+00:00",
     340            "time": "2023-01-26T09:26:14+00:00",
    341341            "type": "library",
    342342            "extra": {
    343343                "branch-alias": {
    344                     "dev-main": "1.27-dev"
     344                    "dev-main": "1.28-dev"
    345345                },
    346346                "thanks": {
     
    388388            ],
    389389            "support": {
    390                 "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
     390                "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
    391391            },
    392392            "funding": [
  • speechkit/trunk/vendor/composer/installed.php

    r2969729 r2976978  
    22    'root' => array(
    33        'name' => 'beyondwords/wordpress',
    4         'pretty_version' => 'v4.1.2',
    5         'version' => '4.1.2.0',
    6         'reference' => 'af0a122413696fcd7eeaa33104fc6e75357bb363',
     4        'pretty_version' => 'v4.2.0',
     5        'version' => '4.2.0.0',
     6        'reference' => '7b20841eb0646fabff8d04a3ce20bb2569762df3',
    77        'type' => 'project',
    88        'install_path' => __DIR__ . '/../../',
     
    1212    'versions' => array(
    1313        'beyondwords/wordpress' => array(
    14             'pretty_version' => 'v4.1.2',
    15             'version' => '4.1.2.0',
    16             'reference' => 'af0a122413696fcd7eeaa33104fc6e75357bb363',
     14            'pretty_version' => 'v4.2.0',
     15            'version' => '4.2.0.0',
     16            'reference' => '7b20841eb0646fabff8d04a3ce20bb2569762df3',
    1717            'type' => 'project',
    1818            'install_path' => __DIR__ . '/../../',
     
    3939        ),
    4040        'symfony/polyfill-ctype' => array(
    41             'pretty_version' => 'v1.27.0',
    42             'version' => '1.27.0.0',
    43             'reference' => '5bbc823adecdae860bb64756d639ecfec17b050a',
     41            'pretty_version' => 'v1.28.0',
     42            'version' => '1.28.0.0',
     43            'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb',
    4444            'type' => 'library',
    4545            'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
     
    4848        ),
    4949        'symfony/polyfill-mbstring' => array(
    50             'pretty_version' => 'v1.27.0',
    51             'version' => '1.27.0.0',
    52             'reference' => '8ad114f6b39e2c98a8b0e3bd907732c207c2b534',
     50            'pretty_version' => 'v1.28.0',
     51            'version' => '1.28.0.0',
     52            'reference' => '42292d99c55abe617799667f454222c54c60e229',
    5353            'type' => 'library',
    5454            'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
     
    5757        ),
    5858        'symfony/polyfill-php80' => array(
    59             'pretty_version' => 'v1.27.0',
    60             'version' => '1.27.0.0',
    61             'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936',
     59            'pretty_version' => 'v1.28.0',
     60            'version' => '1.28.0.0',
     61            'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5',
    6262            'type' => 'library',
    6363            'install_path' => __DIR__ . '/../symfony/polyfill-php80',
  • speechkit/trunk/vendor/symfony/polyfill-ctype/LICENSE

    r2674329 r2976978  
    1 Copyright (c) 2018-2019 Fabien Potencier
     1Copyright (c) 2018-present Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • speechkit/trunk/vendor/symfony/polyfill-ctype/composer.json

    r2943742 r2976978  
    3232    "extra": {
    3333        "branch-alias": {
    34             "dev-main": "1.27-dev"
     34            "dev-main": "1.28-dev"
    3535        },
    3636        "thanks": {
  • speechkit/trunk/vendor/symfony/polyfill-mbstring/LICENSE

    r2674329 r2976978  
    1 Copyright (c) 2015-2019 Fabien Potencier
     1Copyright (c) 2015-present Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • speechkit/trunk/vendor/symfony/polyfill-mbstring/Mbstring.php

    r2943742 r2976978  
    7070    public const MB_CASE_FOLD = \PHP_INT_MAX;
    7171
    72     private const CASE_FOLD = [
     72    private const SIMPLE_CASE_FOLD = [
    7373        ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"],
    7474        ['μ', 's', 'ι',        'σ', 'β',        'θ',        'φ',        'π',        'κ',        'ρ',        'ε',        "\xE1\xB9\xA1", 'ι'],
     
    302302            } else {
    303303                if (self::MB_CASE_FOLD === $mode) {
    304                     $s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s);
     304                    static $caseFolding = null;
     305                    if (null === $caseFolding) {
     306                        $caseFolding = self::getData('caseFolding');
     307                    }
     308                    $s = strtr($s, $caseFolding);
    305309                }
    306310
     
    407411    public static function mb_check_encoding($var = null, $encoding = null)
    408412    {
     413        if (PHP_VERSION_ID < 70200 && \is_array($var)) {
     414            trigger_error('mb_check_encoding() expects parameter 1 to be string, array given', \E_USER_WARNING);
     415
     416            return null;
     417        }
     418
    409419        if (null === $encoding) {
    410420            if (null === $var) {
     
    414424        }
    415425
    416         return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var);
     426        if (!\is_array($var)) {
     427            return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var);
     428        }
     429
     430        foreach ($var as $key => $value) {
     431            if (!self::mb_check_encoding($key, $encoding)) {
     432                return false;
     433            }
     434            if (!self::mb_check_encoding($value, $encoding)) {
     435                return false;
     436            }
     437        }
     438
     439        return true;
     440
    417441    }
    418442
     
    639663    public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
    640664    {
    641         $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
    642         $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
     665        [$haystack, $needle] = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], [
     666            self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding),
     667            self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding),
     668        ]);
    643669
    644670        return self::mb_strpos($haystack, $needle, $offset, $encoding);
     
    675701    public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
    676702    {
    677         $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
    678         $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
     703        $haystack = self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding);
     704        $needle = self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding);
     705
     706        $haystack = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $haystack);
     707        $needle = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $needle);
    679708
    680709        return self::mb_strrpos($haystack, $needle, $offset, $encoding);
     
    799828    }
    800829
     830    public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, string $encoding = null): string
     831    {
     832        if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) {
     833            throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH');
     834        }
     835
     836        if (null === $encoding) {
     837            $encoding = self::mb_internal_encoding();
     838        }
     839
     840        try {
     841            $validEncoding = @self::mb_check_encoding('', $encoding);
     842        } catch (\ValueError $e) {
     843            throw new \ValueError(sprintf('mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given', $encoding));
     844        }
     845
     846        // BC for PHP 7.3 and lower
     847        if (!$validEncoding) {
     848            throw new \ValueError(sprintf('mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given', $encoding));
     849        }
     850
     851        if (self::mb_strlen($pad_string, $encoding) <= 0) {
     852            throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string');
     853        }
     854
     855        $paddingRequired = $length - self::mb_strlen($string, $encoding);
     856
     857        if ($paddingRequired < 1) {
     858            return $string;
     859        }
     860
     861        switch ($pad_type) {
     862            case \STR_PAD_LEFT:
     863                return self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding).$string;
     864            case \STR_PAD_RIGHT:
     865                return $string.self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding);
     866            default:
     867                $leftPaddingLength = floor($paddingRequired / 2);
     868                $rightPaddingLength = $paddingRequired - $leftPaddingLength;
     869
     870                return self::mb_substr(str_repeat($pad_string, $leftPaddingLength), 0, $leftPaddingLength, $encoding).$string.self::mb_substr(str_repeat($pad_string, $rightPaddingLength), 0, $rightPaddingLength, $encoding);
     871        }
     872    }
     873
    801874    private static function getSubpart($pos, $part, $haystack, $encoding)
    802875    {
  • speechkit/trunk/vendor/symfony/polyfill-mbstring/bootstrap.php

    r2943742 r2976978  
    133133}
    134134
     135if (!function_exists('mb_str_pad')) {
     136    function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); }
     137}
     138
    135139if (extension_loaded('mbstring')) {
    136140    return;
  • speechkit/trunk/vendor/symfony/polyfill-mbstring/bootstrap80.php

    r2943742 r2976978  
    129129}
    130130
     131if (!function_exists('mb_str_pad')) {
     132    function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); }
     133}
     134
    131135if (extension_loaded('mbstring')) {
    132136    return;
  • speechkit/trunk/vendor/symfony/polyfill-mbstring/composer.json

    r2943742 r2976978  
    3232    "extra": {
    3333        "branch-alias": {
    34             "dev-main": "1.27-dev"
     34            "dev-main": "1.28-dev"
    3535        },
    3636        "thanks": {
  • speechkit/trunk/vendor/symfony/polyfill-php80/LICENSE

    r2674329 r2976978  
    1 Copyright (c) 2020 Fabien Potencier
     1Copyright (c) 2020-present Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • speechkit/trunk/vendor/symfony/polyfill-php80/composer.json

    r2943742 r2976978  
    3131    "extra": {
    3232        "branch-alias": {
    33             "dev-main": "1.27-dev"
     33            "dev-main": "1.28-dev"
    3434        },
    3535        "thanks": {
Note: See TracChangeset for help on using the changeset viewer.