PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / addons / wpml-dependencies / vendor / wpml / wp / classes / Option.php
woocommerce-multilingual / addons / wpml-dependencies / vendor / wpml / wp / classes Last commit date
Attachment.php 1 month ago Cache.php 1 month ago Gutenberg.php 1 month ago Hooks.php 1 month ago Http.php 1 month ago Nonce.php 1 month ago Option.php 1 month ago Post.php 1 month ago PostType.php 1 month ago Resources.php 1 month ago Roles.php 4 years ago Transient.php 1 month ago Url.php 1 month ago User.php 1 month ago WP.php 1 month ago WPDB.php 1 month ago
Option.php
61 lines
1 <?php
2
3 namespace WPML\LIB\WP;
4
5 use WPML\Collect\Support\Traits\Macroable;
6 use function WPML\FP\curryN;
7 use function WPML\FP\partialRight;
8
9 class Option {
10 use Macroable;
11
12 public static function init() {
13 self::macro( 'get', curryN( 1, 'get_option' ) );
14 self::macro( 'getOr', curryN( 2, 'get_option' ) );
15
16 self::macro( 'update', curryN( 2, 'update_option' ) );
17 self::macro( 'updateWithoutAutoLoad', curryN( 2, partialRight( 'update_option', false ) ) );
18
19 self::macro( 'delete', curryN( 1, 'delete_option' ) );
20
21 self::macro( 'getRaw', curryN( 1, function( $name ) {
22 global $wpdb;
23 $p = $wpdb->prepare( "SELECT option_value FROM {$wpdb->options} WHERE option_name = %s", $name );
24 return $wpdb->get_var( $p ) ?: null;
25 } ) );
26
27 self::macro( 'attemptSerializedRecovery', curryN( 1, function( $name, $default ) {
28 $value = $default;
29 $dbValue = self::getRaw( $name );
30 if ( $dbValue && is_serialized( $dbValue ) ) {
31 $dbValueRecoveringStringIntegrityChecks = preg_replace_callback(
32 '/(?<=^|\{|;)s:(\d+):[\"|\'](.*?)[\"|\'];(?=[asbdiO]\:\d|N;|\}|$)/s',
33 function($m){
34 return 's:' . strlen($m[2]) . ':"' . $m[2] . '";';
35 },
36 $dbValue
37 );
38 $restoredValue = maybe_unserialize( $dbValueRecoveringStringIntegrityChecks );
39 if ( ( !is_string($restoredValue) || $dbValueRecoveringStringIntegrityChecks != $restoredValue ) && $restoredValue !== false ) {
40 $value = $restoredValue;
41 }
42 self::update( $name, $value );
43 }
44 return $value;
45 } ) );
46 }
47
48 public static function getOrAttemptRecovery( $name = null, $default = null ) {
49 return call_user_func_array( curryN( 2,
50 function( $name, $default ) {
51 $value = self::get( $name );
52 if ( $value === false ) {
53 return self::attemptSerializedRecovery($name, $default);
54 }
55 return $value;
56 }), func_get_args() );
57 }
58 }
59
60 Option::init();
61