AǒH>ɒp?kŒp@ϒ@Rϒp@p# @<ϒP@p P@p# @<dP@2 PAp# A<ג AG PBp# B<גBH`Bt@<Aǒ`E>Aǒ@H>ax֣usage25V_o}/** * Save document usage. * * Save requested document usage, and update global. * * @param Document $document */&ap<xaV9%>}get_settings_usagexy0Hxp >yxy`yFxJly_xhӉNN(yhy`y 5ay8# y8yxy۔9V{@ Տ#Elementor\Modules\Usage\array_mergeV$#elementor\modules\usage\array_mergeV9 iF! TAB_GENERALV5Ī8p field_argsVjKNy"Elementor\Modules\Usage\get_optionVgm:m>"elementor\modules\usage\get_optionVϺ~Ap elementor_)PKŒMϒMRϒ0Mp# M<H`M@NENdɒHOK`O]8֒O]LPOOdɒ8XPK`P]8֒P]L`P# N<HpNpSMSNHTQҒ`TM@TNTUZϒUsΒU/xUQϒh UQҒ XUΒU4HU@W+X*h[E!̒[P[t# [<[]@]+^*aZϒasrΒaΒa.aQϒh aQ aΒa4Ha@c+@d*Pg,cgT*:T@S*:SPk>Aǒl>;9<yӉyy8y`yyVl ׃ settings_tabV܎o WP_Error( 'invalid_format', __( 'Invalid cookie format.' ) ); } return $parts; } /** * Generates the recovery mode cookie value. * * The cookie is a base64 encoded string with the following format: * * recovery_mode|iat|rand|signature * * Where "recovery_mode" is a constant string, * iat is the time the cookie was generated at, * rand is a randomly generated password that is also used as a session identifier * and signature is an hmac of the preceding 3 parts. * * @since 5.2.0 * * @return string Generated cookie content. */ private function generate_cookie() { $to_sign = sprintf( 'recovery_mode|%s|%s', time(), wp_generate_password( 20, false ) ); $signed = $this->recovery_mode_hash( $to_sign ); return base64_encode( sprintf( '%s|%s', $to_sign, $signed ) ); } /** * Gets a form of `wp_hash()` specific to Recovery Mode. * * We cannot use `wp_hash()` because it is defined in `pluggable.php` which is not loaded until after plugins are loaded, * which is too late to verify the recovery mode cookie. * * This tries to use the `AUTH` salts first, but if they aren't valid specific salts will be generated and stored. * * @since 5.2.0 * * @param string $data Data to hash. * @return string|false The hashed $data, or false on failure. */ private function recovery_mode_hash( $data ) { $default_keys = array_unique( array( 'put your unique phrase here', /* * translators: This string should only be translated if wp-config-sample.php is localized. * You can check the localized release package or * https://i18n.svn.wordpress.org//branches//dist/wp-config-sample.php */ __( 'put your unique phrase here' ), ) ); if ( ! defined( 'AUTH_KEY' ) || in_array( AUTH_KEY, $default_keys, true ) ) { $auth_key = get_site_option( 'recovery_mode_auth_key' ); if ( ! $auth_key ) { if ( ! function_exists( 'wp_generate_password' ) ) { require_once ABSPATH . WPINC . '/pluggable.php'; } $auth_key = wp_generate_password( 64, true, true ); update_site_option( 'recovery_mode_auth_key', $auth_key ); } } else { $auth_key = AUTH_KEY; } if ( ! defined( 'AUTH_SALT' ) || in_array( AUTH_SALT, $default_keys, true ) || AUTH_SALT === $auth_key ) { $auth_salt = get_site_option( 'recovery_mode_auth_salt' ); if ( ! $auth_salt ) { if ( ! function_exists( 'wp_generate_password' ) ) { require_once ABSPATH . WPINC . '/pluggable.php'; } $auth_salt = wp_generate_password( 64, true, true ); update_site_option( 'recovery_mode_auth_salt', $auth_salt ); } } else { $auth_salt = AUTH_SALT; } $secret = $auth_key . $auth_salt; return hash_hmac( 'sha1', $data, $secret ); } }