• Resolved ohliza

    (@ohliza)


    Since I installed the latest “Enable Profile Photo in Register form” update from Github, profile photos uploaded upon registration do not show in the member directory. Photos uploaded BEFORE the update still show.

    I was able to get the profile photos uploaded after the update onto the memer directory edit form, but it doesn’t appear like the previous ones, in the “card” above. Only on the form itself.

    I think the issue is that prior to the update, the meta for the Profile pic field was profile-photo and now it’s register-profile-photo – two different fields, and i can put register-profile-photo on the registration form but it’s the profile-photo that is being used for the card.

    I’d like the uploaded profile photo to appear on the card, so perhaps these two fields need to be merged? Then the new one, register-profile-photo, be assigned to the “card” view?

    Thanks.

    The page I need help with: [log in to see the link]

Viewing 11 replies - 1 through 11 (of 11 total)
  • missveronica

    (@missveronicatv)

    @ohliza

    How many user profile photos have this issue?

    Do you have .jpg files in the user ID directories for these users at
    .../wp-content/uploads/ultimatemember/ID/
    with names like profile_4a70362b_photo.jpg

    Do you have user profile photo names in the usermeta table for the user ID’s and the meta_key = profile_photo and are the names equal to the .jpg file names?

    Plugin Support Aswin Giri

    (@aswingiri)

    Hello @ohliza

    Are you using this code snippet for enabling profile photo on the registration form?

    missveronica

    (@missveronicatv)

    @aswingiri

    This thread is a follow up on this thread since yesterday:

    https://wordpress.org/support/topic/profile-photo-in-registration/

    Thread Starter ohliza

    (@ohliza)

    Per the previous thread, I am using the latest version of the Profile addon (which is indeed the code you linked, I just added it as a zip).

    I also am using:

    add_filter( 'um_account_tab_general_fields', 'um_011921_add_profile_photo_uploader', 10, 2 );
    function um_011921_add_profile_photo_uploader( $args, $shortcode_args ) {
    
        $args = 'register_profile_photo,' . $args;
        return $args;
    }

    …in my child theme (child of Neve) functions.php

    Thread Starter ohliza

    (@ohliza)

    As to the profile photos in the directory specified above, the ones uploaded since I updated the add-on, are not called profile_photo with the thumb and 500×500 versions, but have different names or in two cases, have a “temp” extension in the name.

    From 4/19 and earlier, they are profile-photo.jpg and from 4/19 later in the day on (the day I did the update), they are named more like /wp-content/uploads/ultimatemember/406/profile_7866c1ca_photo_123abc_temp.jpg

    One is named /404/profile_abc123_photo.jpeg and has no thumbnail or 500×500 in the folder like the earlier ones do.

    In the areas where the profile photo normally shows (on card, at top of member detail), there is only default_avatar.jpg. I added the profile photo manually and it appears below, for the new folks.

    missveronica

    (@missveronicatv)

    @ohliza

    These .jpg files left in the user directories are because the function um_registration_set_profile_photo didn’t execute in your updated UM Basic Extension Plugin for “Enable Profile Photo in Register form” after 4/19.

    Missing for these photo files are the resizing and rename to profile_photo.jpg and delete of temporary files.

    • This reply was modified 3 weeks, 4 days ago by missveronica.
    missveronica

    (@missveronicatv)

    @ohliza

    Per the previous thread, I am using the latest version of the Profile addon (which is indeed the code you linked, I just added it as a zip).

    Have you tried the updated version of the plugin from this post which will execute the remaining photo sizings:

    https://wordpress.org/support/topic/profile-photo-in-registration/page/2/#post-15576614

    When I try your function there is an upload of the Profile photo from the Account page but old photo is replacing the uploaded photo.

    I will take a look at this issue.

    • This reply was modified 3 weeks, 4 days ago by missveronica.
    missveronica

    (@missveronicatv)

    @ohliza

    You can try this updated plugin.

    Install by replacing the current script at:
    .../wp-content/plugins/um-profile-photo/um-profile-photo.php

    You must enter the password before uploading the profile photo from the UM Account Page.

    <?php
    /*
    Plugin Name: Ultimate Member - Enable Profile Photo in Register form
    Plugin URI: http://ultimatemember.com/
    Description: Enable users to upload their profile photo in Register form
    Version: 1.3.0
    Author: Ultimate Member Ltd.
    Author URI: https://ultimatemember.com
    */
    
    if ( ! defined( 'ABSPATH' ) ) exit;
    
    /**
     * Add new predefined field "Profile Photo" in UM Form Builder.
     *
     * @param array $arr field array settings.
     */
    function um_predefined_fields_hook_profile_photo( $arr ) {
    
    	$arr['register_profile_photo'] = array(
    		'title' => __( 'Profile Photo', 'ultimate-member' ),
    		'metakey' => 'register_profile_photo',
    		'type' => 'image',
    		'label' => __('Change your profile photo','ultimate-member' ),
    		'upload_text' => __( 'Upload your photo here', 'ultimate-member' ),
    		'icon' => 'um-faicon-camera',
    		'crop' => 1,
            'editable' => 1,
    		'max_size' => ( UM()->options()->get('profile_photo_max_size') ) ? UM()->options()->get('profile_photo_max_size') : 999999999,
    		'min_width' => str_replace('px','',UM()->options()->get('profile_photosize')),
    		'min_height' => str_replace('px','',UM()->options()->get('profile_photosize')),
    	);
    
    	return $arr;
    
    }
    add_filter( 'um_predefined_fields_hook', 'um_predefined_fields_hook_profile_photo', 99999, 1 );
    
    /**
     *  Multiply Profile Photo with different sizes
     *
     * @param integer $user_id the user ID.
     */
    function um_registration_set_profile_photo( $user_id, $args ) {
    	
    	if( isset( $args['form_id'] )) $req = 'register_profile_photo-' . $args['form_id'];
    	else $req = 'register_profile_photo';
    	if( ! isset( $_REQUEST[$req] ) ) return;
    	//if ( strpos( $_REQUEST['register_profile_photo'], '_temp.') <= -1 ) {
    		//return;
    	//}
    	
    	if( is_user_logged_in() ) {
    		UM()->files()->delete_core_user_photo( $user_id, 'profile_photo' );
    	}
    
    	$user_basedir = UM()->uploader()->get_upload_user_base_dir( $user_id, true );
    
    	$temp_dir = UM()->uploader()->get_core_temp_dir() . DIRECTORY_SEPARATOR;
    
    	$temp_profile_photo = array_slice( scandir( $temp_dir ), 2);
    	
    	$temp_profile_id =  isset( $_COOKIE['um-register-profile-photo'] ) ? $_COOKIE['um-register-profile-photo'] : null;
    
    	if( empty( $temp_profile_photo ) ) return;
    
    	foreach( $temp_profile_photo as $i => $p ){
    		if ( strpos($p, "_photo_{$temp_profile_id}_temp") !== false ) {
    			$profile_p = $p;
    		}
    	}
    
    	if( empty( $profile_p ) ) return;
    
    	$temp_image_path = $temp_dir . DIRECTORY_SEPARATOR . $profile_p;
    	$new_image_path = $user_basedir . DIRECTORY_SEPARATOR . $profile_p;
    	
        $image = wp_get_image_editor( $temp_image_path );
    
    	$file_info = wp_check_filetype_and_ext( $temp_image_path, $profile_p );
     
    	$ext = $file_info['ext'];
    	
    	$new_image_name = str_replace( $profile_p,  "profile_photo.{$ext}", $new_image_path );
    	
    	$sizes = UM()->options()->get( 'photo_thumb_sizes' );
    
    	$quality = UM()->options()->get( 'image_compression' );
    	
    	
    	if ( ! is_wp_error( $image ) ) {
    			
    		$image->save( $new_image_name );
    
    		$image->set_quality( $quality );
    
    		$sizes_array = array();
    
    		foreach( $sizes as $size ) {
    			$sizes_array[ ] = array ( 'width' => $size );
    		}
    
    		$image->multi_resize( $sizes_array );
    
    		delete_user_meta( $user_id, 'synced_profile_photo' );
    		update_user_meta( $user_id, 'profile_photo', "profile_photo.{$ext}" ); 
    		update_user_meta( $user_id, 'register_profile_photo', "profile_photo.{$ext}" ); 
    		@unlink( $temp_image_path );
    
    	} 
    
    }
    add_action( 'um_after_user_account_updated', 'um_registration_set_profile_photo', 1, 2 );
    add_action( 'um_registration_set_extra_data', 'um_registration_set_profile_photo', 1, 2 );
    
    /**
     * Set Temporary user id
     */
    function um_register_profile_photo_set_temp_user_id() {
    
    	$temp_profile_id = isset( $_COOKIE['um-register-profile-photo'] ) ? $_COOKIE['um-register-profile-photo'] : null;
    	if ( ! $temp_profile_id ) {
    		setcookie( 'um-register-profile-photo', md5( time() ), time() + 3600, COOKIEPATH, COOKIE_DOMAIN );
    	}
    
    }
    add_action( 'template_redirect', 'um_register_profile_photo_set_temp_user_id' );
    
    /**
     * Set handler callback for filename
     */
    function um_register_profile_photo_upload_handler( $override_handler ) {
    	
    	if ( 'stream_photo' == UM()->uploader()->upload_image_type && 'register_profile_photo' == UM()->uploader()->field_key ) {
    		
    		$override_handler['unique_filename_callback'] = 'um_register_profile_photo_name';
    	}
    
    	return $override_handler;
    }
    add_filter( 'um_image_upload_handler_overrides__register_profile_photo', 'um_register_profile_photo_upload_handler', 99999 );
    
    /**
     * Change filename
     */
    function um_register_profile_photo_name( $dir, $filename, $ext ) {
    	$temp_profile_id =  isset( $_COOKIE['um-register-profile-photo'] ) ? $_COOKIE['um-register-profile-photo'] : null;
    	
    	return "profile_photo_{$temp_profile_id}_temp{$ext}";
    
    }
    
    /**
     * Support profile photo uploader in Account form
     */
    function um_register_display_profile_photo_in_account( $field_atts, $key, $data ) {
    
    	if ( 'register_profile_photo' == $key && um_is_core_page( 'account' ) ) {
    
    		$profile_photo = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . um_profile( 'profile_photo' ) . '?ts=' . current_time( 'timestamp' );
    
    		$field_atts['data-profile_photo'] = array( $profile_photo );
    	}
    
    	return $field_atts;
    }
    add_filter( 'um_field_extra_atts', 'um_register_display_profile_photo_in_account', 10, 3 );
    
    /**
     * Clear profile photo cache
     */
    function um_register_display_profile_photo_script() {
    
    	if( ! um_is_core_page( 'account' ) ) return; 
    
    	?>
    	<script type="text/javascript">
    	    jQuery(document).on("ready", function(){
    		  setTimeout(() => {
    			var register_profile_photo = jQuery("div[data-key='register_profile_photo']");
    			
    			register_profile_photo.find(".um-field-area").find(".um-single-image-preview").find("img").attr("src", register_profile_photo.data("profile_photo"));
    			}, 1000);
    
    			var account_small_avatar = jQuery(".um-account-meta-img-b").find("a").find("img");
    			account_small_avatar.attr("src", account_small_avatar.attr("src") + "?ts=" + Math.floor(Date.now() / 1000) );
    		
    			jQuery(document).ajaxSuccess(function(event, xhr, settings) {
    				if( typeof settings.data.indexOf !== "undefined" ){
    					if (settings.data.indexOf("action=um_resize_image") > -1) {
    						jQuery(".um-account .um-form form").submit();
    					}
    				}
    			});
    		});
    	</script>
    	<?php
    }
    add_action( 'wp_footer', 'um_register_display_profile_photo_script' );
    
    /**
     * Delete profile photo viam the account form
     */
    function um_register_delete_profile_photo_from_account() {
    
    	if( isset( $_REQUEST['mode'] ) && "account" == $_REQUEST['mode'] ) {
    		UM()->files()->delete_core_user_photo( get_current_user_id(), 'profile_photo' );
    	}
    	wp_send_json_success();
    
    }
    add_action( 'wp_ajax_um_remove_file', 'um_register_delete_profile_photo_from_account', 1 );
    • This reply was modified 3 weeks, 3 days ago by missveronica.
    Plugin Support Ultimate Member Support

    (@ultimatemembersupport)

    Hi @ohliza

    Just checking if you’re still having issues? Please feel free to re-open this thread if there’s any question that may come up and we’ll be happy to help.

    Regards,

    Thread Starter ohliza

    (@ohliza)

    That fixed it – thank you!

    Plugin Support Ultimate Member Support

    (@ultimatemembersupport)

    Thanks for letting us know.

Viewing 11 replies - 1 through 11 (of 11 total)
  • You must be logged in to reply to this topic.