РŸX. џџџџ{УЁЎяmЋFR. –M. џџџџљ№gш‡иwƒ0;R@M. џџџџBЄФџц€ˆкP@П:- џџџџпwY€˜aR@PП:- џџџџрwY€ИaR@ П:- џџџџсwY€иaR@ ;- џџџџтwY€јaR@P ;- уwY€bR@џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџŸX. џџџџK8$д ч€РВ?@џџџџj^RьЩ“I@џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ№cю0 џџџџи™X. џџџџ -product-gallery h3,.wp-block-woocommerce-product-gallery h4,.wp-block-woocommerce-product-gallery h5,.wp-block-woocommerce-product-gallery h6џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџpR. џџџџ:ђ–ШЭцгАЉX. X–M. џџџџљ№gш‡иwƒ0;R@ш•M. џџџџBЄФџц€ˆкP@О:- џџџџпwY€˜aR@РН:- џџџџрwY€ИaR@pН:- џџџџсwY€иaR@ Н:- џџџџтwY€јaR@аМ:- уwY€bR@џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ`LƒFџџџџK8$д ч€РВ?@џџџџj^RьЩ“I@g' LIMIT 1џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€ЖE.  џџџџШ-BЭХ8š€DR. ИЖE.  џџџџwqŸpKbэаER. №ЖE.  џџџџ„%vІѕ€N›(dю0 (ЗE.  џџџџ™дд†їъйшшH. `ЗE.  џџџџ‘P№qЕа€x„D@`Й:- џџџџсwY€иaR@К:- џџџџтwY€јaR@PК:- уwY€bR@џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ iT. џџџџ|ѓvuЕа€€кH. џџџџэНo.qђШUI. ˆЙE.  џџџџ›кt'e@ЎpER. €КE.  K;ўRйишR. xЛE.  xнщЬжЗ•€GR. pМE.  џџџџn†юзй)‹hR. hНE.  џџџџжMЇ ѓ зАGR. `ОE.  џџџџЙ:—‚ОИГиR. џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ cX. џџџџоЯœГа€€РZ. pcX. џџџџНеwІ`ЙќрGR. РcX. ?ѕ^,ЕПrђ˜cX. 8iX. џџџџЕдТЕа€ ФZ. АdX. џџџџw~шIDAHR.  ФZ. Ї fiчdX. 5,.wp-block-woocommerce-product-filter-chips h6їеу/зUўPЩ?ф“у/зU`џџџџЫ у/зU`P€дsСу/зU€€џџџџд+Yœу/зU`PеQЄу/зUџџџџџџџџе>ЎЋу/зU@џџџџџџџџд*ф–у/зUPџџџџџџџџз>ќу/зU0џџџџџџџџџџџџи>№CX. р|hЈќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџыH. џџџџofžс‡WВ@HR.  HR. НеwІ`ЙќpHR.  hX. ?ѕ^,ЕПrђHhX. HR. џџџџk2zzџ<Ў/O. јgX. џџџџЕдТЕа€I. иdX. џџџџіLЧ`8ŽсXgX. @/O. џџџџw~шIDAаHR. €/O. Л;Я]AЅцIR. џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ`IR. џџџџofžс‡WВ0IR. €R. НеwІ`ЙќIR. РIR. ?ѕ^,ЕПrђ(eX. p­X. џџџџk2zzџ<ЎР/O. eX. џџџџЕдТЕа€ ЦZ. №IR. џџџџіLЧ`8Žс eX. 0X. џџџџw~шIDA JR. €JR. Л;Я]AЅцPJR. џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ дH. џџџџ|ѓvuЕа€РкH. џџџџэНo.qђ[I. їеу/зUўP ?ђХу/зU€рЂ=Œ”у/зUPа`ЂR2Ъу/зU`PЂAИу/зU `ЂAБу/зUџџџџџџџџpЂ<НЁу/зUpџџџџџџџџЂ>ќу/зUPџџџџџџџџџџџџЃ>№H@XЙ?@рR. р|hЈќrror( __( 'We could not fetch the current price because RocketCDN API returned an unexpected error code.', 'rocket' ) ); } $data = wp_remote_retrieve_body( $response ); if ( empty( $data ) ) { return $this->get_wp_error( __( 'RocketCDN is not available at the moment. Please retry later.', 'rocket' ) ); } $data = json_decode( $data, true ); set_transient( 'rocketcdn_pricing', $data, 6 * HOUR_IN_SECONDS ); return $data; } /** * Gets a new WP_Error instance * * @since 3.5 * * @param string $message Error message. * * @return WP_Error */ private function get_wp_error( string $message ) { return new WP_Error( 'rocketcdn_error', $message ); } /** * Sends a request to the API to purge the CDN cache * * @since 3.5 * * @return array */ public function purge_cache_request() { $subscription = $this->get_subscription_data(); $status = 'error'; if ( ! isset( $subscription['id'] ) || 0 === $subscription['id'] ) { return [ 'status' => $status, 'message' => __( 'RocketCDN cache purge failed: Missing identifier parameter.', 'rocket' ), ]; } $token = get_option( 'rocketcdn_user_token' ); if ( empty( $token ) ) { return [ 'status' => $status, 'message' => __( 'RocketCDN cache purge failed: Missing user token.', 'rocket' ), ]; } $args = [ 'method' => 'DELETE', 'headers' => [ 'Authorization' => 'Token ' . $token, ], ]; $response = wp_remote_request( self::ROCKETCDN_API . 'website/' . $subscription['id'] . '/purge/', $args ); if ( is_wp_error( $response ) ) { return [ 'status' => $status, 'message' => $response->get_error_message(), ]; } if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { return [ 'status' => $status, 'message' => __( 'RocketCDN cache purge failed: The API returned an unexpected response code.', 'rocket' ), ]; } $data = wp_remote_retrieve_body( $response ); if ( empty( $data ) ) { return [ 'status' => $status, 'message' => __( 'RocketCDN cache purge failed: The API returned an empty response.', 'rocket' ), ]; } $data = json_decode( $data ); if ( ! isset( $data->success ) ) { return [ 'status' => $status, 'message' => __( 'RocketCDN cache purge failed: The API returned an unexpected response.', 'rocket' ), ]; } if ( ! $data->success ) { return [ 'status' => $status, 'message' => sprintf( // translators: %s = message returned by the API. __( 'RocketCDN cache purge failed: %s.', 'rocket' ), isset( $data->message ) ? $data->message : '' ), ]; } return [ 'status' => 'success', 'message' => __( 'RocketCDN cache purge successful.', 'rocket' ), ]; } /** * Filter the arguments used in an HTTP request, to make sure our user token has not been overwritten * by some other plugin. * * @since 3.5 * * @param array $args An array of HTTP request arguments. * @param string $url The request URL. * @return array */ public function preserve_authorization_token( $args, $url ) { if ( strpos( $url, self::ROCKETCDN_API ) === false ) { return $args; } if ( empty( $args['headers']['Authorization'] ) && self::ROCKETCDN_API . 'pricing' === $url ) { return $args; } $token = get_option( 'rocketcdn_user_token' ); if ( empty( $token ) ) { return $args; } $value = 'token ' . $token; if ( isset( $args['headers']['Authorization'] ) && $value === $args['headers']['Authorization'] ) { return $args; } $args['headers']['Authorization'] = $value; return $args; } }