Initial File and Image Uploader

This commit is contained in:
Champ Camba
2018-07-31 01:35:08 +08:00
parent 752995f223
commit fad46ea012
15 changed files with 1483 additions and 263 deletions
+41 -9
View File
@@ -234,6 +234,10 @@ function initImageUpload_UM( trigger ) {
upload_text = '';
}
if( jQuery('#um_upload_single:visible').data('user_id') ){
user_id = jQuery('#um_upload_single:visible').data('user_id');
}
trigger.uploadFile({
url: um_scripts.imageupload,
method: "POST",
@@ -243,7 +247,8 @@ function initImageUpload_UM( trigger ) {
set_id: trigger.data('set_id'),
set_mode: trigger.data('set_mode'),
_wpnonce: trigger.data('nonce'),
timestamp: trigger.data('timestamp')
timestamp: trigger.data('timestamp'),
user_id: user_id
},
fileName: trigger.data('key'),
allowedTypes: trigger.data('allowed_types'),
@@ -281,13 +286,17 @@ function initImageUpload_UM( trigger ) {
um_modal_responsive();
} else {
jQuery.each( data, function(key, value) {
console.log( data );
jQuery.each( data, function( i, d ) {
var img_id = trigger.parents('.um-modal-body').find('.um-single-image-preview img');
var img_id_h = trigger.parents('.um-modal-body').find('.um-single-image-preview');
img_id.attr("src", value);
var cache_ts = new Date();
img_id.attr("src", d.url + "?"+cache_ts.getTime() );
img_id.data("file", d.file );
img_id.load(function(){
trigger.parents('.um-modal-body').find('.um-modal-btn.um-finish-upload.disabled').removeClass('disabled');
@@ -301,6 +310,9 @@ function initImageUpload_UM( trigger ) {
}
},
onError: function ( e ){
console.log( e );
}
});
@@ -326,6 +338,10 @@ function initFileUpload_UM( trigger ) {
upload_text = '';
}
if( jQuery('#um_upload_single:visible').data('user_id') ){
user_id = jQuery('#um_upload_single:visible').data('user_id');
}
trigger.uploadFile({
url: um_scripts.fileupload,
method: "POST",
@@ -377,14 +393,27 @@ function initFileUpload_UM( trigger ) {
trigger.parents('.um-modal-body').find('.ajax-upload-dragdrop,.upload-statusbar').hide(0);
trigger.parents('.um-modal-body').find('.um-single-file-preview').show(0);
if (key == 'icon') {
trigger.parents('.um-modal-body').find('.um-single-fileinfo i').removeClass().addClass(value);
if ( key == 'icon' ) {
trigger.parents('.um-modal-body').find('.um-single-fileinfo i').removeClass().addClass( value );
} else if ( key == 'icon_bg' ) {
trigger.parents('.um-modal-body').find('.um-single-fileinfo span.icon').css({'background-color' : value } );
} else if ( key == 'filename' ) {
trigger.parents('.um-modal-body').find('.um-single-fileinfo span.filename').html(value);
} else {
trigger.parents('.um-modal-body').find('.um-single-fileinfo a').attr('data-file', value );
}else if( key == 'original_name' ){
trigger.parents('.um-modal-body').find('.um-single-fileinfo a').attr('data-orignal-name', value );
trigger.parents('.um-modal-body').find('.um-single-fileinfo span.filename').html( value );
} else if ( key == 'url' ) {
trigger.parents('.um-modal-body').find('.um-single-fileinfo a').attr('href', value);
}
});
@@ -395,6 +424,9 @@ function initFileUpload_UM( trigger ) {
}
},
onError: function ( e ){
console.log( e );
}
});
+1 -1
View File
File diff suppressed because one or more lines are too long
+17 -10
View File
@@ -72,15 +72,19 @@ jQuery(document).ready(function() {
jQuery(document).on('click', '.um-finish-upload.file:not(.disabled)', function(){
var key = jQuery(this).attr('data-key');
var preview = jQuery(this).parents('.um-modal-body').find('.um-single-file-preview').html();
um_remove_modal();
jQuery('.um-single-file-preview[data-key='+key+']').fadeIn().html( preview );
var file = jQuery('.um-field[data-key='+key+']').find('.um-single-fileinfo a').data('file');
jQuery('.um-single-file-preview[data-key='+key+']').parents('.um-field').find('.um-btn-auto-width').html( jQuery(this).attr('data-change') );
jQuery('.um-single-file-preview[data-key='+key+']').parents('.um-field').find('input[type=hidden]').val( jQuery('.um-single-file-preview[data-key='+key+']').parents('.um-field').find('.um-single-fileinfo a').attr('href') );
jQuery('.um-single-file-preview[data-key='+key+']').parents('.um-field').find('input[type="hidden"]').val( file );
});
jQuery(document).on('click', '.um-finish-upload.image:not(.disabled)', function(){
@@ -110,26 +114,29 @@ jQuery(document).ready(function() {
user_id : user_id,
key: key
},
success: function(data){
success: function( data ){
d = new Date();
if ( key == 'profile_photo') {
jQuery('.um-profile-photo-img img').attr('src', data + "?"+d.getTime());
jQuery('.um-profile-photo-img img').attr('src', data.data.image.source_url + "?"+d.getTime());
}
if ( key == 'cover_photo') {
jQuery('.um-cover-e').empty().html('<img src="' + data + "?"+d.getTime() + '" alt="" />');
jQuery('.um-cover-e').empty().html('<img src="' + data.data.image.source_url + "?"+d.getTime() + '" alt="" />');
if ( jQuery('.um').hasClass('um-editing') ) {
jQuery('.um-cover-overlay').show();
}
}
jQuery('.um-single-image-preview[data-key='+key+']').fadeIn().find('img').attr('src', data.data.image.source_url + "?"+d.getTime());
jQuery('.um-single-image-preview[data-key='+key+']').fadeIn().find('img').attr('src', data + "?"+d.getTime());
um_remove_modal();
jQuery('.um-single-image-preview[data-key='+key+']').parents('.um-field').find('.um-btn-auto-width').html( elem.attr('data-change') );
jQuery('.um-single-image-preview[data-key='+key+']').parents('.um-field').find('input[type=hidden]').val( data );
jQuery('.um-single-image-preview[data-key='+key+']').parents('.um-field').find('.um-btn-auto-width').html( elem.attr('data-change') );
jQuery('.um-single-image-preview[data-key='+key+']').parents('.um-field').find('input[type="hidden"]').val( data.data.image.filename );
}
});
+1 -1
View File
@@ -1 +1 @@
jQuery(document).ready(function(){jQuery(document).on("click",".um-popup-overlay",function(){remove_Modal()}),jQuery(document).on("click",'.um-modal-overlay, a[data-action="um_remove_modal"]',function(){um_remove_modal()}),jQuery(document).on("click",'a[data-modal^="um_"], span[data-modal^="um_"], .um-modal a',function(e){return e.preventDefault(),!1}),jQuery(document).on("click",".um-modal .um-single-file-preview a.cancel",function(e){e.preventDefault();var a=jQuery(this).parents(".um-modal-body"),t=jQuery(this).parents(".um-modal-body").find(".um-single-fileinfo a").attr("href");return a.find(".um-single-file-preview").hide(),a.find(".ajax-upload-dragdrop").show(),a.find(".um-modal-btn.um-finish-upload").addClass("disabled"),um_modal_responsive(),jQuery.ajax({url:um_scripts.remove_file,type:"post",data:{src:t}}),!1}),jQuery(document).on("click",".um-modal .um-single-image-preview a.cancel",function(e){e.preventDefault();var a=jQuery(this).parents(".um-modal-body"),t=jQuery(this).parents(".um-modal-body").find(".um-single-image-preview img").attr("src");return jQuery("img.cropper-hidden").cropper("destroy"),a.find(".um-single-image-preview img").attr("src",""),a.find(".um-single-image-preview").hide(),a.find(".ajax-upload-dragdrop").show(),a.find(".um-modal-btn.um-finish-upload").addClass("disabled"),um_modal_responsive(),jQuery.ajax({url:um_scripts.remove_file,type:"post",data:{src:t}}),!1}),jQuery(document).on("click",".um-finish-upload.file:not(.disabled)",function(){var e=jQuery(this).attr("data-key"),a=jQuery(this).parents(".um-modal-body").find(".um-single-file-preview").html();um_remove_modal(),jQuery(".um-single-file-preview[data-key="+e+"]").fadeIn().html(a),jQuery(".um-single-file-preview[data-key="+e+"]").parents(".um-field").find(".um-btn-auto-width").html(jQuery(this).attr("data-change")),jQuery(".um-single-file-preview[data-key="+e+"]").parents(".um-field").find("input[type=hidden]").val(jQuery(".um-single-file-preview[data-key="+e+"]").parents(".um-field").find(".um-single-fileinfo a").attr("href"))}),jQuery(document).on("click",".um-finish-upload.image:not(.disabled)",function(){var e=jQuery(this),a=jQuery(this).attr("data-key"),t=jQuery(this).parents(".um-modal-body").find(".um-single-image-preview"),r=t.find("img").attr("src"),i=t.attr("data-coord");if(jQuery(this).parents("#um_upload_single").attr("data-user_id"))var u=jQuery(this).parents("#um_upload_single").attr("data-user_id");else var u=0;i?(jQuery(this).html(jQuery(this).attr("data-processing")).addClass("disabled"),jQuery.ajax({url:um_scripts.resize_image,type:"POST",data:{src:r,coord:i,user_id:u,key:a},success:function(t){d=new Date,"profile_photo"==a&&jQuery(".um-profile-photo-img img").attr("src",t+"?"+d.getTime()),"cover_photo"==a&&(jQuery(".um-cover-e").empty().html('<img src="'+t+"?"+d.getTime()+'" alt="" />'),jQuery(".um").hasClass("um-editing")&&jQuery(".um-cover-overlay").show()),jQuery(".um-single-image-preview[data-key="+a+"]").fadeIn().find("img").attr("src",t+"?"+d.getTime()),um_remove_modal(),jQuery(".um-single-image-preview[data-key="+a+"]").parents(".um-field").find(".um-btn-auto-width").html(e.attr("data-change")),jQuery(".um-single-image-preview[data-key="+a+"]").parents(".um-field").find("input[type=hidden]").val(t)}})):(d=new Date,jQuery(".um-single-image-preview[data-key="+a+"]").fadeIn().find("img").attr("src",r+"?"+d.getTime()),um_remove_modal(),jQuery(".um-single-image-preview[data-key="+a+"]").parents(".um-field").find(".um-btn-auto-width").html(e.attr("data-change")),jQuery(".um-single-image-preview[data-key="+a+"]").parents(".um-field").find("input[type=hidden]").val(r))}),jQuery(document).on("click",'a[data-modal^="um_"], span[data-modal^="um_"]',function(e){var a=jQuery(this).attr("data-modal");if(jQuery(this).data("modal-size"))var t=jQuery(this).data("modal-size");else var t="normal";jQuery(this).data("modal-copy")?(jQuery("#"+a).html(jQuery(this).parents(".um-field").find(".um-modal-hidden-content").html()),jQuery(this).parents(".um-profile-photo").attr("data-user_id")&&jQuery("#"+a).attr("data-user_id",jQuery(this).parents(".um-profile-photo").attr("data-user_id")),jQuery(this).parents(".um-cover").attr("data-ratio")&&jQuery("#"+a).attr("data-ratio",jQuery(this).parents(".um-cover").attr("data-ratio")),jQuery(this).parents(".um-cover").attr("data-user_id")&&jQuery("#"+a).attr("data-user_id",jQuery(this).parents(".um-cover").attr("data-user_id")),um_new_modal(a,t)):um_new_modal(a,t)})});
jQuery(document).ready(function(){jQuery(document).on("click",".um-popup-overlay",function(){remove_Modal()}),jQuery(document).on("click",'.um-modal-overlay, a[data-action="um_remove_modal"]',function(){um_remove_modal()}),jQuery(document).on("click",'a[data-modal^="um_"], span[data-modal^="um_"], .um-modal a',function(e){return e.preventDefault(),!1}),jQuery(document).on("click",".um-modal .um-single-file-preview a.cancel",function(e){e.preventDefault();var a=jQuery(this).parents(".um-modal-body"),t=jQuery(this).parents(".um-modal-body").find(".um-single-fileinfo a").attr("href");return a.find(".um-single-file-preview").hide(),a.find(".ajax-upload-dragdrop").show(),a.find(".um-modal-btn.um-finish-upload").addClass("disabled"),um_modal_responsive(),jQuery.ajax({url:um_scripts.remove_file,type:"post",data:{src:t}}),!1}),jQuery(document).on("click",".um-modal .um-single-image-preview a.cancel",function(e){e.preventDefault();var a=jQuery(this).parents(".um-modal-body"),t=jQuery(this).parents(".um-modal-body").find(".um-single-image-preview img").attr("src");return jQuery("img.cropper-hidden").cropper("destroy"),a.find(".um-single-image-preview img").attr("src",""),a.find(".um-single-image-preview").hide(),a.find(".ajax-upload-dragdrop").show(),a.find(".um-modal-btn.um-finish-upload").addClass("disabled"),um_modal_responsive(),jQuery.ajax({url:um_scripts.remove_file,type:"post",data:{src:t}}),!1}),jQuery(document).on("click",".um-finish-upload.file:not(.disabled)",function(){var e=jQuery(this).attr("data-key"),a=jQuery(this).parents(".um-modal-body").find(".um-single-file-preview").html();um_remove_modal(),jQuery(".um-single-file-preview[data-key="+e+"]").fadeIn().html(a);var t=jQuery(".um-field[data-key="+e+"]").find(".um-single-fileinfo a").data("file");jQuery(".um-single-file-preview[data-key="+e+"]").parents(".um-field").find(".um-btn-auto-width").html(jQuery(this).attr("data-change")),jQuery(".um-single-file-preview[data-key="+e+"]").parents(".um-field").find('input[type="hidden"]').val(t)}),jQuery(document).on("click",".um-finish-upload.image:not(.disabled)",function(){var e=jQuery(this),a=jQuery(this).attr("data-key"),t=jQuery(this).parents(".um-modal-body").find(".um-single-image-preview"),r=t.find("img").attr("src"),i=t.attr("data-coord");if(jQuery(this).parents("#um_upload_single").attr("data-user_id"))var u=jQuery(this).parents("#um_upload_single").attr("data-user_id");else var u=0;i?(jQuery(this).html(jQuery(this).attr("data-processing")).addClass("disabled"),jQuery.ajax({url:um_scripts.resize_image,type:"POST",data:{src:r,coord:i,user_id:u,key:a},success:function(t){d=new Date,"profile_photo"==a&&jQuery(".um-profile-photo-img img").attr("src",t.data.image.source_url+"?"+d.getTime()),"cover_photo"==a&&(jQuery(".um-cover-e").empty().html('<img src="'+t.data.image.source_url+"?"+d.getTime()+'" alt="" />'),jQuery(".um").hasClass("um-editing")&&jQuery(".um-cover-overlay").show()),jQuery(".um-single-image-preview[data-key="+a+"]").fadeIn().find("img").attr("src",t.data.image.source_url+"?"+d.getTime()),um_remove_modal(),jQuery(".um-single-image-preview[data-key="+a+"]").parents(".um-field").find(".um-btn-auto-width").html(e.attr("data-change")),jQuery(".um-single-image-preview[data-key="+a+"]").parents(".um-field").find('input[type="hidden"]').val(t.data.image.filename)}})):(d=new Date,jQuery(".um-single-image-preview[data-key="+a+"]").fadeIn().find("img").attr("src",r+"?"+d.getTime()),um_remove_modal(),jQuery(".um-single-image-preview[data-key="+a+"]").parents(".um-field").find(".um-btn-auto-width").html(e.attr("data-change")),jQuery(".um-single-image-preview[data-key="+a+"]").parents(".um-field").find("input[type=hidden]").val(r))}),jQuery(document).on("click",'a[data-modal^="um_"], span[data-modal^="um_"]',function(e){var a=jQuery(this).attr("data-modal");if(jQuery(this).data("modal-size"))var t=jQuery(this).data("modal-size");else var t="normal";jQuery(this).data("modal-copy")?(jQuery("#"+a).html(jQuery(this).parents(".um-field").find(".um-modal-hidden-content").html()),jQuery(this).parents(".um-profile-photo").attr("data-user_id")&&jQuery("#"+a).attr("data-user_id",jQuery(this).parents(".um-profile-photo").attr("data-user_id")),jQuery(this).parents(".um-cover").attr("data-ratio")&&jQuery("#"+a).attr("data-ratio",jQuery(this).parents(".um-cover").attr("data-ratio")),jQuery(this).parents(".um-cover").attr("data-user_id")&&jQuery("#"+a).attr("data-user_id",jQuery(this).parents(".um-cover").attr("data-user_id")),um_new_modal(a,t)):um_new_modal(a,t)})});
@@ -2381,6 +2381,7 @@ SOAP Client: <?php echo ( class_exists( 'SoapClient' ) ) ? 'Your
SUHOSIN: <?php echo ( extension_loaded( 'suhosin' ) ) ? 'Your server has SUHOSIN installed.' : 'Your server does not have SUHOSIN installed.'; ?><?php echo "\n"; ?>
GD Library: <?php echo ( extension_loaded( 'gd' ) && function_exists('gd_info') ) ? 'PHP GD library is installed on your web server.' : 'PHP GD library is NOT installed on your web server.'; ?><?php echo "\n"; ?>
Mail: <?php echo ( function_exists('mail') ) ? 'PHP mail function exist on your web server.' : 'PHP mail function doesn\'t exist on your web server.'; ?><?php echo "\n"; ?>
Exif: <?php echo ( extension_loaded( 'exif' ) && function_exists('exif_imagetype') ) ? 'PHP Exif library is installed on your web server.' : 'PHP Exif library is NOT installed on your web server.'; ?><?php echo "\n"; ?>
--- Session Configurations ---
+15
View File
@@ -540,6 +540,8 @@ if ( ! class_exists( 'UM' ) ) {
$this->mobile();
$this->external_integrations();
$this->gdpr();
$this->uploader();
}
@@ -1139,6 +1141,19 @@ if ( ! class_exists( 'UM' ) ) {
return $this->classes['files'];
}
/**
* @since 2.0.21
*
* @return um\core\Files
*/
function uploader() {
if ( empty( $this->classes['uploader'] ) ) {
$this->classes['uploader'] = new um\core\Uploader();
}
return $this->classes['uploader'];
}
/**
* @since 2.0
+19
View File
@@ -32,6 +32,25 @@ if ( ! class_exists( 'um\core\AJAX_Common' ) ) {
}
add_action( 'wp_ajax_um_remove_file', array( UM()->files(), 'ajax_remove_file' ) );
add_action( 'wp_ajax_um_delete_profile_photo', array( UM()->profile(), 'ajax_delete_profile_photo' ) );
add_action( 'wp_ajax_um_delete_cover_photo', array( UM()->profile(), 'ajax_delete_cover_photo' ) );
add_action( 'wp_ajax_um_select_options', array( UM()->form(), 'ajax_select_options' ) );
add_action( 'wp_ajax_um_ajax_paginate', array( UM()->query(), 'ajax_paginate' ) );
add_action( 'wp_ajax_um_muted_action', array( UM()->form(), 'ajax_muted_action' ) );
add_action( 'wp_ajax_nopriv_um_remove_file', array( UM()->files(), 'ajax_remove_file' ) );
add_action( 'wp_ajax_um_remove_file', array( UM()->files(), 'ajax_remove_file' ) );
add_action( 'wp_ajax_nopriv_um_fileupload', array( UM()->files(), 'ajax_file_upload' ) );
add_action( 'wp_ajax_um_fileupload', array( UM()->files(), 'ajax_file_upload' ) );
add_action( 'wp_ajax_nopriv_um_imageupload', array( UM()->files(), 'ajax_image_upload' ) );
add_action( 'wp_ajax_um_imageupload', array( UM()->files(), 'ajax_image_upload' ) );
add_action( 'wp_ajax_nopriv_um_resize_image', array( UM()->files(), 'ajax_resize_image' ) );
add_action( 'wp_ajax_um_resize_image', array( UM()->files(), 'ajax_resize_image' ) );
/**
* Fallback for ajax urls
+25 -63
View File
@@ -2219,28 +2219,21 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
/* Single Image Upload */
case 'image':
$output .= '<div class="um-field' . $classes . '"' . $conditional . ' data-key="' . $key . '">';
if (in_array( $key, array( 'profile_photo', 'cover_photo' ) )) {
$field_value = '';
} else {
$field_value = $this->field_value( $key, $default, $data );
}
$output .= '<input type="hidden" name="' . $key . UM()->form()->form_suffix . '" id="' . $key . UM()->form()->form_suffix . '" value="' . $field_value . '" />';
if (isset( $data['label'] )) {
$output .= $this->field_label( $label, $key, $data );
}
$modal_label = ( isset( $data['label'] ) ) ? $data['label'] : __( 'Upload Photo', 'ultimate-member' );
$output .= '<div class="um-field-area" style="text-align: center">';
if ($this->field_value( $key, $default, $data )) {
if (!in_array( $key, array( 'profile_photo', 'cover_photo' ) )) {
if ( ! in_array( $key, array( 'profile_photo', 'cover_photo' ) ) ) {
if (isset( $this->set_mode ) && $this->set_mode == 'register') {
$imgValue = $this->field_value( $key, $default, $data );
$imgValue = UM()->uploader()->get_core_temp_url() . "/" . $this->field_value( $key, $default, $data );
} else {
$imgValue = um_user_uploads_uri() . $this->field_value( $key, $default, $data );
}
@@ -2248,29 +2241,20 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
} else {
$img = '';
}
$output .= '<div class="um-single-image-preview show ' . $crop_class . '" data-crop="' . $crop_data . '" data-key="' . $key . '">
<a href="#" class="cancel"><i class="um-icon-close"></i></a>' . $img . '
</div><a href="#" data-modal="um_upload_single" data-modal-size="' . $modal_size . '" data-modal-copy="1" class="um-button um-btn-auto-width">' . __( 'Change photo', 'ultimate-member' ) . '</a>';
} else {
$output .= '<div class="um-single-image-preview ' . $crop_class . '" data-crop="' . $crop_data . '" data-key="' . $key . '">
<a href="#" class="cancel"><i class="um-icon-close"></i></a>
<img src="" alt="" />
<div class="um-clear"></div></div><a href="#" data-modal="um_upload_single" data-modal-size="' . $modal_size . '" data-modal-copy="1" class="um-button um-btn-auto-width">' . $button_text . '</a>';
}
$output .= '</div>';
/* modal hidden */
$output .= '<div class="um-modal-hidden-content">';
$output .= '<div class="um-modal-header"> ' . $modal_label . '</div>';
$output .= '<div class="um-modal-body">';
if (isset( $this->set_id )) {
$set_id = $this->set_id;
$set_mode = $this->set_mode;
@@ -2278,12 +2262,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$set_id = 0;
$set_mode = '';
}
$nonce = wp_create_nonce( 'um_upload_nonce-' . $this->timestamp );
$output .= '<div class="um-single-image-preview ' . $crop_class . '" data-crop="' . $crop_data . '" data-ratio="' . $ratio . '" data-min_width="' . $min_width . '" data-min_height="' . $min_height . '" data-coord=""><a href="#" class="cancel"><i class="um-icon-close"></i></a><img src="" alt="" /><div class="um-clear"></div></div><div class="um-clear"></div>';
$output .= '<div class="um-single-image-upload" data-nonce="' . $nonce . '" data-timestamp="' . esc_attr( $this->timestamp ) . '" data-icon="' . esc_attr( $icon ) . '" data-set_id="' . esc_attr( $set_id ) . '" data-set_mode="' . esc_attr( $set_mode ) . '" data-type="' . esc_attr( $type ) . '" data-key="' . esc_attr( $key ) . '" data-max_size="' . esc_attr( $max_size ) . '" data-max_size_error="' . esc_attr( $max_size_error ) . '" data-min_size_error="' . esc_attr( $min_size_error ) . '" data-extension_error="' . esc_attr( $extension_error ) . '" data-allowed_types="' . esc_attr( $allowed_types ) . '" data-upload_text="' . esc_attr( $upload_text ) . '" data-max_files_error="' . esc_attr( $max_files_error ) . '" data-upload_help_text="' . esc_attr( $upload_help_text ) . '">' . $button_text . '</div>';
$output .= '<div class="um-modal-footer">
<div class="um-modal-right">
<a href="#" class="um-modal-btn um-finish-upload image disabled" data-key="' . $key . '" data-change="' . __( 'Change photo', 'ultimate-member' ) . '" data-processing="' . __( 'Processing...', 'ultimate-member' ) . '"> ' . __( 'Apply', 'ultimate-member' ) . '</a>
@@ -2291,65 +2272,55 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
</div>
<div class="um-clear"></div>
</div>';
$output .= '</div>';
$output .= '</div>';
/* end */
if ($this->is_error( $key )) {
$output .= $this->field_error( $this->show_error( $key ) );
}
$output .= '</div>';
break;
break;
/* Single File Upload */
case 'file':
$output .= '<div class="um-field' . $classes . '"' . $conditional . ' data-key="' . $key . '">';
$output .= '<input type="hidden" name="' . $key . UM()->form()->form_suffix . '" id="' . $key . UM()->form()->form_suffix . '" value="' . $this->field_value( $key, $default, $data ) . '" />';
if (isset( $data['label'] )) {
$output .= $this->field_label( $label, $key, $data );
}
$modal_label = ( isset( $data['label'] ) ) ? $data['label'] : __( 'Upload Photo', 'ultimate-member' );
$output .= '<div class="um-field-area" style="text-align: center">';
if ($this->field_value( $key, $default, $data )) {
$extension = pathinfo( $this->field_value( $key, $default, $data ), PATHINFO_EXTENSION );
$output .= '<div class="um-single-file-preview show" data-key="' . $key . '">
<a href="#" class="cancel"><i class="um-icon-close"></i></a>
<div class="um-single-fileinfo">
<a href="' . um_user_uploads_uri() . $this->field_value( $key, $default, $data ) . '" target="_blank">
<span class="icon" style="background:' . UM()->files()->get_fonticon_bg_by_ext( $extension ) . '"><i class="' . UM()->files()->get_fonticon_by_ext( $extension ) . '"></i></span>
<span class="filename">' . $this->field_value( $key, $default, $data ) . '</span>
$file_field_value = $this->field_value( $key, $default, $data );
$file_type = wp_check_filetype( $file_field_value );
$file_info = um_user( $data['metakey']."_metadata" );
if( isset( $file_info['original_name'] ) && ! empty( $file_info['original_name'] ) ){
$file_field_value = $file_info['original_name'];
}
if( 'register' == $this->set_mode ){
$file_url = UM()->uploader()->get_core_temp_dir() . "/" . $this->field_value( $key, $default, $data );
}else{
$file_url = um_user_uploads_uri() . $this->field_value( $key, $default, $data );
}
$output .= "<div class=\"um-single-file-preview show\" data-key=\"{$key}\">
<a href=\"#\" class=\"cancel\"><i class=\"um-icon-close\"></i></a>
<div class=\"um-single-fileinfo\">
<a href=\"{$file_url}\" target=\"_blank\">
<span class=\"icon\" style=\"background:" . UM()->files()->get_fonticon_bg_by_ext( $file_type['ext'] ) . "\"><i class=\"" . UM()->files()->get_fonticon_by_ext( $file_type['ext'] ) . "\"></i></span>
<span class=\"filename\">{$file_field_value}</span>
</a>
</div>
</div><a href="#" data-modal="um_upload_single" data-modal-size="' . $modal_size . '" data-modal-copy="1" class="um-button um-btn-auto-width">' . __( 'Change file', 'ultimate-member' ) . '</a>';
</div><a href=\"#\" data-modal=\"um_upload_single\" data-modal-size=\"{$modal_size}\" data-modal-copy=\"1\" class=\"um-button um-btn-auto-width\">" . __( 'Change file', 'ultimate-member' ) . "</a>";
} else {
$output .= '<div class="um-single-file-preview" data-key="' . $key . '">
</div><a href="#" data-modal="um_upload_single" data-modal-size="' . $modal_size . '" data-modal-copy="1" class="um-button um-btn-auto-width">' . $button_text . '</a>';
$output .= '<div class="um-single-file-preview" data-key="{$key}">
</div><a href="#" data-modal="um_upload_single" data-modal-size="{$modal_size}" data-modal-copy="1" class="um-button um-btn-auto-width">{$button_text}</a>';
}
$output .= '</div>';
/* modal hidden */
$output .= '<div class="um-modal-hidden-content">';
$output .= '<div class="um-modal-header"> ' . $modal_label . '</div>';
$output .= '<div class="um-modal-body">';
if (isset( $this->set_id )) {
$set_id = $this->set_id;
$set_mode = $this->set_mode;
@@ -2357,7 +2328,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$set_id = 0;
$set_mode = '';
}
$output .= '<div class="um-single-file-preview">
<a href="#" class="cancel"><i class="um-icon-close"></i></a>
<div class="um-single-fileinfo">
@@ -2367,11 +2337,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
</a>
</div>
</div>';
$nonce = wp_create_nonce( 'um_upload_nonce-' . $this->timestamp );
$output .= '<div class="um-single-file-upload" data-timestamp="' . esc_attr( $this->timestamp ) . '" data-nonce="' . $nonce . '" data-icon="' . esc_attr( $icon ) . '" data-set_id="' . esc_attr( $set_id ) . '" data-set_mode="' . esc_attr( $set_mode ) . '" data-type="' . esc_attr( $type ) . '" data-key="' . esc_attr( $key ) . '" data-max_size="' . esc_attr( $max_size ) . '" data-max_size_error="' . esc_attr( $max_size_error ) . '" data-min_size_error="' . esc_attr( $min_size_error ) . '" data-extension_error="' . esc_attr( $extension_error ) . '" data-allowed_types="' . esc_attr( $allowed_types ) . '" data-upload_text="' . esc_attr( $upload_text ) . '" data-max_files_error="' . esc_attr( $max_files_error ) . '" data-upload_help_text="' . esc_attr( $upload_help_text ) . '">' . $button_text . '</div>';
$output .= '<div class="um-modal-footer">
<div class="um-modal-right">
<a href="#" class="um-modal-btn um-finish-upload file disabled" data-key="' . $key . '" data-change="' . __( 'Change file' ) . '" data-processing="' . __( 'Processing...', 'ultimate-member' ) . '"> ' . __( 'Save', 'ultimate-member' ) . '</a>
@@ -2379,20 +2346,15 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
</div>
<div class="um-clear"></div>
</div>';
$output .= '</div>';
$output .= '</div>';
/* end */
if ($this->is_error( $key )) {
$output .= $this->field_error( $this->show_error( $key ) );
}
$output .= '</div>';
break;
break;
/* Select dropdown */
case 'select':
+168 -152
View File
@@ -70,11 +70,15 @@ if ( ! class_exists( 'um\core\Files' ) ) {
* Remove file by AJAX
*/
function ajax_remove_file() {
UM()->check_frontend_ajax_nonce();
/**
* @var $src
*/
extract( $_REQUEST );
$this->delete_file( $src );
wp_send_json_success();
}
@@ -82,36 +86,112 @@ if ( ! class_exists( 'um\core\Files' ) ) {
* Resize image AJAX handler
*/
function ajax_resize_image() {
$output = 0;
UM()->check_frontend_ajax_nonce();
/**
* @var $key
* @var $src
* @var $coord
* @var $user_id
*/
extract( $_REQUEST );
if ( !isset($src) || !isset($coord) ) die( __('Invalid parameters') );
$coord_n = substr_count($coord, ",");
if ( $coord_n != 3 ) die( __('Invalid coordinates') );
$um_is_temp_image = um_is_temp_image( $src );
if ( !$um_is_temp_image ) die( __('Invalid Image file') );
$crop = explode(',', $coord );
$crop = array_map('intval', $crop);
$uri = UM()->files()->resize_image( $um_is_temp_image, $crop );
// If you're updating a user
if ( isset( $user_id ) && $user_id > 0 ) {
$uri = UM()->files()->new_user_upload( $user_id, $um_is_temp_image, $key );
if ( ! isset( $src ) || ! isset( $coord ) ) {
wp_send_json_error( esc_js( __( 'Invalid parameters', 'ultimate-member' ) ) );
}
$output = $uri;
$coord_n = substr_count( $coord, "," );
if ( $coord_n != 3 ) {
wp_send_json_error( esc_js( __( 'Invalid coordinates', 'ultimate-member' ) ) );
}
$image_path = um_is_file_owner( $src, $user_id, true );
if ( ! $image_path ) {
wp_send_json_error( esc_js( __( 'Invalid file ownership', 'ultimate-member' ) ) );
}
$output = UM()->uploader()->resize_image( $image_path, $src, $key, $user_id, $coord );
delete_option( "um_cache_userdata_{$user_id}" );
if(is_array($output)){ print_r($output); }else{ echo $output; } die;
wp_send_json_success( $output );
}
/**
* Image upload by AJAX
*/
function ajax_image_upload() {
$ret['error'] = null;
$ret = array();
$id = $_POST['key'];
$timestamp = $_POST['timestamp'];
$nonce = $_POST['_wpnonce'];
$user_id = $_POST['user_id'];
UM()->fields()->set_id = $_POST['set_id'];
UM()->fields()->set_mode = $_POST['set_mode'];
/**
* UM hook
*
* @type filter
* @title um_image_upload_nonce
* @description Change Image Upload nonce
* @input_vars
* [{"var":"$nonce","type":"bool","desc":"Nonce"}]
* @change_log
* ["Since: 2.0"]
* @usage
* <?php add_filter( 'um_image_upload_nonce', 'function_name', 10, 1 ); ?>
* @example
* <?php
* add_filter( 'um_image_upload_nonce', 'my_image_upload_nonce', 10, 1 );
* function my_image_upload_nonce( $nonce ) {
* // your code here
* return $nonce;
* }
* ?>
*/
$um_image_upload_nonce = apply_filters("um_image_upload_nonce", true );
if( $um_image_upload_nonce ){
if ( ! wp_verify_nonce( $nonce, "um_upload_nonce-{$timestamp}" ) && is_user_logged_in() ) {
// This nonce is not valid.
$ret['error'] = 'Invalid nonce';
die( json_encode( $ret ) );
}
}
if( isset( $_FILES[ $id ]['name'] ) ) {
if( ! is_array( $_FILES[ $id ]['name'] ) ) {
$uploaded = UM()->uploader()->upload_image( $_FILES[ $id ], $user_id, $id );
if ( isset( $uploaded['error'] ) ){
$ret['error'] = $uploaded['error'];
}else{
$ts = current_time( 'timestamp' );
$ret[ ] = $uploaded['handle_upload'];
}
}
} else {
$ret['error'] = __('A theme or plugin compatibility issue','ultimate-member');
}
echo json_encode($ret);
exit;
}
/**
* Allowed image types
*
@@ -331,6 +411,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
* @return string
*/
function path_only( $file ) {
return trailingslashit( dirname( $file ) );
}
@@ -457,6 +538,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
* @param $destination
*/
function upload_temp_file( $source, $destination ) {
move_uploaded_file( $source, $destination );
}
@@ -553,31 +635,62 @@ if ( ! class_exists( 'um\core\Files' ) ) {
*
* @return mixed
*/
function get_image_data( $file ) {
function get_image_data( $file ) {
$array['size'] = filesize( $file );
$finfo = finfo_open( FILEINFO_MIME_TYPE );
$mime_type = finfo_file( $finfo, $file );
$array['image'] = @getimagesize( $file );
if( function_exists('exif_imagetype') ){
$array_exif_image_mimes = array( IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG );
$allowed_types = apply_filters('um_image_upload_allowed_exif_mimes', $array_exif_image_mimes );
if ( $array['image'] > 0 ) {
if( ! in_array( @exif_imagetype( $file ), $allowed_types ) ) {
$array['invalid_image'] = true;
$array['invalid_image'] = false;
return $array;
}
list($width, $height, $type, $attr) = @getimagesize( $file );
}else{
$array_image_mimes = array('image/jpeg','image/png','image/gif');
$allowed_types = apply_filters('um_image_upload_allowed_mimes', $array_image_mimes );
$array['width'] = $width;
$array['height'] = $height;
$array['ratio'] = $width / $height;
if ( ! in_array( $mime_type, $allowed_types ) ) {
$array['extension'] = $this->get_extension_by_mime_type( $array['image']['mime'] );
$array['invalid_image'] = true;
} else {
$array['invalid_image'] = true;
return $array;
}
}
$array['size'] = filesize( $file );
$image_data = @getimagesize( $file );
$array['image'] = $image_data;
$array['invalid_image'] = false;
list($width, $height, $type, $attr) = $image_data;
$array['width'] = $width;
$array['height'] = $height;
$array['ratio'] = $width / $height;
$array['extension'] = $this->get_extension_by_mime_type( $mime_type );
return $array;
}
@@ -589,7 +702,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
*
* @return null|string|void
*/
function check_image_upload( $file, $field ) {
function check_image_upload( $file, $field, $stream_photo = false ) {
$error = null;
$fileinfo = $this->get_image_data( $file );
@@ -667,8 +780,6 @@ if ( ! class_exists( 'um\core\Files' ) ) {
if ( $fileinfo['invalid_image'] == true ) {
$error = sprintf(__('Your image is invalid or too large!','ultimate-member') );
} elseif ( isset( $data['allowed_types'] ) && !$this->in_array( $fileinfo['extension'], $data['allowed_types'] ) ) {
$error = ( isset( $data['extension_error'] ) && !empty( $data['extension_error'] ) ) ? $data['extension_error'] : 'not allowed';
} elseif ( isset($data['min_size']) && ( $fileinfo['size'] < $data['min_size'] ) ) {
$error = $data['min_size_error'];
} elseif ( isset($data['min_width']) && ( $fileinfo['width'] < $data['min_width'] ) ) {
@@ -696,9 +807,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
$fileinfo = $this->get_file_data( $file );
$data = UM()->fields()->get_field( $field );
if ( !$this->in_array( $extension, $data['allowed_types'] ) ) {
$error = ( isset( $data['extension_error'] ) && !empty( $data['extension_error'] ) ) ? $data['extension_error'] : 'not allowed';
} elseif ( isset($data['min_size']) && ( $fileinfo['size'] < $data['min_size'] ) ) {
if ( isset($data['min_size']) && ( $fileinfo['size'] < $data['min_size'] ) ) {
$error = $data['min_size_error'];
}
@@ -1146,81 +1255,6 @@ if ( ! class_exists( 'um\core\Files' ) ) {
}
/**
* Image upload by AJAX
*/
function ajax_image_upload() {
$ret['error'] = null;
$ret = array();
$id = $_POST['key'];
$timestamp = $_POST['timestamp'];
$nonce = $_POST['_wpnonce'];
UM()->fields()->set_id = $_POST['set_id'];
UM()->fields()->set_mode = $_POST['set_mode'];
/**
* UM hook
*
* @type filter
* @title um_image_upload_nonce
* @description Change Image Upload nonce
* @input_vars
* [{"var":"$nonce","type":"bool","desc":"Nonce"}]
* @change_log
* ["Since: 2.0"]
* @usage
* <?php add_filter( 'um_image_upload_nonce', 'function_name', 10, 1 ); ?>
* @example
* <?php
* add_filter( 'um_image_upload_nonce', 'my_image_upload_nonce', 10, 1 );
* function my_image_upload_nonce( $nonce ) {
* // your code here
* return $nonce;
* }
* ?>
*/
$um_image_upload_nonce = apply_filters("um_image_upload_nonce", true );
if( $um_image_upload_nonce ){
if ( ! wp_verify_nonce( $nonce, 'um_upload_nonce-'.$timestamp ) && is_user_logged_in() ) {
// This nonce is not valid.
$ret['error'] = 'Invalid nonce';
die( json_encode( $ret ) );
}
}
if(isset($_FILES[$id]['name'])) {
if(!is_array($_FILES[$id]['name'])) {
$temp = $_FILES[$id]["tmp_name"];
$file = $id."-".$_FILES[$id]["name"];
$file = sanitize_file_name($file);
$ext = strtolower( pathinfo($file, PATHINFO_EXTENSION) );
$error = UM()->files()->check_image_upload( $temp, $id );
if ( $error ){
$ret['error'] = $error;
} else {
$file = "stream_photo_".md5($file)."_".uniqid().".".$ext;
$ret[ ] = UM()->files()->new_image_upload_temp( $temp, $file, UM()->options()->get('image_compression') );
}
}
} else {
$ret['error'] = __('A theme or plugin compatibility issue','ultimate-member');
}
echo json_encode($ret);
exit;
}
/**
*
*/
@@ -1265,62 +1299,44 @@ if ( ! class_exists( 'um\core\Files' ) ) {
$um_file_upload_nonce = apply_filters("um_file_upload_nonce", true );
if ( $um_file_upload_nonce ) {
if ( ! wp_verify_nonce( $nonce, 'um_upload_nonce-'.$timestamp ) && is_user_logged_in()) {
if ( ! wp_verify_nonce( $nonce, 'um_upload_nonce-'.$timestamp ) && is_user_logged_in() ) {
// This nonce is not valid.
$ret['error'] = 'Invalid nonce';
die( json_encode( $ret ) );
}
}
if(isset($_FILES[$id]['name'])) {
if(!is_array($_FILES[$id]['name'])) {
if( isset( $_FILES[ $id ]['name'] ) ) {
$temp = $_FILES[$id]["tmp_name"];
/**
* UM hook
*
* @type filter
* @title um_upload_file_name
* @description Change File Upload nonce
* @input_vars
* [{"var":"$filename","type":"string","desc":"Filename"},
* {"var":"$id","type":"int","desc":"ID"},
* {"var":"$name","type":"string","desc":"Name"}]
* @change_log
* ["Since: 2.0"]
* @usage
* <?php add_filter( 'um_upload_file_name', 'function_name', 10, 3 ); ?>
* @example
* <?php
* add_filter( 'um_upload_file_name', 'my_upload_file_name', 10, 3 );
* function my_upload_file_name( $filename, $id, $name ) {
* // your code here
* return $filename;
* }
* ?>
*/
$file = apply_filters( 'um_upload_file_name', $id . "-" . $_FILES[$id]["name"], $id, $_FILES[$id]["name"] );
$file = sanitize_file_name($file);
$extension = strtolower( pathinfo($file, PATHINFO_EXTENSION) );
if( ! is_array( $_FILES[ $id ]['name'] ) ) {
$uploaded = UM()->uploader()->upload_file( $_FILES[ $id ], $user_id, $id );
if ( isset( $uploaded['error'] ) ){
$ret['error'] = $uploaded['error'];
}else{
$uploaded_file = $uploaded['handle_upload'];
$ret['url'] = $uploaded_file['file_info']['name'];
$ret['icon'] = UM()->files()->get_fonticon_by_ext( $uploaded_file['file_info']['ext'] );
$ret['icon_bg'] = UM()->files()->get_fonticon_bg_by_ext( $uploaded_file['file_info']['ext'] );
$ret['filename'] = $uploaded_file['file_info']['basename'];
$ret['original_name'] = $uploaded_file['file_info']['original_name'];
$error = UM()->files()->check_file_upload( $temp, $extension, $id );
if ( $error ){
$ret['error'] = $error;
} else {
$ret[] = UM()->files()->new_file_upload_temp( $temp, $file );
$ret['icon'] = UM()->files()->get_fonticon_by_ext( $extension );
$ret['icon_bg'] = UM()->files()->get_fonticon_bg_by_ext( $extension );
$ret['filename'] = $file;
}
}
} else {
$ret['error'] = __('A theme or plugin compatibility issue','ultimate-member');
$ret['error'] = __('A theme or plugin compatibility issue','ultimate-member');
}
echo json_encode($ret);
exit;
}
}
}
File diff suppressed because it is too large Load Diff
+37
View File
@@ -1885,5 +1885,42 @@ if ( ! class_exists( 'um\core\User' ) ) {
return $hash_email_address;
}
/**
* Move temporary files
*
* @param array $user_id
* @param array $files
*/
function move_temporary_files( $user_id, $files ){
foreach ( $files as $key => $filename ) {
if( empty( $filename ) ) continue;
$user_basedir = UM()->uploader()->get_upload_user_base_dir( $user_id, true );
$temp_file_path = UM()->uploader()->get_core_temp_dir() . "/" . $filename;
if( file_exists( $temp_file_path ) ){
$extra_hash = hash( 'crc32b', current_time('timestamp') );
if ( strpos( $filename , 'stream_photo_' ) !== false ) {
$new_filename = str_replace("stream_photo_","stream_photo_{$extra_hash}_", $filename );
}else{
$new_filename = str_replace("file_","file_{$extra_hash}_", $filename );
}
$file = $user_basedir. "/" . $new_filename;
if( rename( $temp_file_path, $file ) ){
$file_info = get_transient("um_{$filename}");
update_user_meta( $user_id, $key, $new_filename );
update_user_meta( $user_id, "{$key}_metadata", $file_info );
delete_transient("um_{$filename}");
}
}
}
}
}
}
+6 -2
View File
@@ -234,7 +234,7 @@ function um_user_edit_profile( $args ) {
if ( isset( $args['submitted'][ $key ] ) ) {
if ( isset( $fields[ $key ]['type'] ) && in_array( $fields[ $key ]['type'], array( 'image', 'file' ) ) &&
( um_is_temp_upload( $args['submitted'][ $key ] ) || $args['submitted'][ $key ] == 'empty_file' ) ) {
( um_is_temp_file( $args['submitted'][ $key ] ) || $args['submitted'][ $key ] == 'empty_file' ) ) {
$files[ $key ] = $args['submitted'][ $key ];
@@ -391,7 +391,11 @@ function um_user_edit_profile( $args ) {
* ?>
*/
do_action( 'um_before_user_upload', um_user( 'ID' ), $files );
UM()->user()->update_files( $files );
//UM()->user()->update_files( $files );
UM()->user()->move_temporary_files( um_user( 'ID' ), $files );
/**
* UM hook
*
+6 -2
View File
@@ -637,7 +637,7 @@ function um_registration_save_files( $user_id, $args ) {
if ( isset( $args['submitted'][$key] ) ) {
if ( isset( $fields[$key]['type'] ) && in_array( $fields[$key]['type'], array( 'image', 'file' ) ) &&
( um_is_temp_upload( $args['submitted'][$key] ) || $args['submitted'][$key] == 'empty_file' )
( um_is_temp_file( $args['submitted'][$key] ) || $args['submitted'][$key] == 'empty_file' )
) {
$files[$key] = $args['submitted'][$key];
@@ -692,7 +692,11 @@ function um_registration_save_files( $user_id, $args ) {
* ?>
*/
do_action( 'um_before_user_upload', $user_id, $files );
UM()->user()->update_files( $files );
//UM()->user()->update_files( $files );
UM()->user()->move_temporary_files( $user_id, $files );
/**
* UM hook
*
+11 -7
View File
@@ -224,21 +224,25 @@ add_filter( 'um_profile_field_filter_hook__date', 'um_profile_field_filter_hook_
*/
function um_profile_field_filter_hook__file( $value, $data ) {
$uri = um_user_uploads_uri() . $value;
$extension = pathinfo( $uri, PATHINFO_EXTENSION);
if ( !file_exists( um_user_uploads_dir() . $value ) ) {
$value = __('This file has been removed.');
$file_type = wp_check_filetype( $value );
if ( ! file_exists( um_user_uploads_dir() . $value ) ) {
$value = __('This file has been removed.','ultimate-member');
} else {
$file_info = um_user( $data['metakey']."_metadata" );
if( isset( $file_info['original_name'] ) && ! empty( $file_info['original_name'] ) ){
$value = $file_info['original_name'];
}
$value = '<div class="um-single-file-preview show">
<div class="um-single-fileinfo">
<a href="' . $uri . '" target="_blank">
<span class="icon" style="background:'. UM()->files()->get_fonticon_bg_by_ext( $extension ) . '"><i class="'. UM()->files()->get_fonticon_by_ext( $extension ) .'"></i></span>
<span class="filename">' . $value . '</span>
<span class="icon" style="background:'. UM()->files()->get_fonticon_bg_by_ext( $file_type['ext'] ) . '"><i class="'. UM()->files()->get_fonticon_by_ext( $file_type['ext'] ) .'"></i></span>
<span class="filename">' . esc_attr( $value ) . '</span>
</a>
</div>
</div>';
}
return $value;
}
add_filter( 'um_profile_field_filter_hook__file', 'um_profile_field_filter_hook__file', 99, 2 );
+75 -16
View File
@@ -774,6 +774,63 @@ function um_is_temp_image( $url ) {
}
/**
* Check user's file ownership
* @param string $url
* @param integer $user_id
* @return bool
*/
function um_is_file_owner( $url, $user_id = null, $image_path = false ){
if( strpos( $url, "/uploads/ultimatemember/{$user_id}/" ) !== false && is_user_logged_in() ){
$user_basedir = UM()->uploader()->get_upload_user_base_dir( $user_id );
$filename = wp_basename( parse_url( $url, PHP_URL_PATH ) );
$file = $user_basedir . '/' . $filename;
if( file_exists( $file ) ){
if( $image_path ){
return $file;
}
return true;
}
}else{
$user_basedir = UM()->uploader()->get_upload_user_base_dir( 'temp' );
$filename = wp_basename( parse_url( $url, PHP_URL_PATH ) );
$file = $user_basedir . '/' . $filename;
if( file_exists( $file ) ){
if( $image_path ){
return $file;
}
return true;
}
}
return false;
}
/**
* Check if file is temporary
* @param string $filename
* @return bool
*/
function um_is_temp_file( $filename ){
$user_basedir = UM()->uploader()->get_upload_user_base_dir( 'temp' );
$file = $user_basedir . '/' . $filename;
if( file_exists( $file ) ){
return true;
}
return false;
}
/**
* Get core page url
*
@@ -1645,8 +1702,8 @@ function um_user_uploads_dir() {
*/
function um_closest_num( $array, $number ) {
sort( $array );
foreach ($array as $a) {
if ($a >= $number) return $a;
foreach ( $array as $a ) {
if ( $a >= $number ) return $a;
}
return end( $array );
@@ -1664,17 +1721,20 @@ function um_closest_num( $array, $number ) {
function um_get_cover_uri( $image, $attrs ) {
$uri = false;
$ext = '.' . pathinfo( $image, PATHINFO_EXTENSION );
if (file_exists( UM()->files()->upload_basedir . um_user( 'ID' ) . '/cover_photo' . $ext )) {
$uri = um_user_uploads_uri() . 'cover_photo' . $ext . '?' . current_time( 'timestamp' );
if (file_exists( UM()->files()->upload_basedir . um_user( 'ID' ) . "/cover_photo{$ext}" ) ) {
$uri = um_user_uploads_uri() . "/cover_photo{$ext}?" . current_time( 'timestamp' );
}
if (file_exists( UM()->files()->upload_basedir . um_user( 'ID' ) . '/cover_photo-' . $attrs . $ext )) {
$uri = um_user_uploads_uri() . 'cover_photo-' . $attrs . $ext . '?' . current_time( 'timestamp' );
if ( file_exists( UM()->files()->upload_basedir . um_user( 'ID' ) . "/cover_photo-{$attrs}x{$attrs}{$ext}" ) ) {
$uri = um_user_uploads_uri() . "/cover_photo-{$attrs}x{$attrs}{$ext}?". current_time( 'timestamp' );
}else if ( file_exists( UM()->files()->upload_basedir . um_user( 'ID' ) . "/cover_photo-{$attrs}{$ext}" ) ) {
$uri = um_user_uploads_uri() . "/cover_photo-{$attrs}{$ext}?" . current_time( 'timestamp' );
}
return $uri;
}
/**
* get avatar URL instead of image
*
@@ -1701,7 +1761,6 @@ function um_get_avatar_uri( $image, $attrs ) {
$uri = false;
$find = false;
$ext = '.' . pathinfo( $image, PATHINFO_EXTENSION );
/**
* UM hook
*
@@ -1724,26 +1783,26 @@ function um_get_avatar_uri( $image, $attrs ) {
* ?>
*/
$cache_time = apply_filters( 'um_filter_avatar_cache_time', current_time( 'timestamp' ), um_user( 'ID' ) );
if( $attrs == 'original' && file_exists( um_user_uploads_dir() . "profile_photo{$ext}" ) ) {
$uri = um_user_uploads_uri() . "profile_photo{$ext}";
} else if (file_exists( um_user_uploads_dir() . "profile_photo-{$attrs}{$ext}" )) {
} else if ( file_exists( um_user_uploads_dir() . "profile_photo-{$attrs}x{$attrs}{$ext}" ) ) {
$uri = um_user_uploads_uri() . "profile_photo-{$attrs}x{$attrs}{$ext}";
} else if ( file_exists( um_user_uploads_dir() . "profile_photo-{$attrs}{$ext}" ) ) {
$uri = um_user_uploads_uri() . "profile_photo-{$attrs}{$ext}";
} else {
$sizes = UM()->options()->get( 'photo_thumb_sizes' );
if (is_array( $sizes )) $find = um_closest_num( $sizes, $attrs );
if (file_exists( um_user_uploads_dir() . "profile_photo-{$find}{$ext}" )) {
if ( is_array( $sizes ) ) $find = um_closest_num( $sizes, $attrs );
if ( file_exists( um_user_uploads_dir() . "profile_photo-{$find}x{$find}{$ext}" ) ) {
$uri = um_user_uploads_uri() . "profile_photo-{$find}x{$find}{$ext}";
}else if ( file_exists( um_user_uploads_dir() . "profile_photo-{$find}{$ext}" ) ) {
$uri = um_user_uploads_uri() . "profile_photo-{$find}{$ext}";
} else if (file_exists( um_user_uploads_dir() . "profile_photo{$ext}" )) {
} else if ( file_exists( um_user_uploads_dir() . "profile_photo{$ext}" ) ) {
$uri = um_user_uploads_uri() . "profile_photo{$ext}";
}
}
if ( !empty( $cache_time ) ) {
$uri .= "?{$cache_time}";
}
return $uri;
}