You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
650 lines
30 KiB
650 lines
30 KiB
<?php
|
|
/**
|
|
* API
|
|
*
|
|
* Generates html code for fields
|
|
*
|
|
*
|
|
* @package default
|
|
* @author Max Tsiplyakov
|
|
*/
|
|
class PMXI_API
|
|
{
|
|
/**
|
|
* Function for generating html code for fields
|
|
* @param string $field_type simple, enum or textarea
|
|
* @param string $label field label
|
|
* @param array $params contains field params like tooltip, enum_values, mapping, field_name, field_value
|
|
*/
|
|
public static function add_field( $field_type = 'simple', $label = '', $params = array()){
|
|
|
|
$params += array(
|
|
'tooltip' => '',
|
|
'enum_values' => array(),
|
|
'mapping' => false,
|
|
'field_key' => '',
|
|
'mapping_rules' => array(),
|
|
'xpath' => '',
|
|
'field_name' => '',
|
|
'field_value' => '',
|
|
'addon_prefix' => '',
|
|
'sub_fields' => array(),
|
|
'is_main_field' => false,
|
|
'in_the_bottom' => false
|
|
);
|
|
|
|
ob_start();
|
|
if ($label != "" and $field_type != "accordion"){
|
|
?>
|
|
<label for="<?php echo esc_attr($params['field_name']); ?>"><?php echo wp_kses_post($label);?></label>
|
|
<?php
|
|
}
|
|
if ( ! empty($params['tooltip'])){
|
|
?>
|
|
<a href="#help" class="wpallimport-help" title="<?php echo esc_attr($params['tooltip']); ?>" style="position: relative; top: -2px;">?</a>
|
|
<?php
|
|
}
|
|
|
|
if ( ! $params['in_the_bottom'] ){
|
|
?>
|
|
<div class="input">
|
|
<?php
|
|
}
|
|
|
|
switch ($field_type){
|
|
|
|
case 'simple':
|
|
?>
|
|
<input type="text" name="<?php echo esc_attr($params['field_name']); ?>" id="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>" value="<?php echo esc_attr($params['field_value']); ?>" style="width:100%;"/>
|
|
<?php
|
|
break;
|
|
case 'enum':
|
|
|
|
$is_set_with_xpath_visible = true;
|
|
foreach ($params['enum_values'] as $key => $value): ?>
|
|
<div class="form-field wpallimport-radio-field wpallimport-<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_<?php echo sanitize_title(esc_attr($key)); ?>">
|
|
<input type="radio" id="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_<?php echo sanitize_title(esc_attr($key)); ?>" class="switcher" name="<?php echo esc_attr($params['field_name']); ?>" value="<?php echo esc_attr($key); ?>" <?php echo $key == $params['field_value'] ? 'checked="checked"': '' ?>/>
|
|
<?php
|
|
$label = '';
|
|
$tooltip = '';
|
|
if (is_array($value)){
|
|
$label = array_shift($value);
|
|
}
|
|
else{
|
|
$label = $value;
|
|
}
|
|
?>
|
|
<label for="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_<?php echo sanitize_title(esc_attr($key)); ?>"><?php echo wp_kses_post($label); ?></label>
|
|
<?php
|
|
if (is_array($value) and ! empty($value)){
|
|
foreach ($value as $k => $p) {
|
|
if ( ! is_array($p)){
|
|
?>
|
|
<a href="#help" class="wpallimport-help" title="<?php echo esc_attr($p); ?>" style="position: relative; top: -2px;">?</a>
|
|
<?php
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
?>
|
|
<?php
|
|
if (! empty($params['sub_fields'][$key])){
|
|
?>
|
|
<div class="switcher-target-<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_<?php echo esc_attr($key); ?>">
|
|
<div class="input sub_input">
|
|
<?php
|
|
foreach ($params['sub_fields'][$key] as $sub_field) {
|
|
PMXI_API::add_field($sub_field['type'], $sub_field['label'], $sub_field['params']);
|
|
}
|
|
?>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
$is_set_with_xpath_visible = false;
|
|
}
|
|
?>
|
|
|
|
</div>
|
|
<?php endforeach;?>
|
|
<?php if ( $is_set_with_xpath_visible ): ?>
|
|
<div class="form-field wpallimport-radio-field wpallimport-<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_xpath">
|
|
<input type="radio" id="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_xpath" class="switcher" name="<?php echo esc_attr($params['field_name']); ?>" value="xpath" <?php echo 'xpath' === $params['field_value'] ? 'checked="checked"': '' ?>/>
|
|
<label for="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_xpath"><?php _e('Set with XPath', 'wp_all_import_plugin' )?></label>
|
|
<span class="wpallimport-clear"></span>
|
|
<div class="switcher-target-<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_xpath set_with_xpath">
|
|
<span class="wpallimport-slide-content" style="padding-left:0px;">
|
|
<table class="form-table custom-params" style="max-width:none; border:none;">
|
|
<tr class="form-field">
|
|
<td class="wpallimport-enum-input-wrapper">
|
|
<input type="text" class="smaller-text" name="<?php echo esc_attr($params['addon_prefix']);?>[xpaths][<?php echo esc_attr($params['field_key']); ?>]" value="<?php echo esc_attr($params['xpath']) ?>"/>
|
|
</td>
|
|
<td class="action">
|
|
|
|
<?php if ($params['mapping']): ?>
|
|
|
|
<?php $custom_mapping_rules = (!empty($params['mapping_rules'])) ? json_decode($params['mapping_rules'], true) : false; ?>
|
|
|
|
<div class="input wpallimport-custom-fields-actions">
|
|
<a href="javascript:void(0);" class="wpallimport-cf-options"><?php _e('Field Options...', 'wp_all_import_plugin'); ?></a>
|
|
<ul id="wpallimport-cf-menu-<?php echo sanitize_title(esc_attr($params['field_name']));?>" class="wpallimport-cf-menu">
|
|
<li class="<?php echo ( ! empty($custom_mapping_rules) ) ? 'active' : ''; ?>">
|
|
<a href="javascript:void(0);" class="set_mapping pmxi_cf_mapping" rel="cf_mapping_<?php echo sanitize_title(esc_attr($params['field_name'])); ?>"><?php _e('Mapping', 'wp_all_import_plugin'); ?></a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div id="cf_mapping_<?php echo sanitize_title(esc_attr($params['field_name'])); ?>" class="custom_type" rel="mapping" style="display:none;">
|
|
<fieldset>
|
|
<table cellpadding="0" cellspacing="5" class="cf-form-table" rel="cf_mapping_<?php echo sanitize_title(esc_attr($params['field_name'])); ?>">
|
|
<thead>
|
|
<tr>
|
|
<td><?php _e('In Your File', 'wp_all_import_plugin') ?></td>
|
|
<td><?php _e('Translated To', 'wp_all_import_plugin') ?></td>
|
|
<td> </td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
if ( ! empty($custom_mapping_rules) and is_array($custom_mapping_rules)){
|
|
|
|
foreach ($custom_mapping_rules as $key => $value) {
|
|
|
|
$k = $key;
|
|
|
|
if (is_array($value)){
|
|
$keys = array_keys($value);
|
|
$k = $keys[0];
|
|
}
|
|
|
|
?>
|
|
<tr class="form-field">
|
|
<td>
|
|
<input type="text" class="mapping_from widefat" value="<?php echo esc_textarea($k); ?>">
|
|
</td>
|
|
<td>
|
|
<input type="text" class="mapping_to widefat" value="<?php echo esc_textarea((is_array($value)) ? $value[$k] : $value); ?>">
|
|
</td>
|
|
<td class="action remove">
|
|
<a href="#remove" style="right:-10px;"></a>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
}
|
|
}
|
|
else{
|
|
if ( ! empty($params['enum_values']) and is_array($params['enum_values'])){
|
|
foreach ($params['enum_values'] as $key => $value){
|
|
?>
|
|
<tr class="form-field">
|
|
<td>
|
|
<input type="text" class="mapping_from widefat">
|
|
</td>
|
|
<td>
|
|
<input type="text" class="mapping_to widefat" value="<?php echo esc_attr($key); ?>">
|
|
</td>
|
|
<td class="action remove">
|
|
<a href="#remove" style="right:-10px;"></a>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
}
|
|
} else {
|
|
?>
|
|
<tr class="form-field">
|
|
<td>
|
|
<input type="text" class="mapping_from widefat">
|
|
</td>
|
|
<td>
|
|
<input type="text" class="mapping_to widefat">
|
|
</td>
|
|
<td class="action remove">
|
|
<a href="#remove" style="right:-10px;"></a>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
}
|
|
}
|
|
?>
|
|
<tr class="form-field template">
|
|
<td>
|
|
<input type="text" class="mapping_from widefat">
|
|
</td>
|
|
<td>
|
|
<input type="text" class="mapping_to widefat">
|
|
</td>
|
|
<td class="action remove">
|
|
<a href="#remove" style="right:-10px;"></a>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3">
|
|
<a href="javascript:void(0);" title="<?php _e('Add Another', 'wp_all_import_plugin')?>" class="action add-new-key add-new-entry"><?php _e('Add Another', 'wp_all_import_plugin') ?></a>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3">
|
|
<div class="wrap" style="position:relative;">
|
|
<a class="save_popup save_mr" href="javascript:void(0);"><?php _e('Save Rules', 'wp_all_import_plugin'); ?></a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<input type="hidden" class="pmre_mapping_rules" name="<?php echo esc_attr($params['addon_prefix']);?>[mapping][<?php echo esc_attr($params['field_key']); ?>]" value="<?php if (!empty($params['mapping_rules'])) echo esc_attr($params['mapping_rules']); ?>"/>
|
|
</fieldset>
|
|
</div>
|
|
<?php endif; ?>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<?php endif; ?>
|
|
<?php
|
|
break;
|
|
|
|
case 'textarea':
|
|
?>
|
|
<textarea name="<?php echo esc_attr($params['field_name']); ?>" id="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>" class="rad4 newline" style="height: 70px;margin: 5px 0;padding-top: 5px;width: 70%;"><?php echo esc_attr($params['field_value']); ?></textarea>
|
|
<?php
|
|
break;
|
|
|
|
case 'wp_editor':
|
|
?>
|
|
<div id="<?php echo ( user_can_richedit() ? 'postdivrich' : 'postdiv' ) . sanitize_title(esc_attr($params['field_name'])); ?>" class="postarea">
|
|
<?php wp_editor( empty($params['field_value']) ? '' : esc_textarea($params['field_value']), sanitize_title(esc_attr($params['field_name'])), array(
|
|
'teeny' => true,
|
|
'media_buttons' => false,
|
|
'textarea_name' => esc_attr($params['field_name']),
|
|
'editor_height' => 200));
|
|
?>
|
|
</div>
|
|
<?php
|
|
break;
|
|
|
|
case 'image':
|
|
?>
|
|
<div class="input">
|
|
<div class="input" style="margin: 0px;">
|
|
<input type="radio" name="<?php echo esc_attr($params['addon_prefix']);?>[download_image][<?php echo esc_attr($params['field_key']);?>]" value="yes" id="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_yes" <?php echo ("yes" == $params['download_image']) ? 'checked="checked"' : '';?>/>
|
|
<label for="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_yes"><?php _e('Download image hosted elsewhere'); ?></label>
|
|
<a href="#help" class="wpallimport-help" title="<?php _e('http:// or https://', 'wp_all_import_plugin') ?>" style="position: relative; top: -2px;">?</a>
|
|
</div>
|
|
<div class="input" style="margin: 0px;">
|
|
<?php $wp_uploads = wp_upload_dir(); ?>
|
|
<input type="radio" name="<?php echo esc_attr($params['addon_prefix']);?>[download_image][<?php echo esc_attr($params['field_key']);?>]" value="no" id="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_no" <?php echo ("yes" != $params['download_image']) ? 'checked="checked"' : '';?>/>
|
|
<label for="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_no"><?php printf(__('Use image(s) currently uploaded in %s', 'wp_all_import_plugin'), esc_url($wp_uploads['basedir'] . DIRECTORY_SEPARATOR . PMXI_Plugin::FILES_DIRECTORY . DIRECTORY_SEPARATOR)); ?></label>
|
|
</div>
|
|
<div class="input">
|
|
<input type="text" name="<?php echo esc_attr($params['field_name']); ?>" style="width:100%;" placeholder="" value="<?php echo esc_attr($params['field_value']); ?>"/>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
break;
|
|
|
|
case 'file':
|
|
?>
|
|
<div class="input">
|
|
<div class="input" style="margin: 0px;">
|
|
<input type="radio" name="<?php echo esc_attr($params['addon_prefix']);?>[download_image][<?php echo esc_attr($params['field_key']);?>]" value="yes" id="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_yes" <?php echo ("yes" == $params['download_image']) ? 'checked="checked"' : '';?>/>
|
|
<label for="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_yes"><?php _e('Download file hosted elsewhere'); ?></label>
|
|
<a href="#help" class="wpallimport-help" title="<?php _e('http:// or https://', 'wp_all_import_plugin') ?>" style="position: relative; top: -2px;">?</a>
|
|
</div>
|
|
<div class="input" style="margin: 0px;">
|
|
<?php $wp_uploads = wp_upload_dir(); ?>
|
|
<input type="radio" name="<?php echo esc_attr($params['addon_prefix']);?>[download_image][<?php echo esc_attr($params['field_key']);?>]" value="no" id="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_no" <?php echo ("yes" != $params['download_image']) ? 'checked="checked"' : '';?>/>
|
|
<label for="<?php echo sanitize_title(esc_attr($params['field_name'])); ?>_no"><?php printf(__('Use file(s) currently uploaded in %s', 'wp_all_import_plugin'), esc_url($wp_uploads['basedir'] . DIRECTORY_SEPARATOR . PMXI_Plugin::FILES_DIRECTORY . DIRECTORY_SEPARATOR)); ?></label>
|
|
</div>
|
|
<div class="input">
|
|
<input type="text" name="<?php echo esc_attr($params['field_name']); ?>" style="width:100%;" placeholder="" value="<?php echo esc_attr($params['field_value']); ?>"/>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
break;
|
|
|
|
case 'accordion':
|
|
|
|
$is_full_width = true;
|
|
if ( ! empty($params['sub_fields']) ){
|
|
foreach ($params['sub_fields'] as $sub_field) {
|
|
if (!empty($sub_field[0]['params']['is_main_field'])){
|
|
PMXI_API::add_field($sub_field[0]['type'], $sub_field[0]['label'], $sub_field[0]['params']);
|
|
$is_full_width = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
$in_the_bottom = $params['in_the_bottom'];
|
|
|
|
$styles = ($is_full_width and $in_the_bottom) ? 'wpallimport-full-with-bottom' : '';
|
|
|
|
if ( ! $in_the_bottom and $is_full_width ) $styles = 'wpallimport-full-with-not-bottom';
|
|
|
|
?>
|
|
<div class="wpallimport-collapsed closed wpallimport-section <?php echo (($in_the_bottom and $is_full_width) ? 'wpallimport-sub-options-full-width' : 'wpallimport-sub-options'); echo ((!$is_full_width) ? ' wpallimport-dependent-options' : '');?> <?php echo esc_attr($styles); ?>">
|
|
<div class="wpallimport-content-section <?php echo (($is_full_width and !$in_the_bottom) ? 'rad4' : 'wpallimport-bottom-radius');?>">
|
|
<div class="wpallimport-collapsed-header">
|
|
<h3 style="color:#40acad;"><?php echo wp_kses_post($label); ?></h3>
|
|
</div>
|
|
<div class="wpallimport-collapsed-content" style="padding: 0;">
|
|
<div class="wpallimport-collapsed-content-inner">
|
|
|
|
<?php
|
|
if ( ! empty($params['sub_fields']) ){
|
|
foreach ($params['sub_fields'] as $sub_field) {
|
|
if ( empty($sub_field[0]['params']['is_main_field']) ) {
|
|
PMXI_API::add_field($sub_field[0]['type'], $sub_field[0]['label'], $sub_field[0]['params']);
|
|
}
|
|
}
|
|
}
|
|
?>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
break;
|
|
}
|
|
if ( ! $params['in_the_bottom'] ){
|
|
?>
|
|
</div>
|
|
<?php
|
|
}
|
|
echo ob_get_clean();
|
|
}
|
|
|
|
public static function add_additional_images_section( $section_title, $section_slug, $post, $post_type = '', $section_is_show_hints = true, $section_is_show_warning = false, $section_type = 'images'){
|
|
|
|
include( WP_ALL_IMPORT_ROOT_DIR . '/views/admin/import/template/_featured_template.php' );
|
|
|
|
}
|
|
|
|
public static function upload_image($pid, $img_url, $download_images, $logger, $create_image = false, $image_name = "", $file_type = 'images', $check_existing = true, $articleData = false, $importData = false) {
|
|
|
|
if (empty($img_url)) return false;
|
|
|
|
$bn = wp_all_import_sanitize_filename(urldecode(basename($img_url)));
|
|
|
|
if ($image_name == ""){
|
|
$img_ext = pmxi_getExtensionFromStr($img_url);
|
|
$default_extension = pmxi_getExtension($bn);
|
|
if ($img_ext == "") $img_ext = pmxi_get_remote_image_ext($img_url);
|
|
// generate local file name
|
|
$image_name = apply_filters("wp_all_import_api_image_filename", urldecode(sanitize_file_name((($img_ext) ? str_replace("." . $default_extension, "", $bn) : $bn))) . (("" != $img_ext) ? '.' . $img_ext : ''), $img_url, $pid);
|
|
}
|
|
|
|
$current_xml_node = false;
|
|
if (!empty($importData['current_xml_node'])) {
|
|
$current_xml_node = $importData['current_xml_node'];
|
|
}
|
|
$import_id = false;
|
|
if (!empty($importData['import'])) {
|
|
$import_id = $importData['import']->id;
|
|
}
|
|
|
|
$uploads = wp_upload_dir();
|
|
$uploads = apply_filters('wp_all_import_images_uploads_dir', $uploads, $articleData, $current_xml_node, $import_id);
|
|
|
|
$targetDir = $uploads['path'];
|
|
$targetUrl = $uploads['url'];
|
|
$download_image = true;
|
|
$result = false;
|
|
$wp_filetype = false;
|
|
$attch = false;
|
|
|
|
if ( $check_existing ) {
|
|
// Trying to find existing image in hash table.
|
|
if ("yes" == $download_images ) {
|
|
$logger and call_user_func($logger, sprintf(__('- Searching for existing image `%s` by URL...', 'wp_all_import_plugin'), rawurldecode($img_url)));
|
|
$imageList = new PMXI_Image_List();
|
|
$attch = $imageList->getExistingImageByUrl($img_url);
|
|
if ($attch) {
|
|
$logger and call_user_func($logger, sprintf(__('Existing image was found by URL `%s`...', 'wp_all_import_plugin'), $img_url));
|
|
// Attach media to current post if it's currently unattached.
|
|
if (empty($attch->post_parent)) {
|
|
wp_update_post(
|
|
array(
|
|
'ID' => $attch->ID,
|
|
'post_parent' => $pid
|
|
)
|
|
);
|
|
}
|
|
return $attch->ID;
|
|
}
|
|
}
|
|
|
|
if (empty($attch)) {
|
|
$logger and call_user_func($logger, sprintf(__('- Searching for existing image `%s` by `_wp_attached_file` `%s`...', 'wp_all_import_plugin'), $img_url, $image_name));
|
|
$attch = wp_all_import_get_image_from_gallery($image_name, $targetDir, $file_type);
|
|
}
|
|
|
|
if (!empty($attch)) {
|
|
$logger and call_user_func($logger, sprintf(__('- Existing image was found by `_wp_attached_file` ...', 'wp_all_import_plugin'), $img_url));
|
|
$imageRecord = new PMXI_Image_Record();
|
|
$imageRecord->getBy(array(
|
|
'attachment_id' => $attch->ID
|
|
));
|
|
$imageRecord->isEmpty() and $imageRecord->set(array(
|
|
'attachment_id' => $attch->ID,
|
|
'image_url' => $img_url,
|
|
'image_filename' => $image_name
|
|
))->insert();
|
|
// Attach media to current post if it's currently unattached.
|
|
if (empty($attch->post_parent)) {
|
|
wp_update_post(
|
|
array(
|
|
'ID' => $attch->ID,
|
|
'post_parent' => $pid
|
|
)
|
|
);
|
|
}
|
|
return $attch->ID;
|
|
}
|
|
}
|
|
|
|
$image_filename = wp_unique_filename($targetDir, $image_name);
|
|
$image_filepath = $targetDir . '/' . $image_filename;
|
|
|
|
$url = str_replace(" ", "%20", trim($img_url));
|
|
|
|
$is_base64_images_allowed = apply_filters("wp_all_import_is_base64_images_allowed", true, $url, false);
|
|
|
|
if ( $file_type == 'images' && base64_encode(base64_decode($url)) == $url && $is_base64_images_allowed ) {
|
|
$image_name = md5($url) . '.jpg';
|
|
// Search existing attachment.
|
|
$attch = wp_all_import_get_image_from_gallery($image_name, $targetDir, $file_type);
|
|
if (empty($attch)) {
|
|
$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: Image %s not found in media gallery.', 'wp_all_import_plugin'), trim($image_name)));
|
|
} else {
|
|
$logger and call_user_func($logger, sprintf(__('- Using existing image `%s`...', 'wp_all_import_plugin'), trim($image_name)));
|
|
// Attach media to current post if it's currently unattached.
|
|
if (empty($attch->post_parent)) {
|
|
wp_update_post(
|
|
array(
|
|
'ID' => $attch->ID,
|
|
'post_parent' => $pid
|
|
)
|
|
);
|
|
}
|
|
return $attch->ID;
|
|
}
|
|
|
|
if ("yes" == $download_images) {
|
|
$img = @imagecreatefromstring(base64_decode($url));
|
|
if ($img) {
|
|
$image_filename = $image_name;
|
|
$logger and call_user_func($logger, __('- found base64_encoded image', 'wp_all_import_plugin'));
|
|
$image_filepath = $targetDir . '/' . $image_filename;
|
|
imagejpeg($img, $image_filepath);
|
|
if ( ! ($image_info = apply_filters('pmxi_getimagesize', @getimagesize($image_filepath), $image_filepath)) or ! in_array($image_info[2], wp_all_import_supported_image_types())) {
|
|
$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: File %s is not a valid image and cannot be set as featured one', 'wp_all_import_plugin'), $image_filepath));
|
|
} else {
|
|
$result = true;
|
|
$download_image = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Do not download images.
|
|
if ( "yes" != $download_images ) {
|
|
|
|
$image_filename = wp_unique_filename($targetDir, basename($image_name));
|
|
$image_filepath = $targetDir . '/' . basename($image_filename);
|
|
|
|
$wpai_uploads = $uploads['basedir'] . DIRECTORY_SEPARATOR . PMXI_Plugin::FILES_DIRECTORY . DIRECTORY_SEPARATOR;
|
|
$wpai_image_path = $wpai_uploads . str_replace('%20', ' ', $url);
|
|
|
|
$logger and call_user_func($logger, sprintf(__('- Searching for existing image `%s` in `%s` folder', 'wp_all_import_plugin'), $wpai_image_path, $wpai_uploads));
|
|
|
|
if ( @file_exists($wpai_image_path) and @copy( $wpai_image_path, $image_filepath )){
|
|
$download_image = false;
|
|
// Validate import attachments.
|
|
if ($file_type == 'files') {
|
|
if ( ! $wp_filetype = wp_check_filetype(basename($image_filepath), null )) {
|
|
$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: Can\'t detect attachment file type %s', 'wp_all_import_plugin'), trim($image_filepath)));
|
|
@unlink($image_filepath);
|
|
}
|
|
else {
|
|
$result = true;
|
|
$logger and call_user_func($logger, sprintf(__('- File `%s` has been successfully found', 'wp_all_import_plugin'), $wpai_image_path));
|
|
}
|
|
}
|
|
// Validate import images.
|
|
elseif ($file_type == 'images') {
|
|
if ( preg_match('%\W(svg)$%i', wp_all_import_basename($image_filepath)) or $image_info = apply_filters('pmxi_getimagesize', @getimagesize($image_filepath), $image_filepath) and in_array($image_info[2], wp_all_import_supported_image_types())) {
|
|
$logger and call_user_func($logger, sprintf(__('- Image `%s` has been successfully found', 'wp_all_import_plugin'), $wpai_image_path));
|
|
$result = true;
|
|
} else {
|
|
$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: File %s is not a valid image and cannot be set as featured one', 'wp_all_import_plugin'), $image_filepath));
|
|
@unlink($image_filepath);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $download_image ) {
|
|
|
|
if ($file_type == 'images') {
|
|
$logger and call_user_func($logger, sprintf(__('- Downloading image from `%s`', 'wp_all_import_plugin'), $url));
|
|
} elseif ($file_type == 'files') {
|
|
$logger and call_user_func($logger, sprintf(__('- Downloading file from `%s`', 'wp_all_import_plugin'), $url));
|
|
}
|
|
|
|
if ( ! preg_match('%^(http|ftp)s?://%i', $url) ) {
|
|
$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: File %s cannot be saved locally as %s', 'wp_all_import_plugin'), $url, $image_filepath));
|
|
return false;
|
|
}
|
|
|
|
$request = get_file_curl($url, $image_filepath);
|
|
|
|
if ( (is_wp_error($request) or $request === false) and ! @file_put_contents($image_filepath, @file_get_contents($url))) {
|
|
@unlink($image_filepath); // delete file since failed upload may result in empty file created
|
|
} else {
|
|
|
|
if ($file_type == 'images') {
|
|
if ( preg_match('%\W(svg)$%i', wp_all_import_basename($image_filepath)) or $image_info = apply_filters('pmxi_getimagesize', @getimagesize($image_filepath), $image_filepath) and in_array($image_info[2], wp_all_import_supported_image_types())) {
|
|
$result = true;
|
|
$logger and call_user_func($logger, sprintf(__('- Image `%s` has been successfully downloaded', 'wp_all_import_plugin'), $url));
|
|
}
|
|
}
|
|
elseif ($file_type == 'files'){
|
|
if ( $wp_filetype = wp_check_filetype(basename($image_filepath), null )) {
|
|
$result = true;
|
|
$logger and call_user_func($logger, sprintf(__('- File `%s` has been successfully downloaded', 'wp_all_import_plugin'), $url));
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! $result ) {
|
|
|
|
$request = get_file_curl($url, $image_filepath);
|
|
|
|
if ( (is_wp_error($request) or $request === false) and ! @file_put_contents($image_filepath, @file_get_contents($url))) {
|
|
$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: File %s cannot be saved locally as %s', 'wp_all_import_plugin'), $url, $image_filepath));
|
|
@unlink($image_filepath); // delete file since failed upload may result in empty file created
|
|
} else {
|
|
|
|
if ($file_type == 'images') {
|
|
if ( preg_match('%\W(svg)$%i', wp_all_import_basename($image_filepath)) or $image_info = apply_filters('pmxi_getimagesize', @getimagesize($image_filepath), $image_filepath) and in_array($image_info[2], wp_all_import_supported_image_types())) {
|
|
$result = true;
|
|
$logger and call_user_func($logger, sprintf(__('- Image `%s` has been successfully downloaded', 'wp_all_import_plugin'), $url));
|
|
} else {
|
|
$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: File %s is not a valid image and cannot be set as featured one', 'wp_all_import_plugin'), $url));
|
|
@unlink($image_filepath);
|
|
}
|
|
}
|
|
elseif ($file_type == 'files') {
|
|
if ( ! $wp_filetype = wp_check_filetype(basename($image_filepath), null )) {
|
|
$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: Can\'t detect attachment file type %s', 'wp_all_import_plugin'), trim($url)));
|
|
@unlink($image_filepath);
|
|
} else {
|
|
$result = true;
|
|
$logger and call_user_func($logger, sprintf(__('- File `%s` has been successfully found', 'wp_all_import_plugin'), $url));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $create_image && $result ) {
|
|
|
|
// you must first include the image.php file
|
|
// for the function wp_generate_attachment_metadata() to work
|
|
require_once(ABSPATH . 'wp-admin/includes/image.php');
|
|
|
|
if ($file_type == 'images') {
|
|
$logger and call_user_func($logger, sprintf(__('- Creating an attachment for image `%s`', 'wp_all_import_plugin'), $targetUrl . '/' . basename($image_filename)));
|
|
} else {
|
|
$logger and call_user_func($logger, sprintf(__('- Creating an attachment for file `%s`', 'wp_all_import_plugin'), $targetUrl . '/' . basename($image_filename)));
|
|
}
|
|
|
|
$file_mime_type = empty($wp_filetype['type']) ? '' : $wp_filetype['type'];
|
|
if ($file_type == 'images' && !empty($image_info)) {
|
|
$file_mime_type = image_type_to_mime_type($image_info[2]);
|
|
}
|
|
$file_mime_type = apply_filters('wp_all_import_image_mime_type', $file_mime_type, $image_filepath);
|
|
$attachment = [
|
|
'post_mime_type' => $file_mime_type,
|
|
'guid' => $targetUrl . '/' . basename($image_filename),
|
|
'post_title' => basename($image_filename),
|
|
'post_content' => '',
|
|
];
|
|
if (!empty($articleData['post_author'])) {
|
|
$attachment['post_author'] = $articleData['post_author'];
|
|
}
|
|
if ($file_type == 'images' and ($image_meta = wp_read_image_metadata($image_filepath))) {
|
|
if (trim($image_meta['title']) && ! is_numeric(sanitize_title($image_meta['title'])))
|
|
$attachment['post_title'] = $image_meta['title'];
|
|
if (trim($image_meta['caption']))
|
|
$attachment['post_content'] = $image_meta['caption'];
|
|
}
|
|
remove_all_actions('add_attachment');
|
|
$attid = wp_insert_attachment($attachment, $image_filepath, $pid);
|
|
|
|
if (is_wp_error($attid)) {
|
|
$logger and call_user_func($logger, __('- <b>WARNING</b>', 'wp_all_import_plugin') . ': ' . $attid->get_error_message());
|
|
return false;
|
|
} else {
|
|
/** Fires once an attachment has been added. */
|
|
do_action( 'wp_all_import_add_attachment', $attid );
|
|
wp_update_attachment_metadata($attid, wp_generate_attachment_metadata($attid, $image_filepath));
|
|
$imageRecord = new PMXI_Image_Record();
|
|
$imageRecord->getBy(array(
|
|
'attachment_id' => $attid
|
|
));
|
|
$imageRecord->isEmpty() and $imageRecord->set(array(
|
|
'attachment_id' => $attid,
|
|
'image_url' => $img_url,
|
|
'image_filename' => $image_filename
|
|
))->insert();
|
|
$logger and call_user_func($logger, sprintf(__('- Attachment has been successfully created for image `%s`', 'wp_all_import_plugin'), $targetUrl . '/' . basename($image_filename)));
|
|
return $attid;
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
}
|
|
|