Fix file clean up with image/file fields on profile update

This commit is contained in:
Champ Camba
2017-06-14 16:03:11 +08:00
parent d8072d5980
commit e29d31d13f
3 changed files with 32 additions and 4 deletions
+2 -2
View File
@@ -144,7 +144,7 @@ jQuery(document).ready(function() {
parent.find('.um-single-image-preview img').attr('src','');
parent.find('.um-single-image-preview').hide();
parent.find('.um-btn-auto-width').html('Upload');
parent.find('input[type=hidden]').val('');
parent.find('input[type=hidden]').val('empty_file');
jQuery.ajax({
url: um_scripts.ajaxurl,
@@ -164,7 +164,7 @@ jQuery(document).ready(function() {
var src = jQuery(this).parents('.um-field').find('.um-single-fileinfo a').attr('href');
parent.find('.um-single-file-preview').hide();
parent.find('.um-btn-auto-width').html('Upload');
parent.find('input[type=hidden]').val('');
parent.find('input[type=hidden]').val('empty_file');
jQuery.ajax({
url: um_scripts.ajaxurl,
+1 -1
View File
File diff suppressed because one or more lines are too long
+29 -1
View File
@@ -77,7 +77,8 @@
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 ] ) ) {
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' ) ) {
$files[ $key ] = $args['submitted'][ $key ];
@@ -116,6 +117,7 @@
$files = apply_filters('um_user_pre_updating_files_array', $files);
if ( is_array( $files ) ) {
do_action('um_before_user_upload', um_user('ID'), $files );
$ultimatemember->user->update_files( $files );
do_action('um_after_user_upload', um_user('ID'), $files );
}
@@ -705,3 +707,29 @@
}
}
/**
* Clean up file for new uploaded files
* @param integer $user_id
* @param array $arr_files
*/
add_action("um_before_user_upload","um_before_user_upload", 10 ,2 );
function um_before_user_upload( $user_id, $arr_files ){
global $ultimatemember;
um_fetch_user( $user_id );
foreach ($arr_files as $key => $filename ) {
if( um_user( $key ) ){
if( basename( $filename ) != basename( um_user( $key ) ) || in_array( $old_filename , array( basename( um_user( $key ) ), basename( $filename ) ) ) || $filename == 'empty_file' ){
$old_filename = um_user( $key );
$path = $ultimatemember->files->upload_basedir;
delete_user_meta( $user_id, $old_filename );
if ( file_exists( $path . $user_id . '/' . $old_filename ) ) {
unlink( $path . $user_id . '/' . $old_filename );
}
}
}
}
}