first commit
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
<?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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user