User Profile Picture - Version 1.5.5

Version Description

  • Released 2018-08-19
  • Enhancement: Loading image now shows between states for better UX
  • Enhancement: Plugin attempts to override the default WordPress avatar in the User Profile page
  • Enhancement: Plugin attempts to override the admin bar avatars if the users match
  • Enhancement: Added Click to Edit bar to make it more obvious what to do with the profile picture
  • Refactor: Plugin now uses wp_send_json instead of json_encode for more compatibility
Download this release

Release Info

Developer ronalfy
Plugin Icon 128x128 User Profile Picture
Version 1.5.5
Comparing to
See all releases

Code changes from version 1.5.1 to 1.5.5

Files changed (4) hide show
  1. img/loading.gif +0 -0
  2. js/mpp.js +18 -0
  3. metronet-profile-picture.php +116 -31
  4. readme.txt +17 -2
img/loading.gif ADDED
Binary file
js/mpp.js CHANGED
@@ -2,18 +2,25 @@ jQuery( document ).ready( function( $ ) {
2
  //Refresh the profile image thumbnail
3
  function mt_ajax_thumbnail_refresh() {
4
  var post_id = jQuery( "#metronet_post_id" ).val();
 
5
  $.post( metronet_profile_image.ajax_url, {
6
  action: 'metronet_get_thumbnail',
7
  post_id: post_id,
8
  },
9
  function( response ) {
10
  jQuery( "#metronet-profile-image" ).html( mt_display_block( response.thumb_html ) );
 
 
 
 
 
11
  },
12
  'json'
13
  );
14
  };
15
  //Remove the profile image
16
  function mt_remove_profile_image() {
 
17
  $.post( metronet_profile_image.ajax_url, {
18
  action: 'metronet_remove_thumbnail',
19
  post_id: metronet_profile_image.user_post_id,
@@ -22,6 +29,11 @@ jQuery( document ).ready( function( $ ) {
22
  },
23
  function( response ) {
24
  jQuery( "#metronet-profile-image" ).html( mt_display_block( response.thumb_html ) );
 
 
 
 
 
25
  },
26
  'json'
27
  );
@@ -84,6 +96,7 @@ jQuery( document ).ready( function( $ ) {
84
 
85
  //For when the featured thumbnail is set
86
  uploader.mt_featured_set = function( id ) {
 
87
  $.post( metronet_profile_image.ajax_url, {
88
  action: 'metronet_add_thumbnail',
89
  post_id: metronet_profile_image.user_post_id,
@@ -93,6 +106,11 @@ jQuery( document ).ready( function( $ ) {
93
  },
94
  function( response ) {
95
  jQuery( "#metronet-profile-image" ).html( mt_display_block( response.thumb_html ) );
 
 
 
 
 
96
  },
97
  'json'
98
  );
2
  //Refresh the profile image thumbnail
3
  function mt_ajax_thumbnail_refresh() {
4
  var post_id = jQuery( "#metronet_post_id" ).val();
5
+ jQuery( '#metronet-profile-image' ).html( '<img class="mpp-loading" alt="Loading" width="150" height="150" src="' + metronet_profile_image.loading_gif + '" />' );
6
  $.post( metronet_profile_image.ajax_url, {
7
  action: 'metronet_get_thumbnail',
8
  post_id: post_id,
9
  },
10
  function( response ) {
11
  jQuery( "#metronet-profile-image" ).html( mt_display_block( response.thumb_html ) );
12
+ jQuery( '.user-profile-picture img ').replaceWith( response.avatar );
13
+ if ( response.user_id === response.logged_in_user_id ) {
14
+ jQuery( '#wp-admin-bar-my-account img.avatar-26' ).replaceWith( response.avatar_admin_small );
15
+ jQuery( '#wp-admin-bar-my-account img.avatar-64' ).replaceWith( response.avatar_admin_medium );
16
+ }
17
  },
18
  'json'
19
  );
20
  };
21
  //Remove the profile image
22
  function mt_remove_profile_image() {
23
+ jQuery( '#metronet-profile-image' ).html( '<img class="mpp-loading" alt="Loading" width="150" height="150" src="' + metronet_profile_image.loading_gif + '" />' );
24
  $.post( metronet_profile_image.ajax_url, {
25
  action: 'metronet_remove_thumbnail',
26
  post_id: metronet_profile_image.user_post_id,
29
  },
30
  function( response ) {
31
  jQuery( "#metronet-profile-image" ).html( mt_display_block( response.thumb_html ) );
32
+ jQuery( '.user-profile-picture img ').replaceWith( response.avatar );
33
+ if ( response.user_id === response.logged_in_user_id ) {
34
+ jQuery( '#wp-admin-bar-my-account img.avatar-26' ).replaceWith( response.avatar_admin_small );
35
+ jQuery( '#wp-admin-bar-my-account img.avatar-64' ).replaceWith( response.avatar_admin_medium );
36
+ }
37
  },
38
  'json'
39
  );
96
 
97
  //For when the featured thumbnail is set
98
  uploader.mt_featured_set = function( id ) {
99
+ jQuery( '#metronet-profile-image' ).html( '<img class="mpp-loading" alt="Loading" width="150" height="150" src="' + metronet_profile_image.loading_gif + '" />' );
100
  $.post( metronet_profile_image.ajax_url, {
101
  action: 'metronet_add_thumbnail',
102
  post_id: metronet_profile_image.user_post_id,
106
  },
107
  function( response ) {
108
  jQuery( "#metronet-profile-image" ).html( mt_display_block( response.thumb_html ) );
109
+ jQuery( '.user-profile-picture img ').replaceWith( response.avatar );
110
+ if ( response.user_id === response.logged_in_user_id ) {
111
+ jQuery( '#wp-admin-bar-my-account img.avatar-26' ).replaceWith( response.avatar_admin_small );
112
+ jQuery( '#wp-admin-bar-my-account img.avatar-64' ).replaceWith( response.avatar_admin_medium );
113
+ }
114
  },
115
  'json'
116
  );
metronet-profile-picture.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: User Profile Picture
4
  Plugin URI: http://wordpress.org/extend/plugins/metronet-profile-picture/
5
  Description: Use the native WP uploader on your user profile page.
6
  Author: Ronald Huereca
7
- Version: 1.5.1
8
  Requires at least: 3.5
9
  Author URI: https://www.mediaron.com
10
  Contributors: ronalfy
@@ -92,15 +92,29 @@ class Metronet_Profile_Picture {
92
  $thumb_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'thumbnail' , false, '' );
93
  $post_thumbnail = sprintf( '<img src="%s" width="150" height="150" title="%s" />', esc_url( $thumb_src[0] ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
94
  $crop_html = $this->get_post_thumbnail_editor_link( $post_id );
95
- $thumb_html = sprintf( '<a href="#" class="mpp_add_media">%s</a>', $post_thumbnail );
96
  $thumb_html .= sprintf( '<a id="metronet-remove" class="dashicons dashicons-trash" href="#" title="%s">%s</a>', esc_attr__( 'Remove profile image', 'metronet-profile-picture' ), esc_html__( "Remove profile image", "metronet-profile-picture" ) );
97
- die( json_encode( array(
98
- 'thumb_html' => $thumb_html,
99
- 'crop_html' => $crop_html,
100
- 'has_thumb' => true
101
- ) ) );
 
 
 
 
 
102
  }
103
- die( json_encode( array( 'thumb_html' => '', 'crop_html' => '', 'has_thumb' => false ) ) );
 
 
 
 
 
 
 
 
 
104
  } //end ajax_add_thumbnail
105
 
106
  /**
@@ -112,24 +126,45 @@ class Metronet_Profile_Picture {
112
  public function ajax_get_thumbnail() {
113
  if ( !current_user_can( 'upload_files' ) ) die( '' );
114
  $post_id = isset( $_POST[ 'post_id' ] ) ? absint( $_POST[ 'post_id' ] ) : 0;
 
 
 
 
 
 
115
 
116
  if ( has_post_thumbnail( $post_id ) ) {
117
  $thumb_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'thumbnail' , false, '' );
118
  $post_thumbnail = sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', esc_url( $thumb_src[0] ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
119
  $crop_html = $this->get_post_thumbnail_editor_link( $post_id );
120
- $thumb_html = sprintf( '<a style="display:block" href="#" class="mpp_add_media">%s</a>', $post_thumbnail );
121
  $thumb_html .= sprintf( '<a id="metronet-remove" class="dashicons dashicons-trash" href="#" title="%s">%s</a>', esc_attr__( 'Remove profile image', 'metronet-profile-picture' ), esc_html__( "Remove profile image", "metronet-profile-picture" ) );
122
- die( json_encode( array(
123
- 'thumb_html' => $thumb_html,
124
- 'crop_html' => $crop_html,
125
- 'has_thumb' => true
126
- ) ) );
 
 
 
 
 
127
  } else {
128
  $thumb_html = '<a style="display:block" href="#" class="mpp_add_media default-image">';
129
  $thumb_html.= sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', $this->get_plugin_url( 'img/mystery.png' ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
 
130
  $thumb_html .= '</a>';
131
  }
132
- die( json_encode( array( 'thumb_html' => $thumb_html, 'crop_html' => '', 'has_thumb' => false ) ) );
 
 
 
 
 
 
 
 
 
133
  } //end ajax_get_thumbnail
134
 
135
  /**
@@ -147,12 +182,22 @@ class Metronet_Profile_Picture {
147
 
148
  $thumb_html = '<a style="display:block" href="#" class="mpp_add_media default-image">';
149
  $thumb_html.= sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', $this->get_plugin_url( 'img/mystery.png' ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
 
150
  $thumb_html .= '</a>';
151
 
152
  //Save user meta and update thumbnail
153
  update_user_option( $user_id, 'metronet_image_id', 0 );
154
  delete_post_meta( $post_id, '_thumbnail_id' );
155
- die( json_encode( array( 'thumb_html' => $thumb_html, 'crop_html' => '' ) ) );
 
 
 
 
 
 
 
 
 
156
  }
157
 
158
  /**
@@ -427,11 +472,13 @@ class Metronet_Profile_Picture {
427
  $thumb_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'thumbnail' , false, '' );
428
  $post_thumbnail = sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', esc_url( $thumb_src[0] ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
429
  echo $post_thumbnail;
 
430
  echo '</a>';
431
  } else {
432
  echo '<a style="display:block" href="#" class="mpp_add_media default-image">';
433
  $post_thumbnail = sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', $this->get_plugin_url( 'img/mystery.png' ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
434
  echo $post_thumbnail;
 
435
  echo '</a>';
436
  }
437
  $remove_classes = array( 'dashicons', 'dashicons-trash' );
@@ -440,6 +487,9 @@ class Metronet_Profile_Picture {
440
  }
441
  ?>
442
  <a id="metronet-remove" class="<?php echo implode( ' ', $remove_classes ); ?>" href="#" title="<?php esc_attr_e( 'Remove profile image', 'metronet-profile-picture' ); ?>"><?php esc_html_e( "Remove profile image", "metronet-profile-picture" );?></a>
 
 
 
443
  </div><!-- #metronet-profile-image -->
444
  <div id="metronet-override-avatar">
445
  <input type="hidden" name="metronet-user-avatar" value="off" />
@@ -483,15 +533,16 @@ class Metronet_Profile_Picture {
483
  $post_id = $this->get_post_id( $this->get_user_id() );
484
  wp_enqueue_media( array( 'post' => $post_id ) );
485
  $script_deps = array( 'media-editor' );
486
- wp_enqueue_script( 'mt-pp', $this->get_plugin_url( '/js/mpp.js' ), $script_deps, '20160830', true );
487
  wp_localize_script( 'mt-pp', 'metronet_profile_image',
488
  array(
489
- 'set_profile_text' => __( 'Set Profile Image', 'metronet-profile-picture' ),
490
  'remove_profile_text' => __( 'Remove Profile Image', 'metronet-profile-picture' ),
491
- 'crop' => __( 'Crop Thumbnail', 'metronet-profile-picture' ),
492
- 'ajax_url' => esc_url( admin_url( 'admin-ajax.php' ) ),
493
- 'user_post_id' => absint( $post_id ),
494
- 'nonce' => wp_create_nonce( 'mt-update-post_' . absint( $post_id ) )
 
495
  )
496
  );
497
  ?>
@@ -501,6 +552,28 @@ class Metronet_Profile_Picture {
501
  position: relative;
502
  float: left;
503
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
  #metronet-remove {
505
  position: absolute;
506
  background: #424242;
@@ -708,15 +781,15 @@ function mt_mpp_instantiate() {
708
  $mt_pp = new Metronet_Profile_Picture();
709
  }
710
  /**
711
- * mt_profile_img
712
- *
713
- * Adds a profile image
714
- *
715
- @param $user_id INT - The user ID for the user to retrieve the image for
716
- @ param $args mixed
717
- size - string || array (see get_the_post_thumbnail)
718
- attr - string || array (see get_the_post_thumbnail)
719
- echo - bool (true or false) - whether to echo the image or return it
720
  */
721
  function mt_profile_img( $user_id, $args = array() ) {
722
  $profile_post_id = absint( get_user_option( 'metronet_post_id', $user_id ) );
@@ -750,6 +823,18 @@ function mt_profile_img( $user_id, $args = array() ) {
750
  }
751
 
752
  $post_thumbnail = wp_get_attachment_image( $post_thumbnail_id, $size, false, $attr );
 
 
 
 
 
 
 
 
 
 
 
 
753
  $post_thumbnail = apply_filters( 'mpp_thumbnail_html', $post_thumbnail, $profile_post_id, $post_thumbnail_id, $user_id );
754
  if ( $echo ) {
755
  echo $post_thumbnail;
4
  Plugin URI: http://wordpress.org/extend/plugins/metronet-profile-picture/
5
  Description: Use the native WP uploader on your user profile page.
6
  Author: Ronald Huereca
7
+ Version: 1.5.5
8
  Requires at least: 3.5
9
  Author URI: https://www.mediaron.com
10
  Contributors: ronalfy
92
  $thumb_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'thumbnail' , false, '' );
93
  $post_thumbnail = sprintf( '<img src="%s" width="150" height="150" title="%s" />', esc_url( $thumb_src[0] ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
94
  $crop_html = $this->get_post_thumbnail_editor_link( $post_id );
95
+ $thumb_html = sprintf( '<a href="#" class="mpp_add_media">%s%s</a>', $post_thumbnail, sprintf( '<div id="metronet-click-edit">%s</div>', esc_html__( 'Click to Edit', 'metronet-profile-picture' ) ) );
96
  $thumb_html .= sprintf( '<a id="metronet-remove" class="dashicons dashicons-trash" href="#" title="%s">%s</a>', esc_attr__( 'Remove profile image', 'metronet-profile-picture' ), esc_html__( "Remove profile image", "metronet-profile-picture" ) );
97
+ wp_send_json( array(
98
+ 'thumb_html' => $thumb_html,
99
+ 'crop_html' => $crop_html,
100
+ 'has_thumb' => true,
101
+ 'avatar' => get_avatar( $user_id, 96 ),
102
+ 'avatar_admin_small' => get_avatar( $user_id, 26 ),
103
+ 'avatar_admin_medium' => get_avatar( $user_id, 64 ),
104
+ 'user_id' => $user_id,
105
+ 'logged_in_user_id' => get_current_user_id(),
106
+ ) );
107
  }
108
+ wp_send_json( array(
109
+ 'thumb_html' => '',
110
+ 'crop_html' => '',
111
+ 'has_thumb' => false,
112
+ 'avatar' => get_avatar( $user_id, 96 ),
113
+ 'avatar_admin_small' => get_avatar( $user_id, 26 ),
114
+ 'avatar_admin_medium' => get_avatar( $user_id, 64 ),
115
+ 'user_id' => $user_id,
116
+ 'logged_in_user_id' => get_current_user_id(),
117
+ ) );
118
  } //end ajax_add_thumbnail
119
 
120
  /**
126
  public function ajax_get_thumbnail() {
127
  if ( !current_user_can( 'upload_files' ) ) die( '' );
128
  $post_id = isset( $_POST[ 'post_id' ] ) ? absint( $_POST[ 'post_id' ] ) : 0;
129
+ $post = get_post( $post_id );
130
+ $user_id = 0;
131
+ if( $post ) {
132
+ $user_id = $post->post_author;
133
+ }
134
+
135
 
136
  if ( has_post_thumbnail( $post_id ) ) {
137
  $thumb_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'thumbnail' , false, '' );
138
  $post_thumbnail = sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', esc_url( $thumb_src[0] ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
139
  $crop_html = $this->get_post_thumbnail_editor_link( $post_id );
140
+ $thumb_html = sprintf( '<a href="#" class="mpp_add_media">%s%s</a>', $post_thumbnail, sprintf( '<div id="metronet-click-edit">%s</div>', esc_html__( 'Click to Edit', 'metronet-profile-picture' ) ) );
141
  $thumb_html .= sprintf( '<a id="metronet-remove" class="dashicons dashicons-trash" href="#" title="%s">%s</a>', esc_attr__( 'Remove profile image', 'metronet-profile-picture' ), esc_html__( "Remove profile image", "metronet-profile-picture" ) );
142
+ wp_send_json( array(
143
+ 'thumb_html' => $thumb_html,
144
+ 'crop_html' => $crop_html,
145
+ 'has_thumb' => true,
146
+ 'avatar' => get_avatar( $user_id, 96 ),
147
+ 'avatar_admin_small' => get_avatar( $user_id, 26 ),
148
+ 'avatar_admin_medium' => get_avatar( $user_id, 64 ),
149
+ 'user_id' => $user_id,
150
+ 'logged_in_user_id' => get_current_user_id(),
151
+ ) );
152
  } else {
153
  $thumb_html = '<a style="display:block" href="#" class="mpp_add_media default-image">';
154
  $thumb_html.= sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', $this->get_plugin_url( 'img/mystery.png' ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
155
+ $thumb_html .= sprintf( '<div id="metronet-click-edit">%s</div>', esc_html__( 'Click to Edit', 'metronet-profile-picture' ) );
156
  $thumb_html .= '</a>';
157
  }
158
+ wp_send_json( array(
159
+ 'thumb_html' => $thumb_html,
160
+ 'crop_html' => '',
161
+ 'has_thumb' => false,
162
+ 'avatar' => get_avatar( $user_id, 96 ),
163
+ 'avatar_admin_small' => get_avatar( $user_id, 26 ),
164
+ 'avatar_admin_medium' => get_avatar( $user_id, 64 ),
165
+ 'user_id' => $user_id,
166
+ 'logged_in_user_id' => get_current_user_id(),
167
+ ) );
168
  } //end ajax_get_thumbnail
169
 
170
  /**
182
 
183
  $thumb_html = '<a style="display:block" href="#" class="mpp_add_media default-image">';
184
  $thumb_html.= sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', $this->get_plugin_url( 'img/mystery.png' ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
185
+ $thumb_html .= sprintf( '<div id="metronet-click-edit">%s</div>', esc_html__( 'Click to Edit', 'metronet-profile-picture' ) );
186
  $thumb_html .= '</a>';
187
 
188
  //Save user meta and update thumbnail
189
  update_user_option( $user_id, 'metronet_image_id', 0 );
190
  delete_post_meta( $post_id, '_thumbnail_id' );
191
+ wp_send_json( array(
192
+ 'thumb_html' => $thumb_html,
193
+ 'crop_html' => '',
194
+ 'has_thumb' => false,
195
+ 'avatar' => get_avatar( $user_id, 96 ),
196
+ 'avatar_admin_small' => get_avatar( $user_id, 26 ),
197
+ 'avatar_admin_medium' => get_avatar( $user_id, 64 ),
198
+ 'user_id' => $user_id,
199
+ 'logged_in_user_id' => get_current_user_id(),
200
+ ) );
201
  }
202
 
203
  /**
472
  $thumb_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'thumbnail' , false, '' );
473
  $post_thumbnail = sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', esc_url( $thumb_src[0] ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
474
  echo $post_thumbnail;
475
+ echo sprintf( '<div id="metronet-click-edit">%s</div>', esc_html__( 'Click to Edit', 'metronet-profile-picture' ) );
476
  echo '</a>';
477
  } else {
478
  echo '<a style="display:block" href="#" class="mpp_add_media default-image">';
479
  $post_thumbnail = sprintf( '<img style="display:block" src="%s" width="150" height="150" title="%s" />', $this->get_plugin_url( 'img/mystery.png' ), esc_attr__( "Upload or Change Profile Picture", 'metronet-profile-picture' ) );
480
  echo $post_thumbnail;
481
+ echo sprintf( '<div id="metronet-click-edit">%s</div>', esc_html__( 'Click to Edit', 'metronet-profile-picture' ) );
482
  echo '</a>';
483
  }
484
  $remove_classes = array( 'dashicons', 'dashicons-trash' );
487
  }
488
  ?>
489
  <a id="metronet-remove" class="<?php echo implode( ' ', $remove_classes ); ?>" href="#" title="<?php esc_attr_e( 'Remove profile image', 'metronet-profile-picture' ); ?>"><?php esc_html_e( "Remove profile image", "metronet-profile-picture" );?></a>
490
+ <div style="display: none">
491
+ <?php printf( '<img class="mpp-loading" width="150" height="150" alt="Loading" src="%s" />', esc_url( $this->get_plugin_url( '/img/loading.gif' ) ) ); ?>
492
+ </div>
493
  </div><!-- #metronet-profile-image -->
494
  <div id="metronet-override-avatar">
495
  <input type="hidden" name="metronet-user-avatar" value="off" />
533
  $post_id = $this->get_post_id( $this->get_user_id() );
534
  wp_enqueue_media( array( 'post' => $post_id ) );
535
  $script_deps = array( 'media-editor' );
536
+ wp_enqueue_script( 'mt-pp', $this->get_plugin_url( '/js/mpp.js' ), $script_deps, '20180819', true );
537
  wp_localize_script( 'mt-pp', 'metronet_profile_image',
538
  array(
539
+ 'set_profile_text' => __( 'Set Profile Image', 'metronet-profile-picture' ),
540
  'remove_profile_text' => __( 'Remove Profile Image', 'metronet-profile-picture' ),
541
+ 'crop' => __( 'Crop Thumbnail', 'metronet-profile-picture' ),
542
+ 'ajax_url' => esc_url( admin_url( 'admin-ajax.php' ) ),
543
+ 'user_post_id' => absint( $post_id ),
544
+ 'nonce' => wp_create_nonce( 'mt-update-post_' . absint( $post_id ) ),
545
+ 'loading_gif' => esc_url( $this->get_plugin_url( '/img/loading.gif' ) )
546
  )
547
  );
548
  ?>
552
  position: relative;
553
  float: left;
554
  }
555
+ #metronet-profile-image a.mpp_add_media #metronet-click-edit,
556
+ #metronet-profile-image a.mpp_add_media:hover #metronet-click-edit,
557
+ #metronet-profile-image a.mpp_add_media:visited #metronet-click-edit {
558
+ color: #FFF;
559
+ }
560
+ #metronet-profile-image a.mpp_add_media:hover #metronet-click-edit {
561
+ background: #000;
562
+ background: rgba(51,51,51,1);
563
+ font-weight: normal;
564
+ }
565
+ #metronet-click-edit {
566
+ position: absolute;
567
+ bottom: 0;
568
+ left: 0;
569
+ width: 100%;
570
+ background: #333;
571
+ background: rgba(51,51,51,0.5);
572
+ font-size: 14px;
573
+ line-height: 14px;
574
+ text-align: center;
575
+ padding: 8px 0;
576
+ }
577
  #metronet-remove {
578
  position: absolute;
579
  background: #424242;
781
  $mt_pp = new Metronet_Profile_Picture();
782
  }
783
  /**
784
+ * mt_profile_img
785
+ *
786
+ * Adds a profile image
787
+ *
788
+ * @param $user_id INT - The user ID for the user to retrieve the image for
789
+ * @param $args mixed
790
+ * size - string || array (see get_the_post_thumbnail)
791
+ * attr - string || array (see get_the_post_thumbnail)
792
+ * echo - bool (true or false) - whether to echo the image or return it
793
  */
794
  function mt_profile_img( $user_id, $args = array() ) {
795
  $profile_post_id = absint( get_user_option( 'metronet_post_id', $user_id ) );
823
  }
824
 
825
  $post_thumbnail = wp_get_attachment_image( $post_thumbnail_id, $size, false, $attr );
826
+
827
+ /**
828
+ * Filter outputted HTML.
829
+ *
830
+ * Filter outputted HTML.
831
+ *
832
+ * @param string $post_thumbnail img tag with formed HTML
833
+ * @param int $profile_post_id The profile in which the image is attached
834
+ * @param int $profile_thumbnail_id The thumbnail ID for the attached image
835
+ * @param int $user_id The user id for which the image is attached
836
+ *
837
+ */
838
  $post_thumbnail = apply_filters( 'mpp_thumbnail_html', $post_thumbnail, $profile_post_id, $post_thumbnail_id, $user_id );
839
  if ( $echo ) {
840
  echo $post_thumbnail;
readme.txt CHANGED
@@ -3,16 +3,20 @@ Contributors: ronalfy
3
  Tags: users, user, user profile
4
  Requires at least: 3.5
5
  Tested up to: 4.9
6
- Stable tag: 1.5.1
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
- Donate link: https://mediaron.com/contribute/
10
 
11
  Set a custom profile image (avatar) for a user using the standard WordPress media upload tool.
12
  == Description ==
13
 
14
  Set or remove a custom profile image for a user using the standard WordPress media upload tool.
15
 
 
 
 
 
16
  Users must have the ability to upload images (typically author role or greater). You can use the plugin <a href="https://wordpress.org/plugins/members/">Members</a> to allow other roles (e.g. subscribers) the ability to upload images.
17
 
18
  A template tag is supplied for outputting to a theme and the option to override a user's default avatar is also available.
@@ -88,6 +92,14 @@ Yes, but you'll have to set a new profile image per site. This is currently a l
88
 
89
  == Changelog ==
90
 
 
 
 
 
 
 
 
 
91
  = 1.5.1 =
92
  * Released 2018-07-12
93
  * Fixed a condition where a featured image was shown for the author instead of a blank gravatar
@@ -210,6 +222,9 @@ Yes, but you'll have to set a new profile image per site. This is currently a l
210
 
211
  == Upgrade Notice ==
212
 
 
 
 
213
  = 1.5.1 =
214
  Fixed a condition where a featured image was shown for the author instead of a blank gravatar
215
 
3
  Tags: users, user, user profile
4
  Requires at least: 3.5
5
  Tested up to: 4.9
6
+ Stable tag: 1.5.5
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
+ Donate link: https://mediaron.com/give/
10
 
11
  Set a custom profile image (avatar) for a user using the standard WordPress media upload tool.
12
  == Description ==
13
 
14
  Set or remove a custom profile image for a user using the standard WordPress media upload tool.
15
 
16
+ > Please <a href="https://wordpress.org/support/plugin/metronet-profile-picture/reviews/#new-post">Rate the Plugin</a> or <a href="https://mediaron.com/give/">Give Back</a> to show support.
17
+
18
+ https://www.youtube.com/watch?v=9icnOWWZUpA?rel=0
19
+
20
  Users must have the ability to upload images (typically author role or greater). You can use the plugin <a href="https://wordpress.org/plugins/members/">Members</a> to allow other roles (e.g. subscribers) the ability to upload images.
21
 
22
  A template tag is supplied for outputting to a theme and the option to override a user's default avatar is also available.
92
 
93
  == Changelog ==
94
 
95
+ = 1.5.5 =
96
+ * Released 2018-08-19
97
+ * Enhancement: Loading image now shows between states for better UX
98
+ * Enhancement: Plugin attempts to override the default WordPress avatar in the User Profile page
99
+ * Enhancement: Plugin attempts to override the admin bar avatars if the users match
100
+ * Enhancement: Added Click to Edit bar to make it more obvious what to do with the profile picture
101
+ * Refactor: Plugin now uses wp_send_json instead of json_encode for more compatibility
102
+
103
  = 1.5.1 =
104
  * Released 2018-07-12
105
  * Fixed a condition where a featured image was shown for the author instead of a blank gravatar
222
 
223
  == Upgrade Notice ==
224
 
225
+ = 1.5.5 =
226
+ Loading image now shows between states. New "Click to Edit" bar added to interface.
227
+
228
  = 1.5.1 =
229
  Fixed a condition where a featured image was shown for the author instead of a blank gravatar
230