165 lines
5.8 KiB
PHP
165 lines
5.8 KiB
PHP
<?php
|
|
|
|
function pmxi_wp_ajax_test_images(){
|
|
|
|
if ( ! check_ajax_referer( 'wp_all_import_secure', 'security', false )){
|
|
exit( json_encode(array('result' => array(), 'failed_msgs' => array(__('Security check', 'wp_all_import_plugin')))));
|
|
}
|
|
|
|
if ( ! current_user_can( PMXI_Plugin::$capabilities ) ){
|
|
exit( json_encode(array('result' => array(), 'failed_msgs' => array(__('Security check', 'wp_all_import_plugin')))));
|
|
}
|
|
|
|
$input = new PMXI_Input();
|
|
|
|
$post = $input->post(array(
|
|
'download' => 'yes',
|
|
'imgs' => array()
|
|
));
|
|
|
|
$result = array();
|
|
|
|
$wp_uploads = wp_upload_dir();
|
|
$imgs_basedir = $wp_uploads['basedir'] . DIRECTORY_SEPARATOR . PMXI_Plugin::FILES_DIRECTORY . DIRECTORY_SEPARATOR;
|
|
$targetDir = $wp_uploads['path'];
|
|
$success_images = 0;
|
|
$success_msg = '';
|
|
|
|
$failed_msgs = array();
|
|
|
|
if ( ! @is_writable($targetDir) )
|
|
{
|
|
$failed_msgs[] = sprintf(__('Uploads folder `%s` is not writable.', 'wp_all_import_plugin'), $targetDir);
|
|
}
|
|
else
|
|
{
|
|
switch ($post['download'])
|
|
{
|
|
// Use images currently uploaded in wp-content/uploads/wpallimport/files/
|
|
case 'no':
|
|
|
|
if ( ! empty($post['imgs']) )
|
|
{
|
|
foreach ($post['imgs'] as $img)
|
|
{
|
|
if ( preg_match('%^(http|https|ftp|ftps)%i', $img)){
|
|
$failed_msgs[] = sprintf(__('Use image name instead of URL `%s`.', 'wp_all_import_plugin'), esc_url($img));
|
|
continue;
|
|
}
|
|
if ( @file_exists($imgs_basedir . $img) ){
|
|
if (@is_readable($imgs_basedir . $img)){
|
|
$success_images++;
|
|
} else{
|
|
$failed_msgs[] = sprintf(__('File `%s` isn\'t readable', 'wp_all_import_plugin'), preg_replace('%.*/wp-content%', '/wp-content', esc_attr($imgs_basedir . $img)));
|
|
}
|
|
}
|
|
else{
|
|
$failed_msgs[] = sprintf(__('File `%s` doesn\'t exist', 'wp_all_import_plugin'), preg_replace('%.*/wp-content%', '/wp-content', esc_attr($imgs_basedir . $img)));
|
|
}
|
|
}
|
|
}
|
|
if ((int)$success_images === 1)
|
|
{
|
|
$success_msg = sprintf(__('%d image was successfully retrieved from `%s`', 'wp_all_import_plugin'), intval($success_images), preg_replace('%.*/wp-content%', '/wp-content', esc_attr($wp_uploads['basedir']) . DIRECTORY_SEPARATOR . PMXI_Plugin::FILES_DIRECTORY));
|
|
}
|
|
elseif ((int)$success_images > 1)
|
|
{
|
|
$success_msg = sprintf(__('%d images were successfully retrieved from `%s`', 'wp_all_import_plugin'), intval($success_images), preg_replace('%.*/wp-content%', '/wp-content', esc_attr($wp_uploads['basedir']) . DIRECTORY_SEPARATOR . PMXI_Plugin::FILES_DIRECTORY));
|
|
}
|
|
|
|
break;
|
|
|
|
// Use images currently in Media Library
|
|
case 'gallery':
|
|
|
|
if ( ! empty($post['imgs']) )
|
|
{
|
|
global $wpdb;
|
|
|
|
foreach ($post['imgs'] as $img)
|
|
{
|
|
$bn = wp_all_import_sanitize_filename(wp_all_import_basename($img));
|
|
$img_ext = pmxi_getExtensionFromStr($img);
|
|
$default_extension = pmxi_getExtension($bn);
|
|
|
|
$image_name = apply_filters("wp_all_import_image_filename", urldecode(sanitize_file_name((($img_ext) ? str_replace("." . $default_extension, "", $bn) : $bn))) . (("" != $img_ext) ? '.' . $img_ext : ''));
|
|
|
|
$attch = wp_all_import_get_image_from_gallery($image_name, $targetDir);
|
|
|
|
if ( ! empty($attch) )
|
|
{
|
|
$success_images++;
|
|
}
|
|
else
|
|
{
|
|
$failed_msgs[] = sprintf(__('Image `%s` not found in media library.', 'wp_all_import_plugin'), esc_attr($image_name));
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((int)$success_images === 1)
|
|
{
|
|
$success_msg = sprintf(__('%d image was successfully found in media gallery', 'wp_all_import_plugin'), intval($success_images));
|
|
}
|
|
elseif ((int)$success_images > 1)
|
|
{
|
|
$success_msg = sprintf(__('%d images were successfully found in media gallery', 'wp_all_import_plugin'), intval($success_images));
|
|
}
|
|
|
|
break;
|
|
|
|
// Download images hosted elsewhere
|
|
default:
|
|
|
|
$start = time();
|
|
if ( ! empty($post['imgs']) )
|
|
{
|
|
foreach ($post['imgs'] as $img)
|
|
{
|
|
if ( ! preg_match('%^(http|https|ftp|ftps)%i', $img)){
|
|
$failed_msgs[] = sprintf(__('URL `%s` is not valid.', 'wp_all_import_plugin'), esc_url($img));
|
|
continue;
|
|
}
|
|
|
|
$image_name = wp_unique_filename($targetDir, 'test');
|
|
|
|
$image_filepath = $targetDir . '/' . $image_name;
|
|
|
|
$url = trim($img);
|
|
|
|
$request = get_file_curl($url, $image_filepath);
|
|
|
|
$get_ctx = stream_context_create(array('http' => array('timeout' => 5)));
|
|
|
|
if ( (is_wp_error($request) or $request === false) and ! @file_put_contents($image_filepath, @file_get_contents($img, false, $get_ctx))) {
|
|
$failed_msgs[] = (is_wp_error($request)) ? $request->get_error_message() : sprintf(__('File `%s` cannot be saved locally', 'wp_all_import_plugin'), esc_url($img));
|
|
} elseif( ! ($image_info = apply_filters('pmxi_getimagesize', @getimagesize($image_filepath), $image_filepath)) or ! in_array($image_info[2], wp_all_import_supported_image_types())) {
|
|
$failed_msgs[] = sprintf(__('File `%s` is not a valid image.', 'wp_all_import_plugin'), esc_url($img));
|
|
} else {
|
|
$success_images++;
|
|
}
|
|
@unlink($image_filepath);
|
|
}
|
|
}
|
|
$time = time() - $start;
|
|
|
|
if ((int)$success_images === 1)
|
|
{
|
|
$success_msg = sprintf(__('%d image was successfully downloaded in %s seconds', 'wp_all_import_plugin'), intval($success_images), number_format($time, 2));
|
|
}
|
|
elseif ((int)$success_images > 1)
|
|
{
|
|
$success_msg = sprintf(__('%d images were successfully downloaded in %s seconds', 'wp_all_import_plugin'), intval($success_images), number_format($time, 2));
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
exit(json_encode(array(
|
|
'success_images' => $success_images,
|
|
'success_msg' => $success_msg,
|
|
'failed_msgs' => $failed_msgs
|
|
))); die;
|
|
|
|
} |