Current File : /home/kelaby89/onlycnc.com.au/wp-content/themes/ondustry/inc/class/class-helper.php |
<?php
/**
* Helper class
*
* @author Jegtheme
* @package ondustry
*/
namespace Ondustry;
/**
* Class Api
*
* @package ondustry
*/
class Helper {
/**
* Return image
*
* @param string $url Image attachment url.
*
* @return array|null
*/
public static function check_image_exist( $url ) {
$attachments = new \WP_Query(
array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'meta_query' => array(
array(
'key' => '_import_source',
'value' => $url,
'compare' => '=',
),
),
)
);
if( $attachments->have_posts() ){
foreach ( $attachments->posts as $post ) {
$attachment_url = wp_get_attachment_url( $post->ID );
return array(
'id' => $post->ID,
'url' => $attachment_url,
);
}
}
return false;
}
/**
* Handle Import file, and return File ID when process complete
*
* @param string $url URL of file.
*
* @return int|null
*/
public static function handle_file( $url ) {
$file_name = basename( $url );
$upload = wp_upload_bits( $file_name, null, '' );
self::fetch_file( $url, $upload['file'] );
if ( $upload['file'] ) {
$file_loc = $upload['file'];
$file_name = basename( $upload['file'] );
$file_type = wp_check_filetype( $file_name );
$attachment = array(
'post_mime_type' => $file_type['type'],
'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $file_name ) ),
'post_content' => '',
'post_status' => 'inherit',
);
include_once ABSPATH . 'wp-admin/includes/image.php';
$attach_id = wp_insert_attachment( $attachment, $file_loc );
update_post_meta( $attach_id, '_import_source', $url );
try {
$attach_data = wp_generate_attachment_metadata( $attach_id, $file_loc );
wp_update_attachment_metadata( $attach_id, $attach_data );
} catch ( \Exception $e ) {
// none
} catch ( \Throwable $t ) {
// none
}
return array(
'id' => $attach_id,
'url' => $upload['url'],
);
} else {
return null;
}
}
/**
* Download file and save to file system
*
* @param string $url File URL.
* @param string $file_path file path.
* @param string $endpoint Endpoint.
*
* @return array|bool
*/
public static function fetch_file( $url, $file_path, $endpoint = '' ) {
$http = new \WP_Http();
$response = $http->get(
add_query_arg(
array(
'sslverify' => false,
),
$url
)
);
if ( is_wp_error( $response ) ) {
return false;
}
$headers = wp_remote_retrieve_headers( $response );
$headers['response'] = wp_remote_retrieve_response_code( $response );
if ( false === $file_path ) {
return $headers;
}
$body = wp_remote_retrieve_body( $response );
// GET request - write it to the supplied filename.
require_once ABSPATH . 'wp-admin/includes/file.php';
WP_Filesystem();
global $wp_filesystem;
$wp_filesystem->put_contents( $file_path, $body, FS_CHMOD_FILE );
return $headers;
}
}