send_request( OTG_TRANSLATION_PROXY_URL . $path, $params, $method, $has_return_value ); } public static function proxy_download( $path, $params ) { return wpml_tm_load_tp_networking()->send_request( OTG_TRANSLATION_PROXY_URL . $path, $params, 'GET', true, false ); } public static function service_request( $url, $params = array(), $method = 'GET', $has_return_value = true, $json_response = false, $has_api_response = false ) { return wpml_tm_load_tp_networking()->send_request( $url, $params, $method, $has_return_value, $json_response, $has_api_response ); } public static function add_parameters_to_url( $url, $params ) { if ( preg_match_all( '/\{.+?\}/', $url, $symbs ) ) { foreach ( $symbs[0] as $symb ) { $without_braces = preg_replace( '/\{|\}/', '', $symb ); if ( preg_match_all( '/\w+/', $without_braces, $indexes ) ) { foreach ( $indexes[0] as $index ) { if ( isset( $params[ $index ] ) ) { $value = $params[ $index ]; $url = preg_replace( preg_quote( "/$symb/" ), $value, $url ); } } } } } return $url; } } if ( ! function_exists( 'gzdecode' ) ) { /** * Inflates a string enriched with gzip headers. Counterpart to gzencode(). * Extracted from upgradephp * http://include-once.org/p/upgradephp/ * * officially available by default in php @since 5.4. */ function gzdecode( $gzdata, $maxlen = null ) { // -- decode header $len = strlen( $gzdata ); if ( $len < 20 ) { return; } $head = substr( $gzdata, 0, 10 ); $head = unpack( 'n1id/C1cm/C1flg/V1mtime/C1xfl/C1os', $head ); list( $ID, $CM, $FLG, $MTIME, $XFL, $OS ) = array_values( $head ); $FTEXT = 1 << 0; $FHCRC = 1 << 1; $FEXTRA = 1 << 2; $FNAME = 1 << 3; $FCOMMENT = 1 << 4; $head = unpack( 'V1crc/V1isize', substr( $gzdata, $len - 8, 8 ) ); list( $CRC32, $ISIZE ) = array_values( $head ); // -- check gzip stream identifier if ( $ID != 0x1f8b ) { trigger_error( 'gzdecode: not in gzip format', E_USER_WARNING ); return; } // -- check for deflate algorithm if ( $CM != 8 ) { trigger_error( 'gzdecode: cannot decode anything but deflated streams', E_USER_WARNING ); return; } // -- start of data, skip bonus fields $s = 10; if ( $FLG & $FEXTRA ) { $s += $XFL; } if ( $FLG & $FNAME ) { $s = strpos( $gzdata, "\000", $s ) + 1; } if ( $FLG & $FCOMMENT ) { $s = strpos( $gzdata, "\000", $s ) + 1; } if ( $FLG & $FHCRC ) { $s += 2; // cannot check } // -- get data, uncompress $gzdata = substr( $gzdata, $s, $len - $s ); if ( $maxlen ) { $gzdata = gzinflate( $gzdata, $maxlen ); return ( $gzdata ); // no checks(?!) } else { $gzdata = gzinflate( $gzdata ); } // -- check+fin $chk = crc32( $gzdata ); if ( $CRC32 != $chk ) { trigger_error( "gzdecode: checksum failed (real$chk != comp$CRC32)", E_USER_WARNING ); } elseif ( $ISIZE != strlen( $gzdata ) ) { trigger_error( 'gzdecode: stream size mismatch', E_USER_WARNING ); } else { return ( $gzdata ); } } }