113 lines
3.1 KiB
PHP
113 lines
3.1 KiB
PHP
<?php
|
|
/**
|
|
* Helpers class
|
|
*/
|
|
|
|
class OWP_Demos_Helpers {
|
|
|
|
/**
|
|
* Gets and returns url body using wp_remote_get
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public static function get_remote( $url ) {
|
|
|
|
// Get data
|
|
$response = wp_remote_get( $url );
|
|
|
|
// Check for errors
|
|
if ( is_wp_error( $response ) or ( wp_remote_retrieve_response_code( $response ) != 200 ) ) {
|
|
return false;
|
|
}
|
|
|
|
// Get remote body val
|
|
$body = wp_remote_retrieve_body( $response );
|
|
|
|
// Return data
|
|
if ( ! empty( $body ) ) {
|
|
return $body;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Perform a HTTP HEAD or GET request.
|
|
*
|
|
* If $file_path is a writable filename, this will do a GET request and write
|
|
* the file to that path.
|
|
*
|
|
* This is a re-implementation of the deprecated wp_get_http() function from WP Core,
|
|
* but this time using the recommended WP_Http() class and the WordPress filesystem.
|
|
*
|
|
* @param string $url URL to fetch.
|
|
* @param string|bool $file_path Optional. File path to write request to. Default false.
|
|
* @param array $args Optional. Arguments to be passed-on to the request.
|
|
* @return bool|string False on failure and string of headers if HEAD request.
|
|
*/
|
|
public static function wp_get_http( $url, $file_path = false, $red = 1 ) {
|
|
|
|
// No need to proceed if we don't have a $url or a $file_path.
|
|
if ( ! $url || ! $file_path ) {
|
|
return false;
|
|
}
|
|
|
|
$try_file_get_contents = false;
|
|
|
|
// Make sure we normalize $file_path.
|
|
$file_path = wp_normalize_path( $file_path );
|
|
|
|
// Include the WP_Http class if it doesn't already exist.
|
|
if ( ! class_exists( 'WP_Http' ) ) {
|
|
include_once( wp_normalize_path( ABSPATH . WPINC . '/class-http.php' ) );
|
|
}
|
|
// Inlude the wp_remote_get function if it doesn't already exist.
|
|
if ( ! function_exists( 'wp_remote_get' ) ) {
|
|
include_once( wp_normalize_path( ABSPATH . WPINC . '/http.php' ) );
|
|
}
|
|
|
|
$args = wp_parse_args( $args, array(
|
|
'timeout' => 30,
|
|
'user-agent' => 'avada-user-agent',
|
|
) );
|
|
$response = wp_remote_get( esc_url_raw( $url ), $args );
|
|
$body = wp_remote_retrieve_body( $response );
|
|
|
|
// Try file_get_contents if body is empty.
|
|
if ( empty( $body ) ) {
|
|
if ( function_exists( 'ini_get' ) && ini_get( 'allow_url_fopen' ) ) {
|
|
$body = @file_get_contents( $url );
|
|
}
|
|
}
|
|
|
|
// Initialize the Wordpress filesystem.
|
|
global $wp_filesystem;
|
|
if ( empty( $wp_filesystem ) ) {
|
|
require_once( ABSPATH . '/wp-admin/includes/file.php' );
|
|
WP_Filesystem();
|
|
}
|
|
|
|
// Attempt to write the file.
|
|
if ( ! $wp_filesystem->put_contents( $file_path, $body, FS_CHMOD_FILE ) ) {
|
|
// If the attempt to write to the file failed, then fallback to fwrite.
|
|
@unlink( $file_path );
|
|
$fp = fopen( $file_path, 'w' );
|
|
$written = fwrite( $fp, $body );
|
|
fclose( $fp );
|
|
if ( false === $written ) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// If all went well, then return the headers of the request.
|
|
if ( isset( $response['headers'] ) ) {
|
|
$response['headers']['response'] = $response['response']['code'];
|
|
return $response['headers'];
|
|
}
|
|
|
|
// If all else fails, then return false.
|
|
return false;
|
|
|
|
}
|
|
|
|
} |