Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/wp-user-avatar/src/Admin/SettingsPages/Membership/views/orders/add-edit-order.php
+++ b/wp-user-avatar/src/Admin/SettingsPages/Membership/views/orders/add-edit-order.php
@@ -132,7 +132,7 @@
</div>
<script type="text/javascript">
var ppress_order_replace_modal_title = '<?php esc_html_e('Add or Replace Order Item', 'wp-user-avatar'); ?>';
- var ppress_modal_empty_plan_error = '<?php esc_html_e('Please select a subscription plan', 'wp-user-avatar'); ?>';
+ var ppress_modal_empty_plan_error = '<?php esc_html_e('Please select a membership plan', 'wp-user-avatar'); ?>';
</script>
<script type="text/html" id="tmpl-add-replace-order-template">
<div class="ppress-order-item-modal-wrap">
--- a/wp-user-avatar/src/Cron.php
+++ b/wp-user-avatar/src/Cron.php
@@ -28,7 +28,7 @@
public function check_for_expired_subscriptions()
{
$subs = SubscriptionRepository::init()->retrieveBy([
- 'status' => [SubscriptionStatus::ACTIVE, SubscriptionStatus::TRIALLING],
+ 'status' => [SubscriptionStatus::ACTIVE, SubscriptionStatus::TRIALLING, SubscriptionStatus::CANCELLED],
'date_column' => 'expiration_date',
'start_date' => CarbonImmutable::now('UTC')->subDay()->startOfDay()->toDateTimeString(),
'end_date' => CarbonImmutable::now('UTC')->subDay()->endOfDay()->toDateTimeString(),
--- a/wp-user-avatar/src/Functions/GlobalFunctions.php
+++ b/wp-user-avatar/src/Functions/GlobalFunctions.php
@@ -1126,9 +1126,45 @@
return ppress_get_setting('admin_email_addresses', ppress_admin_email(), true);
}
+/**
+ * @return WP_Filesystem_Base|false
+ */
+function ppress_file_system()
+{
+ global $wp_filesystem;
+
+ require_once ABSPATH . 'wp-admin/includes/file.php';
+
+ // If for some reason the include doesn't work as expected just return false.
+ if ( ! function_exists('WP_Filesystem')) {
+ return false;
+ }
+
+ $writable = WP_Filesystem(false, '', true);
+
+ // We consider the directory as writable if it uses the direct transport,
+ // otherwise credentials would be needed.
+ return ($writable && 'direct' === $wp_filesystem->method) ? $wp_filesystem : false;
+}
+
+function ppress_get_file($file)
+{
+ $content = '';
+
+ $fs = ppress_file_system();
+
+ if ($fs && $fs->exists($file)) {
+ $content = $fs->get_contents($file);
+ }
+
+ return $content;
+}
+
function ppress_get_error_log($type = 'debug')
{
- $log_file = PPRESS_ERROR_LOG_FOLDER . $type . '.log';
+ $file_token = get_option('ppress_debug_log_token');
+
+ $log_file = PPRESS_ERROR_LOG_FOLDER . "{$type}-{$file_token}.log";
$file_contents = '';
@@ -1152,14 +1188,43 @@
ppress_create_index_file(PPRESS_ERROR_LOG_FOLDER);
}
+ //
+ $fs = ppress_file_system();
+
+ $file_token = get_option('ppress_debug_log_token');
+ if (false === $file_token) {
+ $file_token = uniqid(wp_rand(), true);
+ update_option('ppress_debug_log_token', $file_token);
+ }
+
+ $filename = "{$type}-{$file_token}.log"; // ex. debug-5c2f6a9b9b5a3.log.
+ $file = $log_folder . $filename;
+ $old_file = $log_folder . "{$type}.log";
+
+ // If old file exists, move it.
+ if ($fs && $fs->exists($old_file)) {
+ $old_content = ppress_get_file($old_file);
+ $fs->put_contents($file, $old_content, FS_CHMOD_FILE);
+
+ // Move old file to new location.
+ $fs->move($old_file, $file);
+
+ if ($fs->exists($old_file)) {
+ $fs->delete($old_file);
+ }
+ }
+ //
+
$message = current_time('mysql') . ' - ' . $message . "rnrn";
- error_log($message, 3, "{$log_folder}{$type}.log");
+ error_log($message, 3, "{$log_folder}{$filename}");
}
function ppress_clear_error_log($type = 'debug')
{
- return @unlink(PPRESS_ERROR_LOG_FOLDER . $type . '.log');
+ $file_token = get_option('ppress_debug_log_token');
+ @unlink(PPRESS_ERROR_LOG_FOLDER . "{$type}-{$file_token}.log");
+ @unlink(PPRESS_ERROR_LOG_FOLDER . $type . '.log');
}
function ppressPOST_var($key, $default = false, $empty = false, $bucket = false)
--- a/wp-user-avatar/src/Membership/Controllers/CheckoutController.php
+++ b/wp-user-avatar/src/Membership/Controllers/CheckoutController.php
@@ -235,6 +235,15 @@
$change_plan_sub_id = (int)$_POST['change_plan_sub_id'];
+ if (empty($change_plan_sub_id) && $plan_id > 0) {
+
+ if ( ! ppress_get_plan($plan_id)->is_active()) {
+ throw new Exception(
+ esc_html__('Invalid membership plan.', 'wp-user-avatar')
+ );
+ }
+ }
+
if ( ! isset($_POST['_ppress_timestamp']) || intval($_POST['_ppress_timestamp']) > (time() - 2)) {
throw new Exception('spam');
}
@@ -489,6 +498,13 @@
'state' => $country_state_code
]);
+ $cart_vars = OrderService::init()->checkout_order_calculation([
+ 'plan_id' => $planObj->id,
+ 'coupon_code' => CheckoutSessionData::get_coupon_code($planObj->id),
+ 'tax_rate' => CheckoutSessionData::get_tax_rate($planObj->id),
+ 'change_plan_sub_id' => $changePlanSubId
+ ]);
+
if (ppressPOST_var('isChangePlanUpdate') == 'true') {
ob_start();
@@ -504,13 +520,6 @@
} else {
- $cart_vars = OrderService::init()->checkout_order_calculation([
- 'plan_id' => $planObj->id,
- 'coupon_code' => CheckoutSessionData::get_coupon_code($planObj->id),
- 'tax_rate' => CheckoutSessionData::get_tax_rate($planObj->id),
- 'change_plan_sub_id' => $changePlanSubId
- ]);
-
ob_start();
ppress_render_view(
'checkout/form-checkout-sidebar', [
--- a/wp-user-avatar/src/Membership/Emails/EmailDataTrait.php
+++ b/wp-user-avatar/src/Membership/Emails/EmailDataTrait.php
@@ -54,8 +54,8 @@
'{{last_name}}' => esc_html__('Last name of the customer.', 'wp-user-avatar'),
'{{subscription_id}}' => esc_html__("Subscription ID.", 'wp-user-avatar'),
'{{subscription_url}}' => esc_html__("URL to view subscription.", 'wp-user-avatar'),
- '{{renew_subscription_url}}' => esc_html__("URL to re-subscribe to the subscription plan.", 'wp-user-avatar'),
- '{{plan_name}}' => esc_html__("Name or title of subscription plan.", 'wp-user-avatar'),
+ '{{renew_subscription_url}}' => esc_html__("URL to re-subscribe to the membership plan.", 'wp-user-avatar'),
+ '{{plan_name}}' => esc_html__("Name or title of membership plan.", 'wp-user-avatar'),
'{{amount}}' => esc_html__("The recurring amount of the subscription.", 'wp-user-avatar'),
'{{expiration_date}}' => esc_html__("The expiration or renewal date for the subscription.", 'wp-user-avatar'),
'{Atomic Edge}' => esc_html__('Name or title of this website.', 'wp-user-avatar')
--- a/wp-user-avatar/src/ShortcodeParser/MembershipShortcodes.php
+++ b/wp-user-avatar/src/ShortcodeParser/MembershipShortcodes.php
@@ -139,7 +139,7 @@
if ( ! $planObj->is_active()) {
do_action('ppress_membership_checkout_invalid_plan');
- echo '<p>' . esc_html__('Invalid subscription plan.', 'wp-user-avatar') . '</p>';
+ echo '<p>' . esc_html__('Invalid membership plan.', 'wp-user-avatar') . '</p>';
return;
}
--- a/wp-user-avatar/src/ShortcodeParser/MyAccount/edit-profile.tmpl.php
+++ b/wp-user-avatar/src/ShortcodeParser/MyAccount/edit-profile.tmpl.php
@@ -55,7 +55,7 @@
<?= $success_message ?>
<?php endif; ?>
- <?php if ( ! empty($this->edit_profile_form_error)) : ?>
+ <?php if ( ! empty($this->edit_profile_form_error) && is_string($this->edit_profile_form_error)) : ?>
<?php if (strpos($this->edit_profile_form_error, 'profilepress-edit-profile-status') !== false) : ?>
<?= $this->edit_profile_form_error ?>
--- a/wp-user-avatar/third-party/vendor/autoload.php
+++ b/wp-user-avatar/third-party/vendor/autoload.php
@@ -9,4 +9,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
-return ComposerAutoloaderInit61c6ca2275b7bd07d3f61d1ac43bbf8d::getLoader();
+return ComposerAutoloaderInit9c7541036f851d4273d2343fa1861d8d::getLoader();
--- a/wp-user-avatar/third-party/vendor/composer/autoload_real.php
+++ b/wp-user-avatar/third-party/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInit61c6ca2275b7bd07d3f61d1ac43bbf8d
+class ComposerAutoloaderInit9c7541036f851d4273d2343fa1861d8d
{
private static $loader;
@@ -24,19 +24,19 @@
require __DIR__ . '/platform_check.php';
- spl_autoload_register(array('ComposerAutoloaderInit61c6ca2275b7bd07d3f61d1ac43bbf8d', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInit9c7541036f851d4273d2343fa1861d8d', 'loadClassLoader'), true, true);
self::$loader = $loader = new ComposerAutoloadClassLoader(dirname(__DIR__));
- spl_autoload_unregister(array('ComposerAutoloaderInit61c6ca2275b7bd07d3f61d1ac43bbf8d', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInit9c7541036f851d4273d2343fa1861d8d', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
- call_user_func(ComposerAutoloadComposerStaticInit61c6ca2275b7bd07d3f61d1ac43bbf8d::getInitializer($loader));
+ call_user_func(ComposerAutoloadComposerStaticInit9c7541036f851d4273d2343fa1861d8d::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
- $includeFiles = ComposerAutoloadComposerStaticInit61c6ca2275b7bd07d3f61d1ac43bbf8d::$files;
+ $includeFiles = ComposerAutoloadComposerStaticInit9c7541036f851d4273d2343fa1861d8d::$files;
foreach ($includeFiles as $fileIdentifier => $file) {
- composerRequire61c6ca2275b7bd07d3f61d1ac43bbf8d($fileIdentifier, $file);
+ composerRequire9c7541036f851d4273d2343fa1861d8d($fileIdentifier, $file);
}
return $loader;
@@ -48,7 +48,7 @@
* @param string $file
* @return void
*/
-function composerRequire61c6ca2275b7bd07d3f61d1ac43bbf8d($fileIdentifier, $file)
+function composerRequire9c7541036f851d4273d2343fa1861d8d($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
--- a/wp-user-avatar/third-party/vendor/composer/autoload_static.php
+++ b/wp-user-avatar/third-party/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
namespace ComposerAutoload;
-class ComposerStaticInit61c6ca2275b7bd07d3f61d1ac43bbf8d
+class ComposerStaticInit9c7541036f851d4273d2343fa1861d8d
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@@ -671,9 +671,9 @@
public static function getInitializer(ClassLoader $loader)
{
return Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInit61c6ca2275b7bd07d3f61d1ac43bbf8d::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInit61c6ca2275b7bd07d3f61d1ac43bbf8d::$prefixDirsPsr4;
- $loader->classMap = ComposerStaticInit61c6ca2275b7bd07d3f61d1ac43bbf8d::$classMap;
+ $loader->prefixLengthsPsr4 = ComposerStaticInit9c7541036f851d4273d2343fa1861d8d::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInit9c7541036f851d4273d2343fa1861d8d::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInit9c7541036f851d4273d2343fa1861d8d::$classMap;
}, null, ClassLoader::class);
}
--- a/wp-user-avatar/third-party/vendor/composer/installed.php
+++ b/wp-user-avatar/third-party/vendor/composer/installed.php
@@ -2,4 +2,4 @@
namespace ProfilePressVendor;
-return array('root' => array('name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', 'reference' => '77ae7c49496b10bba0abb1e59027aba8c62d7868', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => true), 'versions' => array('__root__' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'reference' => '77ae7c49496b10bba0abb1e59027aba8c62d7868', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => false), 'barryvdh/composer-cleanup-plugin' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'reference' => 'e9e4b361f2e872a0bf4933c6218c35ad48c56075', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../barryvdh/composer-cleanup-plugin', 'aliases' => array(0 => '0.1.x-dev'), 'dev_requirement' => false), 'brick/math' => array('pretty_version' => '0.9.3', 'version' => '0.9.3.0', 'reference' => 'ca57d18f028f84f777b2168cd1911b0dee2343ae', 'type' => 'library', 'install_path' => __DIR__ . '/../brick/math', 'aliases' => array(), 'dev_requirement' => false), 'collizo4sky/persist-admin-notices-dismissal' => array('pretty_version' => '1.4.4', 'version' => '1.4.4.0', 'reference' => '900739eb6b0ec0210465f5983a6d4e0e420289e4', 'type' => 'library', 'install_path' => __DIR__ . '/../collizo4sky/persist-admin-notices-dismissal', 'aliases' => array(), 'dev_requirement' => false), 'league/csv' => array('pretty_version' => '9.7.4', 'version' => '9.7.4.0', 'reference' => '002f55f649e7511710dc7154ff44c7be32c8195c', 'type' => 'library', 'install_path' => __DIR__ . '/../league/csv', 'aliases' => array(), 'dev_requirement' => false), 'nesbot/carbon' => array('pretty_version' => '2.70.0', 'version' => '2.70.0.0', 'reference' => 'd3298b38ea8612e5f77d38d1a99438e42f70341d', 'type' => 'library', 'install_path' => __DIR__ . '/../nesbot/carbon', 'aliases' => array(), 'dev_requirement' => false), 'pelago/emogrifier' => array('pretty_version' => 'v6.0.0', 'version' => '6.0.0.0', 'reference' => 'aa72d5407efac118f3896bcb995a2cba793df0ae', 'type' => 'library', 'install_path' => __DIR__ . '/../pelago/emogrifier', 'aliases' => array(), 'dev_requirement' => false), 'psr/clock' => array('pretty_version' => '1.0.0', 'version' => '1.0.0.0', 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/clock', 'aliases' => array(), 'dev_requirement' => false), 'psr/clock-implementation' => array('dev_requirement' => false, 'provided' => array(0 => '1.0')), 'sabberworm/php-css-parser' => array('pretty_version' => '8.4.0', 'version' => '8.4.0.0', 'reference' => 'e41d2140031d533348b2192a83f02d8dd8a71d30', 'type' => 'library', 'install_path' => __DIR__ . '/../sabberworm/php-css-parser', 'aliases' => array(), 'dev_requirement' => false), 'sniccowp/php-scoper-wordpress-excludes' => array('pretty_version' => '6.3.0', 'version' => '6.3.0.0', 'reference' => '0284a5e0619dbf8893c3afdd4f02aa6320ba79c0', 'type' => 'library', 'install_path' => __DIR__ . '/../sniccowp/php-scoper-wordpress-excludes', 'aliases' => array(), 'dev_requirement' => true), 'stripe/stripe-php' => array('pretty_version' => 'v7.128.0', 'version' => '7.128.0.0', 'reference' => 'c704949c49b72985c76cc61063aa26fefbd2724e', 'type' => 'library', 'install_path' => __DIR__ . '/../stripe/stripe-php', 'aliases' => array(), 'dev_requirement' => false), 'symfony/css-selector' => array('pretty_version' => 'v5.4.26', 'version' => '5.4.26.0', 'reference' => '0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/css-selector', 'aliases' => array(), 'dev_requirement' => false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v2.5.2', 'version' => '2.5.2.0', 'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', 'reference' => '42292d99c55abe617799667f454222c54c60e229', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => false), 'symfony/polyfill-php80' => array('pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', 'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'dev_requirement' => false), 'symfony/translation' => array('pretty_version' => 'v5.4.24', 'version' => '5.4.24.0', 'reference' => 'de237e59c5833422342be67402d487fbf50334ff', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation', 'aliases' => array(), 'dev_requirement' => false), 'symfony/translation-contracts' => array('pretty_version' => 'v2.5.2', 'version' => '2.5.2.0', 'reference' => '136b19dd05cdf0709db6537d058bcab6dd6e2dbe', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), 'dev_requirement' => false), 'symfony/translation-implementation' => array('dev_requirement' => false, 'provided' => array(0 => '2.3'))));
+return array('root' => array('name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', 'reference' => '3c65fce290c53632ebbc68e275a65aeb3841813e', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => true), 'versions' => array('__root__' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'reference' => '3c65fce290c53632ebbc68e275a65aeb3841813e', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => false), 'barryvdh/composer-cleanup-plugin' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'reference' => 'e9e4b361f2e872a0bf4933c6218c35ad48c56075', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../barryvdh/composer-cleanup-plugin', 'aliases' => array(0 => '0.1.x-dev'), 'dev_requirement' => false), 'brick/math' => array('pretty_version' => '0.9.3', 'version' => '0.9.3.0', 'reference' => 'ca57d18f028f84f777b2168cd1911b0dee2343ae', 'type' => 'library', 'install_path' => __DIR__ . '/../brick/math', 'aliases' => array(), 'dev_requirement' => false), 'collizo4sky/persist-admin-notices-dismissal' => array('pretty_version' => '1.4.4', 'version' => '1.4.4.0', 'reference' => '900739eb6b0ec0210465f5983a6d4e0e420289e4', 'type' => 'library', 'install_path' => __DIR__ . '/../collizo4sky/persist-admin-notices-dismissal', 'aliases' => array(), 'dev_requirement' => false), 'league/csv' => array('pretty_version' => '9.7.4', 'version' => '9.7.4.0', 'reference' => '002f55f649e7511710dc7154ff44c7be32c8195c', 'type' => 'library', 'install_path' => __DIR__ . '/../league/csv', 'aliases' => array(), 'dev_requirement' => false), 'nesbot/carbon' => array('pretty_version' => '2.70.0', 'version' => '2.70.0.0', 'reference' => 'd3298b38ea8612e5f77d38d1a99438e42f70341d', 'type' => 'library', 'install_path' => __DIR__ . '/../nesbot/carbon', 'aliases' => array(), 'dev_requirement' => false), 'pelago/emogrifier' => array('pretty_version' => 'v6.0.0', 'version' => '6.0.0.0', 'reference' => 'aa72d5407efac118f3896bcb995a2cba793df0ae', 'type' => 'library', 'install_path' => __DIR__ . '/../pelago/emogrifier', 'aliases' => array(), 'dev_requirement' => false), 'psr/clock' => array('pretty_version' => '1.0.0', 'version' => '1.0.0.0', 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/clock', 'aliases' => array(), 'dev_requirement' => false), 'psr/clock-implementation' => array('dev_requirement' => false, 'provided' => array(0 => '1.0')), 'sabberworm/php-css-parser' => array('pretty_version' => '8.4.0', 'version' => '8.4.0.0', 'reference' => 'e41d2140031d533348b2192a83f02d8dd8a71d30', 'type' => 'library', 'install_path' => __DIR__ . '/../sabberworm/php-css-parser', 'aliases' => array(), 'dev_requirement' => false), 'sniccowp/php-scoper-wordpress-excludes' => array('pretty_version' => '6.3.0', 'version' => '6.3.0.0', 'reference' => '0284a5e0619dbf8893c3afdd4f02aa6320ba79c0', 'type' => 'library', 'install_path' => __DIR__ . '/../sniccowp/php-scoper-wordpress-excludes', 'aliases' => array(), 'dev_requirement' => true), 'stripe/stripe-php' => array('pretty_version' => 'v7.128.0', 'version' => '7.128.0.0', 'reference' => 'c704949c49b72985c76cc61063aa26fefbd2724e', 'type' => 'library', 'install_path' => __DIR__ . '/../stripe/stripe-php', 'aliases' => array(), 'dev_requirement' => false), 'symfony/css-selector' => array('pretty_version' => 'v5.4.26', 'version' => '5.4.26.0', 'reference' => '0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/css-selector', 'aliases' => array(), 'dev_requirement' => false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v2.5.2', 'version' => '2.5.2.0', 'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', 'reference' => '42292d99c55abe617799667f454222c54c60e229', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => false), 'symfony/polyfill-php80' => array('pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', 'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'dev_requirement' => false), 'symfony/translation' => array('pretty_version' => 'v5.4.24', 'version' => '5.4.24.0', 'reference' => 'de237e59c5833422342be67402d487fbf50334ff', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation', 'aliases' => array(), 'dev_requirement' => false), 'symfony/translation-contracts' => array('pretty_version' => 'v2.5.2', 'version' => '2.5.2.0', 'reference' => '136b19dd05cdf0709db6537d058bcab6dd6e2dbe', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), 'dev_requirement' => false), 'symfony/translation-implementation' => array('dev_requirement' => false, 'provided' => array(0 => '2.3'))));
--- a/wp-user-avatar/third-party/vendor/scoper-autoload.php
+++ b/wp-user-avatar/third-party/vendor/scoper-autoload.php
@@ -28,7 +28,7 @@
}
}
}
-humbug_phpscoper_expose_class('ComposerAutoloaderInit61c6ca2275b7bd07d3f61d1ac43bbf8d', 'ProfilePressVendorComposerAutoloaderInit61c6ca2275b7bd07d3f61d1ac43bbf8d');
+humbug_phpscoper_expose_class('ComposerAutoloaderInit9c7541036f851d4273d2343fa1861d8d', 'ProfilePressVendorComposerAutoloaderInit9c7541036f851d4273d2343fa1861d8d');
humbug_phpscoper_expose_class('PAnD', 'ProfilePressVendorPAnD');
humbug_phpscoper_expose_class('PhpToken', 'ProfilePressVendorPhpToken');
humbug_phpscoper_expose_class('ValueError', 'ProfilePressVendorValueError');
@@ -40,7 +40,7 @@
// https://github.com/humbug/php-scoper/blob/master/docs/further-reading.md#function-aliases
if (!function_exists('app')) { function app() { return ProfilePressVendorapp(...func_get_args()); } }
if (!function_exists('calculateTranslationStatus')) { function calculateTranslationStatus() { return ProfilePressVendorcalculateTranslationStatus(...func_get_args()); } }
-if (!function_exists('composerRequire61c6ca2275b7bd07d3f61d1ac43bbf8d')) { function composerRequire61c6ca2275b7bd07d3f61d1ac43bbf8d() { return ProfilePressVendorcomposerRequire61c6ca2275b7bd07d3f61d1ac43bbf8d(...func_get_args()); } }
+if (!function_exists('composerRequire9c7541036f851d4273d2343fa1861d8d')) { function composerRequire9c7541036f851d4273d2343fa1861d8d() { return ProfilePressVendorcomposerRequire9c7541036f851d4273d2343fa1861d8d(...func_get_args()); } }
if (!function_exists('extractLocaleFromFilePath')) { function extractLocaleFromFilePath() { return ProfilePressVendorextractLocaleFromFilePath(...func_get_args()); } }
if (!function_exists('extractTranslationKeys')) { function extractTranslationKeys() { return ProfilePressVendorextractTranslationKeys(...func_get_args()); } }
if (!function_exists('fdiv')) { function fdiv() { return ProfilePressVendorfdiv(...func_get_args()); } }
--- a/wp-user-avatar/wp-user-avatar.php
+++ b/wp-user-avatar/wp-user-avatar.php
@@ -3,7 +3,7 @@
* Plugin Name: ProfilePress
* Plugin URI: https://profilepress.com
* Description: The modern WordPress membership and user profile plugin.
- * Version: 4.13.2
+ * Version: 4.13.3
* Author: ProfilePress Membership Team
* Author URI: https://profilepress.com
* Text Domain: wp-user-avatar
@@ -13,7 +13,7 @@
defined('ABSPATH') or die("No script kiddies please!");
define('PROFILEPRESS_SYSTEM_FILE_PATH', __FILE__);
-define('PPRESS_VERSION_NUMBER', '4.13.2');
+define('PPRESS_VERSION_NUMBER', '4.13.3');
if ( ! defined('PPRESS_STRIPE_API_VERSION')) {
define('PPRESS_STRIPE_API_VERSION', '2022-11-15');