Changeset 864355
- Timestamp:
- 02/24/2014 10:37:05 PM (12 years ago)
- Location:
- wp-user-avatar/trunk
- Files:
-
- 12 added
- 1 deleted
- 18 edited
-
images/wpua-icon.png (added)
-
includes/class-wp-user-avatar-admin.php (added)
-
includes/class-wp-user-avatar-list-table.php (added)
-
includes/class-wp-user-avatar-shortcode.php (added)
-
includes/class-wp-user-avatar-subscriber.php (added)
-
includes/class-wp-user-avatar-update.php (added)
-
includes/class-wp-user-avatar.php (added)
-
includes/tinymce.php (deleted)
-
includes/tinymce/editor_plugin.js (modified) (1 diff)
-
includes/tinymce/window.php (modified) (5 diffs)
-
includes/wpua-functions.php (added)
-
includes/wpua-globals.php (added)
-
includes/wpua-media-page.php (added)
-
includes/wpua-options-page.php (added)
-
includes/wpua-tinymce.php (added)
-
js/wp-user-avatar-admin.js (modified) (3 diffs)
-
js/wp-user-avatar-user.js (modified) (3 diffs)
-
js/wp-user-avatar.js (modified) (1 diff)
-
lang/wp-user-avatar-de_DE.mo (modified) (previous)
-
lang/wp-user-avatar-de_DE.po (modified) (2 diffs)
-
lang/wp-user-avatar-es_ES.mo (modified) (previous)
-
lang/wp-user-avatar-es_ES.po (modified) (2 diffs)
-
lang/wp-user-avatar-fr_FR.mo (modified) (previous)
-
lang/wp-user-avatar-fr_FR.po (modified) (2 diffs)
-
lang/wp-user-avatar-pl_PL.mo (modified) (previous)
-
lang/wp-user-avatar-pl_PL.po (modified) (2 diffs)
-
lang/wp-user-avatar-sv_SE.mo (modified) (previous)
-
lang/wp-user-avatar-sv_SE.po (modified) (2 diffs)
-
readme.txt (modified) (13 diffs)
-
uninstall.php (modified) (4 diffs)
-
wp-user-avatar.php (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wp-user-avatar/trunk/includes/tinymce/editor_plugin.js
r841199 r864355 1 (function() {tinymce.PluginManager.requireLangPack('wpUserAvatar');tinymce.create('tinymce.plugins.wpUserAvatar',{init:function(ed,url){ed.addCommand('mceWpUserAvatar',function(){ed.windowManager.open({file:ajaxurl+'?action=wp_user_avatar_tinymce',width:500,height:330,inline:1},{plugin_url:url})});ed.addButton('wpUserAvatar',{title:'Insert WP User Avatar',cmd:'mceWpUserAvatar',image:url+'/../../images/wpua-32x32.png'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('wpUserAvatar',n.nodeName=='IMG')})},createControl:function(n,cm){return null},getInfo:function(){return{longname:'WP User Avatar',author:'Bangbay Siboliban',authorurl:'http://siboliban.org/',infourl:'http://wordpress.org/extend/plugins/wp-user-avatar/',version:"1.7.2"}}});tinymce.PluginManager.add('wpUserAvatar',tinymce.plugins.wpUserAvatar)})();1 (function() {tinymce.PluginManager.requireLangPack('wpUserAvatar');tinymce.create('tinymce.plugins.wpUserAvatar',{init:function(ed,url) {ed.addCommand('mceWpUserAvatar',function() {ed.windowManager.open({file:ajaxurl+'?action=wp_user_avatar_tinymce',width:500,height:360,inline:1},{plugin_url:url})});ed.addButton('wpUserAvatar',{title:'Insert WP User Avatar',cmd:'mceWpUserAvatar',image:url+'/../../images/wpua-32x32.png'});ed.onNodeChange.add(function(ed,cm,n) {cm.setActive('wpUserAvatar',n.nodeName=='IMG')})},createControl:function(n,cm) {return null},getInfo:function() {return{longname:'WP User Avatar',author:'Bangbay Siboliban',authorurl:'http://siboliban.org/',infourl:'http://wordpress.org/plugins/wp-user-avatar/',version:"1.8"}}});tinymce.PluginManager.add('wpUserAvatar',tinymce.plugins.wpUserAvatar)})(); -
wp-user-avatar/trunk/includes/tinymce/window.php
r841199 r864355 1 1 <?php 2 2 /** 3 * TinyMCE modal window. 4 * 3 5 * @package WP User Avatar 4 * @version 1. 7.26 * @version 1.8 5 7 */ 6 8 7 if(!defined('ABSPATH')) {9 if(!defined('ABSPATH')) { 8 10 die(__('You are not allowed to call this page directly.')); 9 11 @header('Content-Type:'.get_option('html_type').';charset='.get_option('blog_charset')); 10 12 } 11 13 ?> 12 <html xmlns="http://www.w3.org/1999/xhtml"> 14 <!DOCTYPE html> 15 <html> 13 16 <head> 14 17 <title><?php _e('WP User Avatar', 'wp-user-avatar'); ?></title> … … 16 19 <base target="_self" /> 17 20 <script type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/jquery/jquery.js"></script> 21 <script type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/jquery/ui/jquery.ui.core.min.js"></script> 22 <script type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/jquery/ui/jquery.ui.widget.min.js"></script> 23 <script type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js"></script> 18 24 <script type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/tinymce/tiny_mce_popup.js"></script> 19 25 <script type="text/javascript" src="<?php echo site_url(); ?>/wp-includes/js/tinymce/utils/form_utils.js"></script> 20 26 <script type="text/javascript"> 21 function wpuaInsertAvatar() {27 function wpuaInsertAvatar() { 22 28 // Custom shortcode values 23 29 var shortcode, closing_tag; … … 44 50 shortcode = "<p>[avatar" + user_tag + size_tag + align_tag + link_tag + target_tag + closing_tag + "</p>"; 45 51 46 if(window.tinyMCE) {52 if(window.tinyMCE) { 47 53 window.tinyMCE.execInstanceCommand(window.tinyMCE.activeEditor.id, 'mceInsertContent', false, shortcode); 48 54 tinyMCEPopup.editor.execCommand('mceRepaint'); … … 51 57 return; 52 58 } 53 jQuery(function($){ 54 $('#wp_user_avatar_link').change(function(){ 59 function wpuaInsertAvatarUpload() { 60 // Upload shortcode 61 var shortcode = "<p>[avatar_upload]</p>"; 62 63 if(window.tinyMCE) { 64 window.tinyMCE.execInstanceCommand(window.tinyMCE.activeEditor.id, 'mceInsertContent', false, shortcode); 65 tinyMCEPopup.editor.execCommand('mceRepaint'); 66 tinyMCEPopup.close(); 67 } 68 return; 69 } 70 jQuery(function($) { 71 $('#wp_user_avatar_link').change(function() { 55 72 $('#wp_user_avatar_link_external_section').toggle($('#wp_user_avatar_link').val() == 'custom-url'); 56 73 }); 57 $('#wp_user_avatar_size').change(function() {74 $('#wp_user_avatar_size').change(function() { 58 75 $('#wp_user_avatar_size_number_section').toggle($('#wp_user_avatar_size').val() == 'custom'); 59 76 }); 77 $('#wpua-tabs').tabs(); 60 78 }); 61 79 </script> 62 80 <style type="text/css"> 63 form { background: #fff; border: 1px solid #eee; } 81 ul { margin: 0; padding: 0; list-style: none; } 82 ul li { float: left; } 83 ul li a { float: left; padding: 2px 5px; background: #ddd; border: 1px solid #eee; border-bottom: 0; display: block; font-weight: 700; outline: none; text-decoration: none; } 84 ul li.ui-tabs-active a { background: #fff; } 85 form { clear: both; background: #fff; border: 1px solid #eee; } 64 86 p, h4 { margin: 0; padding: 12px 0 0; } 65 87 h4.center { text-align: center; } … … 71 93 </head> 72 94 <body id="link" class="wp-core-ui" onload="document.body.style.display='';" style="display:none;"> 73 <form name="wpUserAvatar" action="#"> 74 <p> 75 <label for="<?php esc_attr_e('wp_user_avatar_user'); ?>"><strong><?php _e('User Name'); ?>:</strong></label> 76 <select id="<?php esc_attr_e('wp_user_avatar_user'); ?>" name="<?php esc_attr_e('wp_user_avatar_user'); ?>"> 77 <option value=""></option> 78 <?php $users = get_users(); foreach($users as $user) : ?> 79 <option value="<?php echo $user->user_login; ?>"><?php echo $user->display_name; ?></option> 80 <?php endforeach; ?> 81 </select> 82 </p> 95 <div id="wpua-tabs"> 96 <ul> 97 <li><a href="#wpua"><?php _e('Avatar'); ?></a></li> 98 <li><a href="#wpua-upload"><?php _e('Upload'); ?></a></li> 99 </ul> 100 <form name="wpUserAvatar" action="#"> 101 <div id="wpua"> 102 <p> 103 <label for="<?php esc_attr_e('wp_user_avatar_user'); ?>"><strong><?php _e('User Name'); ?>:</strong></label> 104 <select id="<?php esc_attr_e('wp_user_avatar_user'); ?>" name="<?php esc_attr_e('wp_user_avatar_user'); ?>"> 105 <option value=""></option> 106 <?php $users = get_users(); foreach($users as $user) : ?> 107 <option value="<?php echo $user->user_login; ?>"><?php echo $user->display_name; ?></option> 108 <?php endforeach; ?> 109 </select> 110 </p> 83 111 84 <p>85 <label for="<?php esc_attr_e('wp_user_avatar_size'); ?>"><strong><?php _e('Size'); ?>:</strong></label>86 <select id="<?php esc_attr_e('wp_user_avatar_size'); ?>" name="<?php esc_attr_e('wp_user_avatar_size'); ?>">87 <option value=""></option>88 <option value="original"><?php _e('Original Size'); ?></option>89 <option value="large"><?php _e('Large'); ?></option>90 <option value="medium"><?php _e('Medium'); ?></option>91 <option value="thumbnail"><?php _e('Thumbnail'); ?></option>92 <option value="custom"><?php _e('Custom'); ?></option>93 </select>94 </p>112 <p> 113 <label for="<?php esc_attr_e('wp_user_avatar_size'); ?>"><strong><?php _e('Size'); ?>:</strong></label> 114 <select id="<?php esc_attr_e('wp_user_avatar_size'); ?>" name="<?php esc_attr_e('wp_user_avatar_size'); ?>"> 115 <option value=""></option> 116 <option value="original"><?php _e('Original Size'); ?></option> 117 <option value="large"><?php _e('Large'); ?></option> 118 <option value="medium"><?php _e('Medium'); ?></option> 119 <option value="thumbnail"><?php _e('Thumbnail'); ?></option> 120 <option value="custom"><?php _e('Custom'); ?></option> 121 </select> 122 </p> 95 123 96 <p id="<?php esc_attr_e('wp_user_avatar_size_number_section'); ?>">97 <label for="<?php esc_attr_e('wp_user_avatar_size_number'); ?>"><?php _e('Size'); ?></label>98 <input type="text" size="8" id="<?php esc_attr_e('wp_user_avatar_size_number'); ?>" name="<?php esc_attr_e('wp_user_avatar_size'); ?>" value="" />99 </p>124 <p id="<?php esc_attr_e('wp_user_avatar_size_number_section'); ?>"> 125 <label for="<?php esc_attr_e('wp_user_avatar_size_number'); ?>"><?php _e('Size'); ?>:</label> 126 <input type="text" size="8" id="<?php esc_attr_e('wp_user_avatar_size_number'); ?>" name="<?php esc_attr_e('wp_user_avatar_size'); ?>" value="" /> 127 </p> 100 128 101 <p>102 <label for="<?php esc_attr_e('wp_user_avatar_align'); ?>"><strong><?php _e('Alignment'); ?>:</strong></label>103 <select id="<?php esc_attr_e('wp_user_avatar_align'); ?>" name="<?php esc_attr_e('wp_user_avatar_align'); ?>">104 <option value=""></option>105 <option value="center"><?php _e('Center'); ?></option>106 <option value="left"><?php _e('Left'); ?></option>107 <option value="right"><?php _e('Right'); ?></option>108 </select>109 </p>129 <p> 130 <label for="<?php esc_attr_e('wp_user_avatar_align'); ?>"><strong><?php _e('Alignment'); ?>:</strong></label> 131 <select id="<?php esc_attr_e('wp_user_avatar_align'); ?>" name="<?php esc_attr_e('wp_user_avatar_align'); ?>"> 132 <option value=""></option> 133 <option value="center"><?php _e('Center'); ?></option> 134 <option value="left"><?php _e('Left'); ?></option> 135 <option value="right"><?php _e('Right'); ?></option> 136 </select> 137 </p> 110 138 111 <p>112 <label for="<?php esc_attr_e('wp_user_avatar_link'); ?>"><strong><?php _e('Link To'); ?>:</strong></label>113 <select id="<?php esc_attr_e('wp_user_avatar_link'); ?>" name="<?php esc_attr_e('wp_user_avatar_link'); ?>">114 <option value=""></option>115 <option value="file"><?php _e('Image File'); ?></option>116 <option value="attachment"><?php _e('Attachment Page'); ?></option>117 <option value="custom-url"><?php _e('Custom URL'); ?></option>118 </select>119 </p>139 <p> 140 <label for="<?php esc_attr_e('wp_user_avatar_link'); ?>"><strong><?php _e('Link To'); ?>:</strong></label> 141 <select id="<?php esc_attr_e('wp_user_avatar_link'); ?>" name="<?php esc_attr_e('wp_user_avatar_link'); ?>"> 142 <option value=""></option> 143 <option value="file"><?php _e('Image File'); ?></option> 144 <option value="attachment"><?php _e('Attachment Page'); ?></option> 145 <option value="custom-url"><?php _e('Custom URL'); ?></option> 146 </select> 147 </p> 120 148 121 <p id="<?php esc_attr_e('wp_user_avatar_link_external_section'); ?>">122 <label for="<?php esc_attr_e('wp_user_avatar_link_external'); ?>"><?php _e('URL'); ?></label>123 <input type="text" size="36" id="<?php esc_attr_e('wp_user_avatar_link_external'); ?>" name="<?php esc_attr_e('wp_user_avatar_link_external'); ?>" value="" />124 </p>149 <p id="<?php esc_attr_e('wp_user_avatar_link_external_section'); ?>"> 150 <label for="<?php esc_attr_e('wp_user_avatar_link_external'); ?>"><?php _e('URL'); ?>:</label> 151 <input type="text" size="36" id="<?php esc_attr_e('wp_user_avatar_link_external'); ?>" name="<?php esc_attr_e('wp_user_avatar_link_external'); ?>" value="" /> 152 </p> 125 153 126 <p>127 <label for="<?php esc_attr_e('wp_user_avatar_target'); ?>"></label>128 <input type="checkbox" id="<?php esc_attr_e('wp_user_avatar_target'); ?>" name="<?php esc_attr_e('wp_user_avatar_target'); ?>" value="_blank" /> <strong><?php _e('Open link in a new window'); ?></strong>129 </p>154 <p> 155 <label for="<?php esc_attr_e('wp_user_avatar_target'); ?>"></label> 156 <input type="checkbox" id="<?php esc_attr_e('wp_user_avatar_target'); ?>" name="<?php esc_attr_e('wp_user_avatar_target'); ?>" value="_blank" /> <strong><?php _e('Open link in a new window'); ?></strong> 157 </p> 130 158 131 <p>132 <label for="<?php esc_attr_e('wp_user_avatar_caption'); ?>"><strong><?php _e('Caption'); ?></strong></label>133 <textarea cols="36" rows="2" id="<?php esc_attr_e('wp_user_avatar_caption'); ?>" name="<?php esc_attr_e('wp_user_avatar_size'); ?>"></textarea>134 </p>159 <p> 160 <label for="<?php esc_attr_e('wp_user_avatar_caption'); ?>"><strong><?php _e('Caption'); ?>:</strong></label> 161 <textarea cols="36" rows="2" id="<?php esc_attr_e('wp_user_avatar_caption'); ?>" name="<?php esc_attr_e('wp_user_avatar_size'); ?>"></textarea> 162 </p> 135 163 136 <div class="mceActionPanel"> 137 <input type="submit" id="insert" class="button-primary" name="insert" value="<?php _e('Insert into Post'); ?>" onclick="wpuaInsertAvatar();" /> 138 </div> 139 </form> 164 <div class="mceActionPanel"> 165 <input type="submit" id="insert" class="button-primary" name="insert" value="<?php _e('Insert into Post'); ?>" onclick="wpuaInsertAvatar();" /> 166 </div> 167 </div> 168 <div id="wpua-upload"> 169 <p id="<?php esc_attr_e('wp_user_avatar_upload'); ?>"> 170 <label for="<?php esc_attr_e('wp_user_avatar_upload'); ?>"><strong><?php _e('Upload'); ?>:</strong></label> 171 <input type="text" size="36" id="<?php esc_attr_e('wp_user_avatar_upload'); ?>" name="<?php esc_attr_e('wp_user_avatar_upload'); ?>" value="<?php esc_attr_e('[avatar_upload]'); ?>" readonly="readonly" /> 172 </p> 173 174 <div class="mceActionPanel"> 175 <input type="submit" id="insert" class="button-primary" name="insert" value="<?php _e('Insert into Post'); ?>" onclick="wpuaInsertAvatarUpload();" /> 176 </div> 177 </div> 178 </form> 179 </div> 140 180 </body> 141 181 </html> -
wp-user-avatar/trunk/js/wp-user-avatar-admin.js
r839423 r864355 1 jQuery(function($) {1 jQuery(function($) { 2 2 // Show size info only if allow uploads is checked 3 $('#wp_user_avatar_allow_upload').change(function() {3 $('#wp_user_avatar_allow_upload').change(function() { 4 4 $('#wpua-contributors-subscribers').slideToggle($('#wp_user_avatar_allow_upload').is(':checked')); 5 5 }); 6 6 // Show resize info only if resize uploads is checked 7 $('#wp_user_avatar_resize_upload').change(function() {7 $('#wp_user_avatar_resize_upload').change(function() { 8 8 $('#wpua-resize-sizes').slideToggle($('#wp_user_avatar_resize_upload').is(':checked')); 9 9 }); 10 10 // Hide Gravatars if disable Gravatars is checked 11 $('#wp_user_avatar_disable_gravatar').change(function() {12 if($('#wp-avatars').length) {13 $('#wp-avatars ').slideToggle(!$('#wp_user_avatar_disable_gravatar').is(':checked'));11 $('#wp_user_avatar_disable_gravatar').change(function() { 12 if($('#wp-avatars').length) { 13 $('#wp-avatars, #avatar-rating').slideToggle(!$('#wp_user_avatar_disable_gravatar').is(':checked')); 14 14 $('#wp_user_avatar_radio').trigger('click'); 15 } else {16 $('#wpua-message').show();17 15 } 18 16 }); … … 23 21 max: parseInt(wpua_admin.max_upload_size), 24 22 step: 1, 25 slide: function(event, ui) {23 slide: function(event, ui) { 26 24 $('#wp_user_avatar_upload_size_limit').val(ui.value); 27 25 $('#wpua-readable-size').html(Math.floor(ui.value / 1024) + 'KB'); … … 31 29 }); 32 30 // Update readable size on keyup 33 $('#wp_user_avatar_upload_size_limit').keyup(function() {31 $('#wp_user_avatar_upload_size_limit').keyup(function() { 34 32 var wpuaUploadSizeLimit = $(this).val(); 35 33 wpuaUploadSizeLimit = wpuaUploadSizeLimit.replace(/\D/g, ''); -
wp-user-avatar/trunk/js/wp-user-avatar-user.js
r839423 r864355 1 jQuery(function($) {1 jQuery(function($) { 2 2 // Add enctype to form with JavaScript as backup 3 3 $('#your-profile').attr('enctype', 'multipart/form-data'); … … 7 7 var wpuaSrc = $('#wpua-preview').find('img').attr('src'); 8 8 // Remove WP User Avatar 9 $('body').on('click', '#wpua-remove', function(e) {9 $('body').on('click', '#wpua-remove', function(e) { 10 10 e.preventDefault(); 11 11 $('#wpua-original').remove(); … … 15 15 $('#wpua-original').attr('src', wpua_custom.avatar_thumb); 16 16 $('#wp-user-avatar').val(""); 17 $('#wpua- message, #wpua-original, #wpua-undo-button').show();17 $('#wpua-original, #wpua-undo-button').show(); 18 18 $('#wp_user_avatar_radio').trigger('click'); 19 19 }); 20 20 // Undo WP User Avatar 21 $('body').on('click', '#wpua-undo', function(e) {21 $('body').on('click', '#wpua-undo', function(e) { 22 22 e.preventDefault(); 23 23 $('#wpua-original').remove(); 24 $('#wpua- message, #wpua-undo-button').hide();24 $('#wpua-undo-button').hide(); 25 25 $('#wpua-remove-button, #wpua-thumbnail').show(); 26 26 $('#wpua-preview').find('img:first').attr('src', wpuaSrc).show(); -
wp-user-avatar/trunk/js/wp-user-avatar.js
r839423 r864355 1 eval(function(p,a,c,k,e,r) {e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('4 V(c,d,f){2.6.y={S:4(){T 2.6.G.N.8.C},W:4(a){x b=2.6.G.N;b.8.C=a;b.8.P=5(\'1n.o-1a\').A(\'m\').k(\'r\');O(b.8.C&&b.8.P){5(\'#2-s-t\',g.9.h).v(b.8.C);5(\'#0-w\',g.9.h).A(\'m\').k(\'r\',b.8.P).1c(\'10\',"");5(\'#0-L\',g.9.h).p();5(\'#0-B-n\',g.9.h).p();5(\'#0-l-n\',g.9.h).z();5(\'#0-H\',g.9.h).z();5(\'#I\',g.9.h).J(\'i\')}2.6.y.K().1d()},K:4(){O(3.7){T 3.7}3.7=2.6({M:\'11\',1r:[13 2.6.16.12({1b:d+": "+c})]});3.7.j(\'U\',4(){x a=3.M().S(\'u\');D=5(\'#2-s-t\').v();o=2.6.o(D);o.1s();a.X(o?[o]:[])},3.7);3.7.j(\'14:15:E\',4(a){3.17(a,{18:f})},3.7);3.7.M(\'11\').j(\'E\',3.E);T 3.7},E:4(a){x b=2.6.G.N,u=3.S(\'u\').19();2.6.y.W(u?u.D:-1)},Z:4(){5(\'Q\').j(\'i\',\'#0-X\',4(e){e.R();e.1e();2.6.y.K().U()})}};5(2.6.y.Z)}5(4($){$(\'#1f-1g\').k(\'1h\',\'1i/1j-1k\');O(1l(2)!=\'1m\'){V(F.1o,F.1p,F.1q)}x a=$(\'#2-s-t\').v();x b=$(\'#0-w\').A(\'m\').k(\'r\');$(\'Q\').j(\'i\',\'#0-l\',4(e){e.R();$(\'#0-q\').l();$(\'#0-l-n, #0-H\').z();$(\'#0-w\').A(\'m:Y\').z();$(\'#0-w\').1t(\'<m D="0-q" 10="1u" />\');$(\'#0-q\').k(\'r\',F.1v);$(\'#2-s-t\').v("");$(\'#0-L, #0-q, #0-B-n\').p();$(\'#I\').J(\'i\')});$(\'Q\').j(\'i\',\'#0-B\',4(e){e.R();$(\'#0-q\').l();$(\'#0-L, #0-B-n\').z();$(\'#0-l-n, #0-H\').p();$(\'#0-w\').A(\'m:Y\').k(\'r\',b).p();$(\'#2-s-t\').v(a);$(\'#I\').J(\'i\')})});',62,94,'wpua||wp|this|function|jQuery|media|_frame|post|parent|||||||window|document|click|on|attr|remove|img|button|attachment|show|original|src|user|avatar|selection|val|preview|var|wpUserAvatar|hide|find|undo|wpUserAvatarId|id|select|wpua_custom|view|thumbnail|wp_user_avatar_radio|trigger|frame|message|state|settings|if|wpUserAvatarSrc|body|preventDefault|get|return|open|wpuaMediaUploader|set|add|first|init|height|library|Library|new|toolbar|create|controller|createSelectToolbar|text|single|info|title|removeAttr|close|stopPropagation|your|profile|enctype|multipart|form|data|typeof|undefined|div|section|edit_image|select_image|states|fetch|prepend|98|avatar_thumb'.split('|'),0,{}))1 eval(function(p,a,c,k,e,r) {e=function(c) {return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)) {while(c--)r[e(c)]=k[c]||e(c);k=[function(e) {return r[e]}];e=function() {return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('4 V(c,d,f) {2.6.y={S:4() {T 2.6.G.N.8.C},W:4(a) {x b=2.6.G.N;b.8.C=a;b.8.P=5(\'1n.o-1a\').A(\'m\').k(\'r\');O(b.8.C&&b.8.P) {5(\'#2-s-t\',g.9.h).v(b.8.C);5(\'#0-w\',g.9.h).A(\'m\').k(\'r\',b.8.P).1c(\'10\',"");5(\'#0-L\',g.9.h).p();5(\'#0-B-n\',g.9.h).p();5(\'#0-l-n\',g.9.h).z();5(\'#0-H\',g.9.h).z();5(\'#I\',g.9.h).J(\'i\')}2.6.y.K().1d()},K:4() {O(3.7) {T 3.7}3.7=2.6({M:\'11\',1r:[13 2.6.16.12({1b:d+": "+c})]});3.7.j(\'U\',4() {x a=3.M().S(\'u\');D=5(\'#2-s-t\').v();o=2.6.o(D);o.1s();a.X(o?[o]:[])},3.7);3.7.j(\'14:15:E\',4(a) {3.17(a,{18:f})},3.7);3.7.M(\'11\').j(\'E\',3.E);T 3.7},E:4(a) {x b=2.6.G.N,u=3.S(\'u\').19();2.6.y.W(u?u.D:-1)},Z:4() {5(\'Q\').j(\'i\',\'#0-X\',4(e) {e.R();e.1e();2.6.y.K().U()})}};5(2.6.y.Z)}5(4($) {$(\'#1f-1g\').k(\'1h\',\'1i/1j-1k\');O(1l(2)!=\'1m\') {V(F.1o,F.1p,F.1q)}x a=$(\'#2-s-t\').v();x b=$(\'#0-w\').A(\'m\').k(\'r\');$(\'Q\').j(\'i\',\'#0-l\',4(e) {e.R();$(\'#0-q\').l();$(\'#0-l-n, #0-H\').z();$(\'#0-w\').A(\'m:Y\').z();$(\'#0-w\').1t(\'<m D="0-q" 10="1u" />\');$(\'#0-q\').k(\'r\',F.1v);$(\'#2-s-t\').v("");$(\'#0-L, #0-q, #0-B-n\').p();$(\'#I\').J(\'i\')});$(\'Q\').j(\'i\',\'#0-B\',4(e) {e.R();$(\'#0-q\').l();$(\'#0-L, #0-B-n\').z();$(\'#0-l-n, #0-H\').p();$(\'#0-w\').A(\'m:Y\').k(\'r\',b).p();$(\'#2-s-t\').v(a);$(\'#I\').J(\'i\')})});',62,94,'wpua||wp|this|function|jQuery|media|_frame|post|parent|||||||window|document|click|on|attr|remove|img|button|attachment|show|original|src|user|avatar|selection|val|preview|var|wpUserAvatar|hide|find|undo|wpUserAvatarId|id|select|wpua_custom|view|thumbnail|wp_user_avatar_radio|trigger|frame|message|state|settings|if|wpUserAvatarSrc|body|preventDefault|get|return|open|wpuaMediaUploader|set|add|first|init|height|library|Library|new|toolbar|create|controller|createSelectToolbar|text|single|info|title|removeAttr|close|stopPropagation|your|profile|enctype|multipart|form|data|typeof|undefined|div|section|edit_image|select_image|states|fetch|prepend|98|avatar_thumb'.split('|'),0,{})) -
wp-user-avatar/trunk/lang/wp-user-avatar-de_DE.po
r841199 r864355 5 5 msgid "" 6 6 msgstr "" 7 "Project-Id-Version: WP User Avatar 1. 7.2\n"7 "Project-Id-Version: WP User Avatar 1.8\n" 8 8 "Report-Msgid-Bugs-To: http://wordpress.org/plugins/wp-user-avatar/\n" 9 "PO-Revision-Date: 2014-0 1-1600:00-0000\n"9 "PO-Revision-Date: 2014-02-23 00:00-0000\n" 10 10 "Language: de_DE\n" 11 11 "Last-Translator: WP User Avatar\n" … … 15 15 "Content-Transfer-Encoding: 8bit\n" 16 16 17 #: wp-user-avatar.php:318 17 #: includes/class-wp-user-avatar-admin.php:175 18 msgid "Donate" 19 msgstr "Spenden" 20 21 #: includes/wpua-functions.php:279 18 22 msgid "Do you like WP User Avatar?" 19 23 msgstr "Bist Du mit WP-Benutzer-Avatar zufrieden?" 20 24 21 #: wp-user-avatar.php:31825 #: includes/wpua-functions.php:279 22 26 msgid "Make a donation." 23 27 msgstr "Spenden" 24 28 25 #: wp-user-avatar.php:411 26 #: wp-user-avatar.php:925 27 msgid "Click %s to save your changes" 28 msgstr "Klicken Sie %s, um Ihre Änderungen zu speichern" 29 30 #: wp-user-avatar.php:536 31 msgid "Donate" 32 msgstr "Spenden" 33 34 #: wp-user-avatar.php:999 29 #: includes/wpua-options-page.php:40 35 30 msgid "Add avatar button to Visual Editor" 36 31 msgstr "Einen Avatar-Knopf zum WYSIWYG-Editor hinzufügen" 37 32 38 #: wp-user-avatar.php:100533 #: includes/wpua-options-page.php:46 39 34 msgid "Allow Contributors & Subscribers to upload avatars" 40 35 msgstr "Mitarbeiter und Abonnenten erlauben, Avatare hochzuladen" 41 36 42 #: wp-user-avatar.php:101137 #: includes/wpua-options-page.php:52 43 38 msgid "Disable Gravatar and use only local avatars" 44 39 msgstr "Gravatar deaktivieren und nur lokale Avatare verwenden" 45 40 46 #: wp-user-avatar.php:102247 #: wp-user-avatar.php:102741 #: includes/wpua-options-page.php:63 42 #: includes/wpua-options-page.php:68 48 43 msgid "Upload Size Limit" 49 44 msgstr "Dateigrößenbeschränkung" 50 45 51 #: wp-user-avatar.php:102252 #: wp-user-avatar.php:102746 #: includes/wpua-options-page.php:63 47 #: includes/wpua-options-page.php:68 53 48 msgid "(only for Contributors & Subscribers)" 54 49 msgstr "(nur für Mitarbeiter und Abonnenten)" 55 50 56 #: wp-user-avatar.php:103751 #: includes/wpua-options-page.php:78 57 52 msgid "Allow users to edit avatars" 58 53 msgstr "Benutzer erlauben, Avatare bearbeiten" 59 54 60 #: wp-user-avatar.php:104355 #: includes/wpua-options-page.php:84 61 56 msgid "Resize avatars on upload" 62 57 msgstr "Resize Avatare beim Upload" 63 58 64 #: wp-user-avatar.php:105559 #: includes/wpua-options-page.php:96 65 60 msgid "Crop avatars to exact dimensions" 66 61 msgstr "Avatare auf exakte Größe beschneiden" -
wp-user-avatar/trunk/lang/wp-user-avatar-es_ES.po
r841199 r864355 5 5 msgid "" 6 6 msgstr "" 7 "Project-Id-Version: WP User Avatar 1. 7.2\n"7 "Project-Id-Version: WP User Avatar 1.8\n" 8 8 "Report-Msgid-Bugs-To: http://wordpress.org/plugins/wp-user-avatar/\n" 9 "PO-Revision-Date: 2014-0 1-1600:00-0000\n"9 "PO-Revision-Date: 2014-02-23 00:00-0000\n" 10 10 "Language: es_ES\n" 11 11 "Last-Translator: WP User Avatar\n" … … 15 15 "Content-Transfer-Encoding: 8bit\n" 16 16 17 #: wp-user-avatar.php:318 17 #: includes/class-wp-user-avatar-admin.php:175 18 msgid "Donate" 19 msgstr "Donar" 20 21 #: includes/wpua-functions.php:279 18 22 msgid "Do you like WP User Avatar?" 19 23 msgstr "¿Está satisfecho con WP-Usuario-Avatar?" 20 24 21 #: wp-user-avatar.php:31825 #: includes/wpua-functions.php:279 22 26 msgid "Make a donation." 23 27 msgstr "Donar" 24 28 25 #: wp-user-avatar.php:411 26 #: wp-user-avatar.php:925 27 msgid "Click %s to save your changes" 28 msgstr "Haz clic %s para guardar los cambios" 29 30 #: wp-user-avatar.php:536 31 msgid "Donate" 32 msgstr "Donar" 33 34 #: wp-user-avatar.php:999 29 #: includes/wpua-options-page.php:40 35 30 msgid "Add avatar button to Visual Editor" 36 31 msgstr "Añadir botón avatar al editor visual" 37 32 38 #: wp-user-avatar.php:100533 #: includes/wpua-options-page.php:46 39 34 msgid "Allow Contributors & Subscribers to upload avatars" 40 35 msgstr "Permitir los colaboradores y los suscriptores subir avatares" 41 36 42 #: wp-user-avatar.php:101137 #: includes/wpua-options-page.php:52 43 38 msgid "Disable Gravatar and use only local avatars" 44 39 msgstr "Desactivar Gravatar y utilizar sólo los avatares locales" 45 40 46 #: wp-user-avatar.php:102247 #: wp-user-avatar.php:102741 #: includes/wpua-options-page.php:63 42 #: includes/wpua-options-page.php:68 48 43 msgid "Upload Size Limit" 49 44 msgstr "Sube límite de tamaño" 50 45 51 #: wp-user-avatar.php:102252 #: wp-user-avatar.php:102746 #: includes/wpua-options-page.php:63 47 #: includes/wpua-options-page.php:68 53 48 msgid "(only for Contributors & Subscribers)" 54 49 msgstr "(para colaboradores y suscriptores)" 55 50 56 #: wp-user-avatar.php:103751 #: includes/wpua-options-page.php:78 57 52 msgid "Allow users to edit avatars" 58 53 msgstr "Permitir a los usuarios editar avatar" 59 54 60 #: wp-user-avatar.php:104355 #: includes/wpua-options-page.php:84 61 56 msgid "Resize avatars on upload" 62 57 msgstr "Cambiar el tamaño de avatares en carga" 63 58 64 #: wp-user-avatar.php:105559 #: includes/wpua-options-page.php:96 65 60 msgid "Crop avatars to exact dimensions" 66 61 msgstr "Recortar los avatares a sus dimensiones exactas" -
wp-user-avatar/trunk/lang/wp-user-avatar-fr_FR.po
r841199 r864355 5 5 msgid "" 6 6 msgstr "" 7 "Project-Id-Version: WP User Avatar 1. 7.2\n"7 "Project-Id-Version: WP User Avatar 1.8\n" 8 8 "Report-Msgid-Bugs-To: http://wordpress.org/plugins/wp-user-avatar/\n" 9 "PO-Revision-Date: 2014-0 1-1600:00-0000\n"9 "PO-Revision-Date: 2014-02-23 00:00-0000\n" 10 10 "Language: fr_FR\n" 11 11 "Last-Translator: WP User Avatar\n" … … 15 15 "Content-Transfer-Encoding: 8bit\n" 16 16 17 #: wp-user-avatar.php:318 17 #: includes/class-wp-user-avatar-admin.php:175 18 msgid "Donate" 19 msgstr "Faites un don" 20 21 #: includes/wpua-functions.php:279 18 22 msgid "Do you like WP User Avatar?" 19 23 msgstr "Etes-vous satisfait avec WP-Utilisateur-Avatar?" 20 24 21 #: wp-user-avatar.php:31825 #: includes/wpua-functions.php:279 22 26 msgid "Make a donation." 23 27 msgstr "Faites un don" 24 28 25 #: wp-user-avatar.php:411 26 #: wp-user-avatar.php:925 27 msgid "Click %s to save your changes" 28 msgstr "Cliquez sur %s pour enregistrer vos modifications" 29 30 #: wp-user-avatar.php:536 31 msgid "Donate" 32 msgstr "Faites un don" 33 34 #: wp-user-avatar.php:999 29 #: includes/wpua-options-page.php:40 35 30 msgid "Add avatar button to Visual Editor" 36 31 msgstr "Ajouter le bouton avatar sur l'éditeur visuel" 37 32 38 #: wp-user-avatar.php:100533 #: includes/wpua-options-page.php:46 39 34 msgid "Allow Contributors & Subscribers to upload avatars" 40 35 msgstr "Permettre aux contributeurs et aux abonnés d'envoyer des avatars" 41 36 42 #: wp-user-avatar.php:101137 #: includes/wpua-options-page.php:52 43 38 msgid "Disable Gravatar and use only local avatars" 44 39 msgstr "Désactiver Gravatar et utiliser les avatars fournis" 45 40 46 #: wp-user-avatar.php:102247 #: wp-user-avatar.php:102741 #: includes/wpua-options-page.php:63 42 #: includes/wpua-options-page.php:68 48 43 msgid "Upload Size Limit" 49 44 msgstr "Taille limite d'envoi de fichiers" 50 45 51 #: wp-user-avatar.php:102252 #: wp-user-avatar.php:102746 #: includes/wpua-options-page.php:63 47 #: includes/wpua-options-page.php:68 53 48 msgid "(only for Contributors & Subscribers)" 54 49 msgstr "(pour contributeurs et abonnés)" 55 50 56 #: wp-user-avatar.php:103751 #: includes/wpua-options-page.php:78 57 52 msgid "Allow users to edit avatars" 58 53 msgstr "Permettre aux utilisateurs de modifier avatar" 59 54 60 #: wp-user-avatar.php:104355 #: includes/wpua-options-page.php:84 61 56 msgid "Resize avatars on upload" 62 57 msgstr "Redimensionner avatars lors du téléchargement" 63 58 64 #: wp-user-avatar.php:103759 #: includes/wpua-options-page.php:78 65 60 msgid "Crop avatars to exact dimensions" 66 61 msgstr "Recadrer les avatars pour parvenir aux dimensions exactes" -
wp-user-avatar/trunk/lang/wp-user-avatar-pl_PL.po
r841199 r864355 5 5 msgid "" 6 6 msgstr "" 7 "Project-Id-Version: WP User Avatar 1. 7.2\n"7 "Project-Id-Version: WP User Avatar 1.8\n" 8 8 "Report-Msgid-Bugs-To: http://wordpress.org/plugins/wp-user-avatar/\n" 9 "PO-Revision-Date: 2014-0 1-1600:00-0000\n"9 "PO-Revision-Date: 2014-02-23 00:00-0000\n" 10 10 "Language: de_DE\n" 11 11 "Last-Translator: WP User Avatar\n" … … 15 15 "Content-Transfer-Encoding: 8bit\n" 16 16 17 #: wp-user-avatar.php:318 17 #: includes/class-wp-user-avatar-admin.php:175 18 msgid "Donate" 19 msgstr "Dotuj" 20 21 #: includes/wpua-functions.php:279 18 22 msgid "Do you like WP User Avatar?" 19 23 msgstr "Jesteś zadowolony z Wp User Avatar" 20 24 21 #: wp-user-avatar.php:31825 #: includes/wpua-functions.php:279 22 26 msgid "Make a donation." 23 27 msgstr "Dokonaj dotacji" 24 28 25 #: wp-user-avatar.php:411 26 #: wp-user-avatar.php:925 27 msgid "Click %s to save your changes" 28 msgstr "Kliknij %s, by zachować ustawienia" 29 30 #: wp-user-avatar.php:536 31 msgid "Donate" 32 msgstr "Dotuj" 33 34 #: wp-user-avatar.php:999 29 #: includes/wpua-options-page.php:40 35 30 msgid "Add avatar button to Visual Editor" 36 31 msgstr "Dodaj przycisk avatara do edytora wizualnego" 37 32 38 #: wp-user-avatar.php:100533 #: includes/wpua-options-page.php:46 39 34 msgid "Allow Contributors & Subscribers to upload avatars" 40 35 msgstr "Pozwalaj kontrybutorom oraz subskrynentom przesyłać awatary" 41 36 42 #: wp-user-avatar.php:101137 #: includes/wpua-options-page.php:52 43 38 msgid "Disable Gravatar and use only local avatars" 44 39 msgstr "Wyłącz gravatary i używaj tylko lokalnych awatarów" 45 40 46 #: wp-user-avatar.php:102247 #: wp-user-avatar.php:102741 #: includes/wpua-options-page.php:63 42 #: includes/wpua-options-page.php:68 48 43 msgid "Upload Size Limit" 49 44 msgstr "Limit wielkości pliku" 50 45 51 #: wp-user-avatar.php:102252 #: wp-user-avatar.php:102746 #: includes/wpua-options-page.php:63 47 #: includes/wpua-options-page.php:68 53 48 msgid "(only for Contributors & Subscribers)" 54 49 msgstr "(tylko dla subskrynentów i kontrybutorów)" 55 50 56 #: wp-user-avatar.php:103751 #: includes/wpua-options-page.php:78 57 52 msgid "Allow users to edit avatars" 58 53 msgstr "Pozwalaj użytkownikom edytować awatary" 59 54 60 #: wp-user-avatar.php:104355 #: includes/wpua-options-page.php:84 61 56 msgid "Resize avatars on upload" 62 57 msgstr "Zmieniaj rozmiar po przesłaniu" 63 58 64 #: wp-user-avatar.php:105559 #: includes/wpua-options-page.php:96 65 60 msgid "Crop avatars to exact dimensions" 66 61 msgstr "Przytnij awatar do dokładnych rozmiarów" -
wp-user-avatar/trunk/lang/wp-user-avatar-sv_SE.po
r841199 r864355 5 5 msgid "" 6 6 msgstr "" 7 "Project-Id-Version: WP User Avatar 1. 7.2\n"7 "Project-Id-Version: WP User Avatar 1.8\n" 8 8 "Report-Msgid-Bugs-To: http://wordpress.org/plugins/wp-user-avatar/\n" 9 "PO-Revision-Date: 2014-0 1-1600:00-0000\n"9 "PO-Revision-Date: 2014-02-23 00:00-0000\n" 10 10 "Language: sv_SE\n" 11 11 "Last-Translator: Mattias Tengblad <[email protected]>\n" … … 15 15 "Content-Transfer-Encoding: 8bit\n" 16 16 17 #: wp-user-avatar.php:318 17 #: includes/class-wp-user-avatar-admin.php:175 18 msgid "Donate" 19 msgstr "Donera" 20 21 #: includes/wpua-functions.php:279 18 22 msgid "Do you like WP User Avatar?" 19 23 msgstr "Är du nöjd med Visningsbild (avatar)?" 20 24 21 #: wp-user-avatar.php:31825 #: includes/wpua-functions.php:279 22 26 msgid "Make a donation." 23 27 msgstr "Donera" 24 28 25 #: wp-user-avatar.php:411 26 #: wp-user-avatar.php:925 27 msgid "Click %s to save your changes" 28 msgstr "Klicka på %s för att spara dina ändringar" 29 30 #: wp-user-avatar.php:536 31 msgid "Donate" 32 msgstr "Donera" 33 34 #: wp-user-avatar.php:999 29 #: includes/wpua-options-page.php:40 35 30 msgid "Add avatar button to Visual Editor" 36 31 msgstr "Lägg till knapp för avatarer i den visuella redigeraren" 37 32 38 #: wp-user-avatar.php:100533 #: includes/wpua-options-page.php:46 39 34 msgid "Allow Contributors & Subscribers to upload avatars" 40 35 msgstr "Tillåt medarbetare & prenumeranter att ladda upp avatarer" 41 36 42 #: wp-user-avatar.php:101137 #: includes/wpua-options-page.php:52 43 38 msgid "Disable Gravatar and use only local avatars" 44 39 msgstr "Inaktivera Gravatar och använd endast lokala avatarer" 45 40 46 #: wp-user-avatar.php:102247 #: wp-user-avatar.php:102741 #: includes/wpua-options-page.php:63 42 #: includes/wpua-options-page.php:68 48 43 msgid "Upload Size Limit" 49 44 msgstr "Storleksgräns för uppladdningar" 50 45 51 #: wp-user-avatar.php:102252 #: wp-user-avatar.php:102746 #: includes/wpua-options-page.php:63 47 #: includes/wpua-options-page.php:68 53 48 msgid "(only for Contributors & Subscribers)" 54 49 msgstr "(endast för medarbetare & prenumeranter)" 55 50 56 #: wp-user-avatar.php:103751 #: includes/wpua-options-page.php:78 57 52 msgid "Allow users to edit avatars" 58 53 msgstr "Tillåt användare att redigera avatarer" 59 54 60 #: wp-user-avatar.php:104355 #: includes/wpua-options-page.php:84 61 56 msgid "Resize avatars on upload" 62 57 msgstr "Ändra storlek på avatarer på uppladdning" 63 58 64 #: wp-user-avatar.php:105559 #: includes/wpua-options-page.php:96 65 60 msgid "Crop avatars to exact dimensions" 66 61 msgstr "Beskär avatarer till exakta dimensioner" -
wp-user-avatar/trunk/readme.txt
r842810 r864355 4 4 Donate link: http://siboliban.org/donate 5 5 Tags: author image, author photo, author avatar, avatar, bbPress, profile avatar, profile image, user avatar, user image, user photo 6 Requires at least: 3. 57 Tested up to: 3.8 8 Stable tag: 1. 7.26 Requires at least: 3.6 7 Tested up to: 3.8.1 8 Stable tag: 1.8 9 9 License: GPLv2 or later 10 10 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 21 21 * Show the user's [Gravatar](http://gravatar.com/) avatar or Default Avatar if the user doesn't have a WP User Avatar image. 22 22 * Disable [Gravatar](http://gravatar.com/) avatars and use only local avatars. 23 * Use the <code>[avatar]</code> shortcode in your posts. The shortcode will work with any theme, whether it has avatar support or not. 23 * Use the <code>[avatar_upload]</code> shortcode to add a standalone uploader to a front page. This uploader is only visible to logged-in users. 24 * Use the <code>[avatar]</code> shortcode in your posts. These shortcodes will work with any theme, whether it has avatar support or not. 24 25 * Allow Contributors and Subscribers to upload their own avatars. 25 26 * Limit upload file size and image dimensions for Contributors and Subscribers. … … 33 34 5. Upload your own Default Avatar in your WP User Avatar settings (optional). You can also allow Contributors & Subscribers to upload avatars and disable Gravatar. 34 35 6. Choose a theme that has avatar support. In your theme, manually replace <code>get_avatar</code> with <code>get_wp_user_avatar</code> or leave <code>get_avatar</code> as-is. [Read about the differences here](http://wordpress.org/extend/plugins/wp-user-avatar/faq/). 35 7. You can also use the <code>[avatar ]</code> shortcode in your posts. The shortcodewill work with any theme, whether it has avatar support or not.36 7. You can also use the <code>[avatar_upload]</code> and <code>[avatar]</code> shortcodes in your posts. These shortcodes will work with any theme, whether it has avatar support or not. 36 37 37 38 **Example Usage** … … 90 91 91 92 **Other Available Functions** 93 94 = [avatar_upload] shortcode = 95 96 You can use the <code>[avatar_upload]</code> shortcode to add a standalone uploader to a front page. This uploader is only visible to logged-in users. If you want to integrate the uploader into a profile edit page, see [Other Notes](http://wordpress.org/plugins/wp-user-avatar/other_notes/). 92 97 93 98 = [avatar] shortcode = … … 178 183 For Administrators, WP User Avatar adds a column with avatar thumbnails to your Users list table. If "Show Avatars" is enabled in your WP User Avatar settings, you will see avatars to the left of each username instead of in a new column. 179 184 185 = Can I use the WP User Avatar uploader in a front page? = 186 187 Yes, you can use the <code>[avatar_upload]</code> shortcode to put a standalone uploader in a front page. This uploader is only visible to logged-in users. If you want to integrate the uploader into a profile edit page, see [Other Notes](http://wordpress.org/plugins/wp-user-avatar/other_notes/). 188 180 189 = Can I insert WP User Avatar directly into a post? = 181 190 … … 261 270 Then, to add WP User Avatar to that hook and remove it from the other hooks outside of the administration panel, you would add this code to the <code>functions.php</code> file of your theme: 262 271 263 `function my_avatar_filter() {272 `function my_avatar_filter() { 264 273 // Remove from show_user_profile hook 265 274 remove_action('show_user_profile', array('wp_user_avatar', 'wpua_action_show_user_profile')); 266 remove_action('show_user_profile', array('wp_user_avatar', 'wpua_media_upload_scripts'));267 275 268 276 // Remove from edit_user_profile hook 269 277 remove_action('edit_user_profile', array('wp_user_avatar', 'wpua_action_show_user_profile')); 270 remove_action('edit_user_profile', array('wp_user_avatar', 'wpua_media_upload_scripts'));271 278 272 279 // Add to edit_user_avatar hook 273 280 add_action('edit_user_avatar', array('wp_user_avatar', 'wpua_action_show_user_profile')); 274 add_action('edit_user_avatar', array('wp_user_avatar', 'wpua_media_upload_scripts'));275 281 } 282 276 283 // Loads only outside of administration panel 277 if(!is_admin()) {278 add_action(' plugins_loaded','my_avatar_filter');284 if(!is_admin()) { 285 add_action('init','my_avatar_filter');` 279 286 }` 280 287 … … 306 313 <button type="button" class="button" id="wpua-undo" name="wpua-undo">Undo</button> 307 314 </p> 308 <p id="wpua-message">309 Click “Update Profile” to save your changes310 </p>311 315 </td> 312 316 </tr> … … 320 324 To add your own wrapper, you could create something like this: 321 325 322 `function my_before_avatar() {326 `function my_before_avatar() { 323 327 echo '<div id="my-avatar">'; 324 328 } 325 329 add_action('wpua_before_avatar', 'my_before_avatar'); 326 330 327 function my_after_avatar() {331 function my_after_avatar() { 328 332 echo '</div>'; 329 333 } … … 351 355 <button type="button" class="button" id="wpua-undo" name="wpua-undo">Undo</button> 352 356 </p> 353 <p id="wpua-message">354 Click “Update Profile” to save your changes355 </p>356 357 </div>` 357 358 … … 362 363 3. WP User Avatar adds a field to your profile edit page. 363 364 4. After you've chosen a WP User Avatar image, you will see the option to remove it. 364 5. WP User Avatar adds a button to insert the [avatar] shortcode in the Visual Editor.365 6. Options for the [avatar] shortcode.366 365 367 366 == Changelog == 367 368 = 1.8 = 369 * Add: Front page uploader 370 * Add: Media Library view of all avatars 371 * Bug Fix: Identify public static functions 372 * Update: Refactor code into separate classes 373 * Update: Translations 368 374 369 375 = 1.7.2 = … … 477 483 478 484 = 1.3.4 = 479 * Update: Change support only to WP 3.3+ because of jQuery 1. 7.2.1 support485 * Update: Change support only to WP 3.3+ because of jQuery 1.8.1 support 480 486 481 487 = 1.3.3 = … … 524 530 * Add: Default Avatar setting 525 531 526 = 1.1. 7.2=532 = 1.1.8 = 527 533 * Bug Fix: Change update_usermeta to update_user_meta 528 534 … … 568 574 == Upgrade Notice == 569 575 576 = 1.8 = 577 * New Feature: Front page uploader 578 * New Feature: Media Library view of all avatars 579 570 580 = 1.5.3 = 571 581 * Notice: WP User Avatar 1.5.3 only supports WordPress 3.5 and above. If you are using an older version of WordPress, please upgrade your version of WordPress first. -
wp-user-avatar/trunk/uninstall.php
r841199 r864355 2 2 /** 3 3 * @package WP User Avatar 4 * @version 1. 7.24 * @version 1.8 5 5 */ 6 6 7 7 // Remove user metadata and options on plugin delete 8 if(!defined('WP_UNINSTALL_PLUGIN')) {8 if(!defined('WP_UNINSTALL_PLUGIN')) { 9 9 die(__('You are not allowed to call this page directly.')); 10 10 } … … 12 12 global $wpdb, $blog_id, $switched; 13 13 $users = get_users(); 14 14 15 // Remove settings for all sites in multisite 15 if(is_multisite()) {16 if(is_multisite()) { 16 17 $blogs = $wpdb->get_results("SELECT * FROM $wpdb->blogs"); 17 foreach($users as $user) {18 foreach($blogs as $blog) {18 foreach($users as $user) { 19 foreach($blogs as $blog) { 19 20 delete_user_meta($user->ID, $wpdb->get_blog_prefix($blog->blog_id).'user_avatar'); 20 21 } 21 22 } 22 foreach($blogs as $blog) {23 foreach($blogs as $blog) { 23 24 switch_to_blog($blog->blog_id); 24 25 delete_option('avatar_default_wp_user_avatar'); … … 38 39 } 39 40 } else { 40 foreach($users as $user) {41 foreach($users as $user) { 41 42 delete_user_meta($user->ID, $wpdb->get_blog_prefix($blog_id).'user_avatar'); 42 43 } … … 56 57 delete_option('wp_user_avatar_users_updated'); 57 58 } 59 58 60 // Delete post meta 59 61 delete_post_meta_by_key('_wp_attachment_wp_user_avatar'); 62 60 63 // Reset all default avatars to Mystery Man 61 64 update_option('avatar_default', 'mystery'); 62 ?> -
wp-user-avatar/trunk/wp-user-avatar.php
r842809 r864355 2 2 /** 3 3 * @package WP User Avatar 4 * @version 1. 7.24 * @version 1.8 5 5 */ 6 6 7 /* 7 8 Plugin Name: WP User Avatar … … 10 11 Author: Bangbay Siboliban 11 12 Author URI: http://siboliban.org/ 12 Version: 1. 7.213 Version: 1.8 13 14 Text Domain: wp-user-avatar 14 15 Domain Path: /lang/ … … 20 21 } 21 22 22 // Define paths and variables23 define('WPUA_VERSION', ' 1.7.2');23 // Define paths 24 define('WPUA_VERSION', '1.8'); 24 25 define('WPUA_FOLDER', basename(dirname(__FILE__))); 25 define('WPUA_ABSPATH', trailingslashit(str_replace('\\', '/', WP_PLUGIN_DIR.'/'.WPUA_FOLDER))); 26 define('WPUA_URLPATH', trailingslashit(plugins_url(WPUA_FOLDER))); 26 define('WPUA_DIR', plugin_dir_path(__FILE__)); 27 define('WPUA_INC', WPUA_DIR.'includes'.'/'); 28 define('WPUA_URL', plugin_dir_url(WPUA_FOLDER).WPUA_FOLDER.'/'); 29 define('WPUA_INC_URL', WPUA_URL.'includes'.'/'); 27 30 28 // Include WordPress functions31 // WordPress includes used in plugin 29 32 require_once(ABSPATH.'wp-admin/includes/file.php'); 30 33 require_once(ABSPATH.'wp-admin/includes/image.php'); … … 33 36 require_once(ABSPATH.'wp-admin/includes/template.php'); 34 37 35 // Define global variables36 $avatar_default = get_option('avatar_default');37 $show_avatars = get_option('show_avatars');38 $wpua_allow_upload = get_option('wp_user_avatar_allow_upload');39 $wpua_avatar_default = get_option('avatar_default_wp_user_avatar');40 $wpua_disable_gravatar = get_option('wp_user_avatar_disable_gravatar');41 $wpua_edit_avatar = get_option('wp_user_avatar_edit_avatar');42 $wpua_resize_crop = get_option('wp_user_avatar_resize_crop');43 $wpua_resize_h = get_option('wp_user_avatar_resize_h');44 $wpua_resize_upload = get_option('wp_user_avatar_resize_upload');45 $wpua_resize_w = get_option('wp_user_avatar_resize_w');46 $wpua_tinymce = get_option('wp_user_avatar_tinymce');47 $mustache_original = WPUA_URLPATH.'images/wpua.png';48 $mustache_medium = WPUA_URLPATH.'images/wpua-300x300.png';49 $mustache_thumbnail = WPUA_URLPATH.'images/wpua-150x150.png';50 $mustache_avatar = WPUA_URLPATH.'images/wpua-96x96.png';51 $mustache_admin = WPUA_URLPATH.'images/wpua-32x32.png';52 53 // Check for updates54 $wpua_default_avatar_updated = get_option('wp_user_avatar_default_avatar_updated');55 $wpua_users_updated = get_option('wp_user_avatar_users_updated');56 $wpua_media_updated = get_option('wp_user_avatar_media_updated');57 58 // Server upload size limit59 $upload_size_limit = wp_max_upload_size();60 // Convert to KB61 if($upload_size_limit > 1024){62 $upload_size_limit /= 1024;63 }64 $upload_size_limit_with_units = (int) $upload_size_limit.'KB';65 66 // User upload size limit67 $wpua_user_upload_size_limit = get_option('wp_user_avatar_upload_size_limit');68 if($wpua_user_upload_size_limit == 0 || $wpua_user_upload_size_limit > wp_max_upload_size()){69 $wpua_user_upload_size_limit = wp_max_upload_size();70 }71 // Value in bytes72 $wpua_upload_size_limit = $wpua_user_upload_size_limit;73 // Convert to KB74 if($wpua_user_upload_size_limit > 1024){75 $wpua_user_upload_size_limit /= 1024;76 }77 $wpua_upload_size_limit_with_units = (int) $wpua_user_upload_size_limit.'KB';78 79 // Check for custom image sizes80 $all_sizes = array_merge(get_intermediate_image_sizes(), array('original'));81 82 // Load add-ons83 if((bool) $wpua_tinymce == 1){84 include_once(WPUA_ABSPATH.'includes/tinymce.php');85 }86 87 // Load translations88 load_plugin_textdomain('wp-user-avatar', "", WPUA_FOLDER.'/lang');89 90 // Initialize default settings91 register_activation_hook(WPUA_ABSPATH.'wp-user-avatar.php', 'wpua_options');92 93 // Remove subscribers edit_posts capability94 register_deactivation_hook(WPUA_ABSPATH.'wp-user-avatar.php', 'wpua_deactivate');95 96 // Settings saved to wp_options97 function wpua_options(){98 add_option('avatar_default_wp_user_avatar', "");99 add_option('wp_user_avatar_allow_upload', '0');100 add_option('wp_user_avatar_disable_gravatar', '0');101 add_option('wp_user_avatar_edit_avatar', '1');102 add_option('wp_user_avatar_resize_crop', '0');103 add_option('wp_user_avatar_resize_h', '96');104 add_option('wp_user_avatar_resize_upload', '0');105 add_option('wp_user_avatar_resize_w', '96');106 add_option('wp_user_avatar_tinymce', '1');107 add_option('wp_user_avatar_upload_size_limit', '0');108 }109 add_action('admin_init', 'wpua_options');110 111 // Update default avatar to new format112 if(empty($wpua_default_avatar_updated)){113 function wpua_default_avatar(){114 global $avatar_default, $mustache_original, $wpua_avatar_default;115 // If default avatar is the old mustache URL, update it116 if($avatar_default == $mustache_original){117 update_option('avatar_default', 'wp_user_avatar');118 }119 // If user had an image URL as the default avatar, replace with ID instead120 if(!empty($wpua_avatar_default)){121 $wpua_avatar_default_image = wp_get_attachment_image_src($wpua_avatar_default, 'medium');122 if($avatar_default == $wpua_avatar_default_image[0]){123 update_option('avatar_default', 'wp_user_avatar');124 }125 }126 update_option('wp_user_avatar_default_avatar_updated', '1');127 }128 add_action('admin_init', 'wpua_default_avatar');129 }130 131 // Rename user meta to match database settings132 if(empty($wpua_users_updated)){133 function wpua_user_meta(){134 global $blog_id, $wpdb;135 $wpua_metakey = $wpdb->get_blog_prefix($blog_id).'user_avatar';136 // If database tables start with something other than wp_137 if($wpua_metakey != 'wp_user_avatar'){138 $users = get_users();139 // Move current user metakeys to new metakeys140 foreach($users as $user){141 $wpua = get_user_meta($user->ID, 'wp_user_avatar', true);142 if(!empty($wpua)){143 update_user_meta($user->ID, $wpua_metakey, $wpua);144 delete_user_meta($user->ID, 'wp_user_avatar');145 }146 }147 }148 update_option('wp_user_avatar_users_updated', '1');149 }150 add_action('admin_init', 'wpua_user_meta');151 }152 153 // Add media state to existing avatars154 if(empty($wpua_media_updated)){155 function wpua_media_state(){156 global $blog_id, $wpdb;157 // Find all users with WPUA158 $wpua_metakey = $wpdb->get_blog_prefix($blog_id).'user_avatar';159 $wpuas = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value != %d AND meta_value != %d", $wpua_metakey, 0, ""));160 foreach($wpuas as $usermeta){161 add_post_meta($usermeta->meta_value, '_wp_attachment_wp_user_avatar', $usermeta->user_id);162 }163 update_option('wp_user_avatar_media_updated', '1');164 }165 add_action('admin_init', 'wpua_media_state');166 }167 168 // Settings for Subscribers169 if((bool) $wpua_allow_upload == 1){170 // Allow multipart data in form171 function wpua_add_edit_form_multipart_encoding(){172 echo ' enctype="multipart/form-data"';173 }174 add_action('user_edit_form_tag', 'wpua_add_edit_form_multipart_encoding');175 176 // Check user role177 function wpua_check_user_role($role, $user_id=null){178 global $current_user;179 $user = is_numeric($user_id) ? get_userdata($user_id) : $current_user->ID;180 if(empty($user)){181 return false;182 }183 return in_array($role, (array) $user->roles);184 }185 186 // Remove menu items187 function wpua_subscriber_remove_menu_pages(){188 global $current_user;189 if(wpua_check_user_role('subscriber', $current_user->ID)){190 remove_menu_page('edit.php');191 remove_menu_page('edit-comments.php');192 remove_menu_page('tools.php');193 }194 }195 add_action('admin_menu', 'wpua_subscriber_remove_menu_pages');196 197 // Remove menu bar items198 function wpua_subscriber_remove_menu_bar_items(){199 global $current_user, $wp_admin_bar;200 if(wpua_check_user_role('subscriber', $current_user->ID)){201 $wp_admin_bar->remove_menu('comments');202 $wp_admin_bar->remove_menu('new-content');203 }204 }205 add_action('wp_before_admin_bar_render', 'wpua_subscriber_remove_menu_bar_items');206 207 // Remove dashboard items208 function wpua_subscriber_remove_dashboard_widgets(){209 global $current_user;210 if(wpua_check_user_role('subscriber', $current_user->ID)){211 remove_meta_box('dashboard_quick_press', 'dashboard', 'side');212 remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side');213 remove_meta_box('dashboard_right_now', 'dashboard', 'normal');214 }215 }216 add_action('wp_dashboard_setup', 'wpua_subscriber_remove_dashboard_widgets');217 218 // Restrict access to pages219 function wpua_subscriber_offlimits(){220 global $current_user, $pagenow, $wpua_edit_avatar;221 if((bool) $wpua_edit_avatar == 1){222 $offlimits = array('edit.php', 'edit-comments.php', 'post-new.php', 'tools.php');223 } else {224 $offlimits = array('edit.php', 'edit-comments.php', 'post.php', 'post-new.php', 'tools.php');225 }226 if(wpua_check_user_role('subscriber', $current_user->ID)){227 if(in_array($pagenow, $offlimits)){228 do_action('admin_page_access_denied');229 wp_die(__('You do not have sufficient permissions to access this page.'));230 }231 }232 }233 add_action('admin_init', 'wpua_subscriber_offlimits');234 }235 236 if((bool) $wpua_allow_upload == 1 && (bool) $wpua_edit_avatar == 1){237 // Give subscribers edit_posts capability238 function wpua_subscriber_add_cap(){239 global $blog_id, $wpdb;240 $wp_user_roles = $wpdb->get_blog_prefix($blog_id).'user_roles';241 $user_roles = get_option($wp_user_roles);242 $user_roles['subscriber']['capabilities']['edit_posts'] = true;243 update_option($wp_user_roles, $user_roles);244 }245 add_action('admin_init', 'wpua_subscriber_add_cap');246 }247 248 // Remove subscribers edit_posts capability249 function wpua_subscriber_remove_cap(){250 global $blog_id, $wpdb;251 $wp_user_roles = $wpdb->get_blog_prefix($blog_id).'user_roles';252 $user_roles = get_option($wp_user_roles);253 unset($user_roles['subscriber']['capabilities']['edit_posts']);254 update_option($wp_user_roles, $user_roles);255 }256 257 // On deactivation258 function wpua_deactivate(){259 // Remove subscribers edit_posts capability260 wpua_subscriber_remove_cap();261 // Reset all default avatar to Mystery Man262 update_option('avatar_default', 'mystery');263 }264 265 // Before wrapper for profile266 function wpua_before_avatar(){267 do_action('wpua_before_avatar');268 }269 270 // After wrapper for profile271 function wpua_after_avatar(){272 do_action('wpua_after_avatar');273 }274 275 // Before avatar container276 function wpua_do_before_avatar(){ ?>277 <?php if(class_exists('bbPress') && bbp_is_edit()) : // Add to bbPress profile with same style ?>278 <h2 class="entry-title"><?php _e('Avatar'); ?></h2>279 <fieldset class="bbp-form">280 <legend><?php _e('Image'); ?></legend>281 <?php elseif(class_exists('WPUF_Main') && is_page()) : // Add to WP User Frontend profile with same style ?>282 <fieldset>283 <legend><?php _e('Avatar') ?></legend>284 <table class="wpuf-table">285 <tr>286 <th><label for="wp_user_avatar"><?php _e('Image'); ?></label></th>287 <td>288 <?php else : // Add to profile with admin style ?>289 <h3><?php _e('Avatar') ?></h3>290 <table class="form-table">291 <tr>292 <th><label for="wp_user_avatar"><?php _e('Image'); ?></label></th>293 <td>294 <?php endif; ?>295 <?php296 }297 298 // After avatar container299 function wpua_do_after_avatar(){ ?>300 <?php if(class_exists('bbPress') && bbp_is_edit()) : // Add to bbPress profile with same style ?>301 </fieldset>302 <?php elseif(class_exists('WPUF_Main') && is_page()) : // Add to WP User Frontend profile with same style ?>303 </td>304 </tr>305 </table>306 </fieldset>307 <?php else : // Add to profile with admin style ?>308 </td>309 </tr>310 </table>311 <?php endif; ?>312 <?php313 }314 315 // Donate message316 function wpua_do_donation_message(){ ?>317 <div class="updated">318 <p><?php _e('Do you like WP User Avatar?', 'wp-user-avatar'); ?> <a href="http://siboliban.org/donate" target="_blank"><?php _e('Make a donation.', 'wp-user-avatar'); ?></a></p>319 </div>320 <?php321 }322 323 // Filter for the inevitable complaints about the donation message324 function wpua_donation_message(){325 do_action('wpua_donation_message');326 }327 328 38 // WP User Avatar 329 if(!class_exists('wp_user_avatar')){ 330 class wp_user_avatar{ 331 function wp_user_avatar(){ 332 global $current_screen, $current_user, $pagenow, $show_avatars, $wpua_allow_upload, $wpua_resize_upload, $wpua_upload_size_limit; 333 // Add WPUA to profile 334 if(current_user_can('upload_files') || ((bool) $wpua_allow_upload == 1 && is_user_logged_in())){ 335 // Profile functions and scripts 336 add_action('show_user_profile', array('wp_user_avatar', 'wpua_action_show_user_profile')); 337 add_action('edit_user_profile', array($this, 'wpua_action_show_user_profile')); 338 add_action('personal_options_update', array($this, 'wpua_action_process_option_update')); 339 add_action('edit_user_profile_update', array($this, 'wpua_action_process_option_update')); 340 add_action('show_user_profile', array($this, 'wpua_media_upload_scripts')); 341 add_action('edit_user_profile', array($this, 'wpua_media_upload_scripts')); 342 // Admin scripts 343 if($pagenow == 'options-discussion.php' || ($pagenow == 'options-general.php' && isset($_GET['page']) && $_GET['page'] == 'wp-user-avatar')){ 344 add_action('admin_enqueue_scripts', array($this, 'wpua_media_upload_scripts')); 345 } 346 if(!current_user_can('upload_files')){ 347 // Upload errors 348 add_action('user_profile_update_errors', array($this, 'wpua_upload_errors'), 10, 3); 349 // Prefilter upload size 350 add_filter('wp_handle_upload_prefilter', array($this, 'wpua_handle_upload_prefilter')); 351 } 352 // Admin menu settings 353 add_action('admin_menu', 'wpua_admin'); 354 add_filter('plugin_action_links', array($this, 'wpua_action_links'), 10, 2); 355 add_filter('plugin_row_meta', array($this, 'wpua_row_meta'), 10, 2); 356 // Hide column in Users table if default avatars are enabled 357 if((bool) $show_avatars == 0 && is_admin()){ 358 add_filter('manage_users_columns', array($this, 'wpua_add_column'), 10, 1); 359 add_filter('manage_users_custom_column', array($this, 'wpua_show_column'), 10, 3); 360 } 361 // Profile wrappers 362 add_action('wpua_before_avatar', 'wpua_do_before_avatar'); 363 add_action('wpua_after_avatar', 'wpua_do_after_avatar'); 364 // Donate message 365 add_action('wpua_donation_message', 'wpua_do_donation_message'); 366 } 367 } 368 // Add to edit user profile 369 public static function wpua_action_show_user_profile($user){ 370 global $blog_id, $current_user, $post, $show_avatars, $wpdb, $wpua_allow_upload, $wpua_edit_avatar, $wpua_upload_size_limit_with_units; 371 // Get WPUA attachment ID 372 $wpua = get_user_meta($user->ID, $wpdb->get_blog_prefix($blog_id).'user_avatar', true); 373 // Show remove button if WPUA is set 374 $hide_remove = !has_wp_user_avatar($user->ID) ? ' wpua-hide' : ""; 375 // If avatars are enabled, get original avatar image or show blank 376 $avatar_medium_src = (bool) $show_avatars == 1 ? wpua_get_avatar_original($user->user_email, 96) : includes_url().'images/blank.gif'; 377 // Check if user has wp_user_avatar, if not show image from above 378 $avatar_medium = has_wp_user_avatar($user->ID) ? get_wp_user_avatar_src($user->ID, 'medium') : $avatar_medium_src; 379 // Check if user has wp_user_avatar, if not show image from above 380 $avatar_thumbnail = has_wp_user_avatar($user->ID) ? get_wp_user_avatar_src($user->ID, 96) : $avatar_medium_src; 381 // Change text on message based on current user 382 $profile = ($current_user->ID == $user->ID) ? '“'.__('Update Profile').'”' : '“'.__('Update User').'”'; 383 ?> 384 <?php do_action('wpua_before_avatar'); ?> 385 <input type="hidden" name="wp-user-avatar" id="wp-user-avatar" value="<?php echo $wpua; ?>" /> 386 <?php if(current_user_can('upload_files')) : // Button to launch Media uploader ?> 387 <p id="wpua-add-button"><button type="button" class="button" id="wpua-add" name="wpua-add"><?php _e('Edit Image'); ?></button></p> 388 <?php elseif(!current_user_can('upload_files') && !has_wp_user_avatar($current_user->ID)) : // Upload button ?> 389 <p id="wpua-upload-button"> 390 <input name="wpua-file" id="wpua-file" type="file" /> 391 <button type="submit" class="button" id="wpua-upload" name="submit" value="<?php _e('Upload'); ?>"><?php _e('Upload'); ?></button> 392 </p> 393 <p id="wpua-upload-messages"> 394 <span id="wpua-max-upload"><?php printf(__('Maximum upload file size: %d%s.'), esc_html($wpua_upload_size_limit_with_units), esc_html('KB')); ?></span> 395 <span id="wpua-allowed-files"><?php _e('Allowed Files'); ?>: <?php _e('<code>jpg jpeg png gif</code>'); ?></span> 396 </p> 397 <?php elseif((bool) $wpua_edit_avatar == 1 && !current_user_can('upload_files') && has_wp_user_avatar($current_user->ID) && wpua_author($wpua, $current_user->ID)) : // Edit button ?> 398 <?php $edit_attachment_link = add_query_arg(array('post' => $wpua, 'action' => 'edit'), admin_url('post.php')); ?> 399 <p id="wpua-edit-button"><button type="button" class="button" id="wpua-edit" name="wpua-edit" onclick="window.open('<?php echo $edit_attachment_link; ?>', '_self');"><?php _e('Edit Image'); ?></button></p> 400 <?php endif; ?> 401 <p id="wpua-preview"> 402 <img src="<?php echo $avatar_medium; ?>" alt="" /> 403 <?php _e('Original Size'); ?> 404 </p> 405 <p id="wpua-thumbnail"> 406 <img src="<?php echo $avatar_thumbnail; ?>" alt="" /> 407 <?php _e('Thumbnail'); ?> 408 </p> 409 <p id="wpua-remove-button" class="<?php echo $hide_remove; ?>"><button type="button" class="button" id="wpua-remove" name="wpua-remove"><?php _e('Default Avatar'); ?></button></p> 410 <p id="wpua-undo-button"><button type="button" class="button" id="wpua-undo" name="wpua-undo"><?php _e('Undo'); ?></button></p> 411 <p id="wpua-message"><?php printf(__('Click %s to save your changes', 'wp-user-avatar'), $profile); ?></p> 412 <?php do_action('wpua_after_avatar'); ?> 413 <?php 414 } 415 416 // Add upload error messages 417 function wpua_upload_errors($errors, $update, $user){ 418 global $wpua_upload_size_limit; 419 if($update && !empty($_FILES['wpua-file'])){ 420 $size = $_FILES['wpua-file']['size']; 421 $type = $_FILES['wpua-file']['type']; 422 // Allow only JPG, GIF, PNG 423 if(!empty($type) && !preg_match('/(jpe?g|gif|png)$/i', $type)){ 424 $errors->add('wpua_file_type', __('This file is not an image. Please try another.')); 425 } 426 // Upload size limit 427 if(!empty($size) && $size > $wpua_upload_size_limit){ 428 $errors->add('wpua_file_size', __('Memory exceeded. Please try another smaller file.')); 429 } 430 } 431 } 432 433 // Set upload size limit for users without upload_files capability 434 function wpua_handle_upload_prefilter($file){ 435 global $wpua_upload_size_limit; 436 $size = $file['size']; 437 if(!empty($size) && $size > $wpua_upload_size_limit){ 438 function wpua_file_size_error($errors, $update, $user){ 439 $errors->add('wpua_file_size', __('Memory exceeded. Please try another smaller file.')); 440 } 441 add_action('user_profile_update_errors', 'wpua_file_size_error', 10, 3); 442 return null; 443 } 444 return $file; 445 } 446 447 // Update user meta 448 function wpua_action_process_option_update($user_id){ 449 global $blog_id, $wpdb, $wpua_resize_crop, $wpua_resize_h, $wpua_resize_upload, $wpua_resize_w; 450 // Check if user has upload_files capability 451 if(current_user_can('upload_files')){ 452 $wpua_id = isset($_POST['wp-user-avatar']) ? intval($_POST['wp-user-avatar']) : ""; 453 $wpdb->query($wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value = %d", '_wp_attachment_wp_user_avatar', $user_id)); 454 add_post_meta($wpua_id, '_wp_attachment_wp_user_avatar', $user_id); 455 update_user_meta($user_id, $wpdb->get_blog_prefix($blog_id).'user_avatar', $wpua_id); 456 } else { 457 // Remove attachment info if avatar is blank 458 if(isset($_POST['wp-user-avatar']) && empty($_POST['wp-user-avatar'])){ 459 // Uploads by user 460 $attachments = $wpdb->get_results($wpdb->prepare("SELECT $wpdb->posts.ID FROM $wpdb->posts, $wpdb->postmeta WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id AND $wpdb->posts.post_author = %d AND $wpdb->posts.post_type = %s AND $wpdb->postmeta.meta_key = %s AND $wpdb->postmeta.meta_value = $wpdb->posts.post_author", $user_id, 'attachment', '_wp_attachment_wp_user_avatar')); 461 foreach($attachments as $attachment){ 462 // Delete attachment if not used by another user 463 if(!wpua_image($attachment->ID, $user_id)){ 464 wp_delete_attachment($attachment->ID); 465 } 466 } 467 update_user_meta($user_id, $wpdb->get_blog_prefix($blog_id).'user_avatar', ""); 468 } 469 // Create attachment from upload 470 if(isset($_POST['submit']) && $_POST['submit'] && !empty($_FILES['wpua-file'])){ 471 $name = $_FILES['wpua-file']['name']; 472 $file = wp_handle_upload($_FILES['wpua-file'], array('test_form' => false)); 473 $type = $_FILES['wpua-file']['type']; 474 if(!empty($type) && preg_match('/(jpe?g|gif|png)$/i', $type)){ 475 // Resize uploaded image 476 if((bool) $wpua_resize_upload == 1){ 477 // Original image 478 $uploaded_image = wp_get_image_editor($file['file']); 479 // Check for errors 480 if(!is_wp_error($uploaded_image)){ 481 // Resize image 482 $uploaded_image->resize($wpua_resize_w, $wpua_resize_h, $wpua_resize_crop); 483 // Save image 484 $resized_image = $uploaded_image->save($file['file']); 485 } 486 } 487 // Break out file info 488 $name_parts = pathinfo($name); 489 $name = trim(substr($name, 0, -(1 + strlen($name_parts['extension'])))); 490 $url = $file['url']; 491 $file = $file['file']; 492 $title = $name; 493 // Use image exif/iptc data for title if possible 494 if($image_meta = @wp_read_image_metadata($file)){ 495 if(trim($image_meta['title']) && !is_numeric(sanitize_title($image_meta['title']))){ 496 $title = $image_meta['title']; 497 } 498 } 499 // Construct the attachment array 500 $attachment = array( 501 'guid' => $url, 502 'post_mime_type' => $type, 503 'post_title' => $title, 504 'post_content' => "" 505 ); 506 // This should never be set as it would then overwrite an existing attachment 507 if(isset($attachment['ID'])){ 508 unset($attachment['ID']); 509 } 510 // Save the attachment metadata 511 $attachment_id = wp_insert_attachment($attachment, $file); 512 if(!is_wp_error($attachment_id)){ 513 wp_update_attachment_metadata($attachment_id, wp_generate_attachment_metadata($attachment_id, $file)); 514 $wpdb->query($wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value = %d", '_wp_attachment_wp_user_avatar', $user_id)); 515 add_post_meta($attachment_id, '_wp_attachment_wp_user_avatar', $user_id); 516 update_user_meta($user_id, $wpdb->get_blog_prefix($blog_id).'user_avatar', $attachment_id); 517 } 518 } 519 } 520 } 521 } 522 523 // Add actions links on plugin page 524 function wpua_action_links($links, $file){ 525 if(basename($file) == basename(plugin_basename(__FILE__))){ 526 $settings_link = '<a href="'.add_query_arg(array('page' => 'wp-user-avatar'), admin_url('options-general.php')).'">'.__('Settings').'</a>'; 527 $links = array_merge($links, array($settings_link)); 528 } 529 return $links; 530 } 531 532 // Add row meta on plugin page 533 function wpua_row_meta($links, $file){ 534 if(basename($file) == basename(plugin_basename(__FILE__))){ 535 $support_link = '<a href="http://wordpress.org/support/plugin/wp-user-avatar" target="_blank">'.__('Support Forums').'</a>'; 536 $donate_link = '<a href="http://siboliban.org/donate" target="_blank">'.__('Donate', 'wp-user-avatar').'</a>'; 537 $links = array_merge($links, array($support_link, $donate_link)); 538 } 539 return $links; 540 } 541 542 // Add column to Users table 543 function wpua_add_column($columns){ 544 return $columns + array('wp-user-avatar' => __('WP User Avatar', 'wp-user-avatar')); 545 } 546 547 // Show thumbnail in Users table 548 function wpua_show_column($value, $column_name, $user_id){ 549 global $blog_id, $wpdb; 550 $wpua = get_user_meta($user_id, $wpdb->get_blog_prefix($blog_id).'user_avatar', true); 551 $wpua_image = wp_get_attachment_image($wpua, array(32,32)); 552 if($column_name == 'wp-user-avatar'){ $value = $wpua_image; } 553 return $value; 554 } 555 556 // Media uploader 557 public static function wpua_media_upload_scripts($user=""){ 558 global $mustache_admin, $pagenow, $show_avatars, $wpua_upload_size_limit; 559 wp_enqueue_script('jquery'); 560 if(current_user_can('upload_files')){ 561 wp_enqueue_script('admin-bar'); 562 wp_enqueue_media(); 563 wp_enqueue_script('wp-user-avatar', WPUA_URLPATH.'js/wp-user-avatar.js', array('jquery','media-editor'), WPUA_VERSION, true); 564 } else { 565 wp_enqueue_script('wp-user-avatar', WPUA_URLPATH.'js/wp-user-avatar-user.js', array('jquery'), WPUA_VERSION, true); 566 } 567 wp_enqueue_style('wp-user-avatar', WPUA_URLPATH.'css/wp-user-avatar.css', "", WPUA_VERSION); 568 // Admin scripts 569 if($pagenow == 'options-discussion.php' || ($pagenow == 'options-general.php' && isset($_GET['page']) && $_GET['page'] == 'wp-user-avatar')){ 570 // Size limit slider 571 wp_enqueue_script('jquery-ui-slider'); 572 wp_enqueue_style('wp-user-avatar-jqueryui', WPUA_URLPATH.'css/jquery.ui.slider.css', "", null); 573 // Remove/edit settings 574 $wpua_custom_scripts = array('section' => __('Default Avatar'), 'edit_image' => __('Edit Image'), 'select_image' => __('Select Image'), 'avatar_thumb' => $mustache_admin); 575 wp_localize_script('wp-user-avatar', 'wpua_custom', $wpua_custom_scripts); 576 // Settings control 577 wp_enqueue_script('wp-user-avatar-admin', WPUA_URLPATH.'js/wp-user-avatar-admin.js', array('wp-user-avatar'), WPUA_VERSION, true); 578 $wpua_admin_scripts = array('upload_size_limit' => $wpua_upload_size_limit, 'max_upload_size' => wp_max_upload_size()); 579 wp_localize_script('wp-user-avatar-admin', 'wpua_admin', $wpua_admin_scripts); 580 } else { 581 // User remove/edit settings 582 $avatar_medium_src = (bool) $show_avatars == 1 ? wpua_get_avatar_original($user->user_email, 96) : includes_url().'images/blank.gif'; 583 $wpua_custom_scripts = array('section' => $user->display_name, 'edit_image' => __('Edit Image'), 'select_image' => __('Select Image'), 'avatar_thumb' => $avatar_medium_src); 584 wp_localize_script('wp-user-avatar', 'wpua_custom', $wpua_custom_scripts); 585 } 586 } 587 } 588 589 // Returns true if user has Gravatar-hosted image 590 function wpua_has_gravatar($id_or_email, $has_gravatar=false, $user="", $email=""){ 591 if(!is_object($id_or_email) && !empty($id_or_email)){ 592 // Find user by ID or e-mail address 593 $user = is_numeric($id_or_email) ? get_user_by('id', $id_or_email) : get_user_by('email', $id_or_email); 594 // Get registered user e-mail address 595 $email = !empty($user) ? $user->user_email : ""; 596 } 597 // Check if Gravatar image returns 200 (OK) or 404 (Not Found) 598 $hash = md5(strtolower(trim($email))); 599 $gravatar = 'http://www.gravatar.com/avatar/'.$hash.'?d=404'; 600 $data = wp_cache_get($hash); 601 if(false === $data){ 602 $response = wp_remote_head($gravatar); 603 $data = is_wp_error($response) ? 'not200' : $response['response']['code']; 604 wp_cache_set($hash, $data, $group="", $expire=60*5); 605 } 606 $has_gravatar = ($data == '200') ? true : false; 607 return $has_gravatar; 608 } 609 610 // Returns true if user has wp_user_avatar 611 function has_wp_user_avatar($id_or_email="", $has_wpua=false, $user="", $user_id=""){ 612 global $blog_id, $wpdb; 613 if(!is_object($id_or_email) && !empty($id_or_email)){ 614 // Find user by ID or e-mail address 615 $user = is_numeric($id_or_email) ? get_user_by('id', $id_or_email) : get_user_by('email', $id_or_email); 616 // Get registered user ID 617 $user_id = !empty($user) ? $user->ID : ""; 618 } 619 $wpua = get_user_meta($user_id, $wpdb->get_blog_prefix($blog_id).'user_avatar', true); 620 $has_wpua = !empty($wpua) && wp_attachment_is_image($wpua) ? true : false; 621 return $has_wpua; 622 } 623 624 // Replace get_avatar only in get_wp_user_avatar 625 function wpua_get_avatar_filter($avatar, $id_or_email="", $size="", $default="", $alt=""){ 626 global $avatar_default, $mustache_admin, $mustache_avatar, $mustache_medium, $mustache_original, $mustache_thumbnail, $post, $wpua_avatar_default, $wpua_disable_gravatar; 627 // User has WPUA 628 if(is_object($id_or_email)){ 629 if(!empty($id_or_email->comment_author_email)){ 630 $avatar = get_wp_user_avatar($id_or_email, $size, $default, $alt); 631 } else { 632 $avatar = get_wp_user_avatar('[email protected]', $size, $default, $alt); 633 } 634 } else { 635 if(has_wp_user_avatar($id_or_email)){ 636 $avatar = get_wp_user_avatar($id_or_email, $size, $default, $alt); 637 // User has Gravatar and Gravatar is not disabled 638 } elseif((bool) $wpua_disable_gravatar != 1 && wpua_has_gravatar($id_or_email)){ 639 $avatar = $avatar; 640 // User doesn't have WPUA or Gravatar and Default Avatar is wp_user_avatar, show custom Default Avatar 641 } elseif($avatar_default == 'wp_user_avatar'){ 642 // Show custom Default Avatar 643 if(!empty($wpua_avatar_default) && wp_attachment_is_image($wpua_avatar_default)){ 644 // Get image 645 $wpua_avatar_default_image = wp_get_attachment_image_src($wpua_avatar_default, array($size,$size)); 646 // Image src 647 $default = $wpua_avatar_default_image[0]; 648 // Add dimensions if numeric size 649 $dimensions = ' width="'.$wpua_avatar_default_image[1].'" height="'.$wpua_avatar_default_image[2].'"'; 650 } else { 651 // Get mustache image based on numeric size comparison 652 if($size > get_option('medium_size_w')){ 653 $default = $mustache_original; 654 } elseif($size <= get_option('medium_size_w') && $size > get_option('thumbnail_size_w')){ 655 $default = $mustache_medium; 656 } elseif($size <= get_option('thumbnail_size_w') && $size > 96){ 657 $default = $mustache_thumbnail; 658 } elseif($size <= 96 && $size > 32){ 659 $default = $mustache_avatar; 660 } elseif($size <= 32){ 661 $default = $mustache_admin; 662 } 663 // Add dimensions if numeric size 664 $dimensions = ' width="'.$size.'" height="'.$size.'"'; 665 } 666 // Construct the img tag 667 $avatar = '<img src="'.$default.'"'.$dimensions.' alt="'.$alt.'" class="avatar avatar-'.$size.' wp-user-avatar wp-user-avatar-'.$size.' photo avatar-default" />'; 668 } 669 } 670 return $avatar; 671 } 672 add_filter('get_avatar', 'wpua_get_avatar_filter', 10, 6); 673 674 // Get original avatar, for when user removes wp_user_avatar 675 function wpua_get_avatar_original($id_or_email, $size="", $default="", $alt=""){ 676 global $avatar_default, $mustache_avatar, $wpua_avatar_default, $wpua_disable_gravatar; 677 // Remove get_avatar filter 678 remove_filter('get_avatar', 'wpua_get_avatar_filter'); 679 if((bool) $wpua_disable_gravatar != 1){ 680 // User doesn't have Gravatar and Default Avatar is wp_user_avatar, show custom Default Avatar 681 if(!wpua_has_gravatar($id_or_email) && $avatar_default == 'wp_user_avatar'){ 682 // Show custom Default Avatar 683 if(!empty($wpua_avatar_default) && wp_attachment_is_image($wpua_avatar_default)){ 684 $wpua_avatar_default_image = wp_get_attachment_image_src($wpua_avatar_default, array($size,$size)); 685 $default = $wpua_avatar_default_image[0]; 686 } else { 687 $default = $mustache_avatar; 688 } 689 } else { 690 // Get image from Gravatar, whether it's the user's image or default image 691 $wpua_image = get_avatar($id_or_email, $size); 692 // Takes the img tag, extracts the src 693 $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $wpua_image, $matches, PREG_SET_ORDER); 694 $default = !empty($matches) ? $matches [0] [1] : ""; 695 } 696 } else { 697 if(!empty($wpua_avatar_default) && wp_attachment_is_image($wpua_avatar_default)){ 698 $wpua_avatar_default_image = wp_get_attachment_image_src($wpua_avatar_default, array($size,$size)); 699 $default = $wpua_avatar_default_image[0]; 700 } else { 701 $default = $mustache_avatar; 702 } 703 } 704 // Enable get_avatar filter 705 add_filter('get_avatar', 'wpua_get_avatar_filter', 10, 6); 706 return $default; 707 } 708 709 // Find WPUA, show get_avatar if empty 710 function get_wp_user_avatar($id_or_email="", $size='96', $align="", $alt="", $email='[email protected]'){ 711 global $all_sizes, $avatar_default, $blog_id, $post, $wpdb, $_wp_additional_image_sizes; 712 // Checks if comment 713 if(is_object($id_or_email)){ 714 // Checks if comment author is registered user by user ID 715 if($id_or_email->user_id != 0){ 716 $email = $id_or_email->user_id; 717 // Checks that comment author isn't anonymous 718 } elseif(!empty($id_or_email->comment_author_email)){ 719 // Checks if comment author is registered user by e-mail address 720 $user = get_user_by('email', $id_or_email->comment_author_email); 721 // Get registered user info from profile, otherwise e-mail address should be value 722 $email = !empty($user) ? $user->ID : $id_or_email->comment_author_email; 723 } 724 $alt = $id_or_email->comment_author; 725 } else { 726 if(!empty($id_or_email)){ 727 // Find user by ID or e-mail address 728 $user = is_numeric($id_or_email) ? get_user_by('id', $id_or_email) : get_user_by('email', $id_or_email); 729 } else { 730 // Find author's name if id_or_email is empty 731 $author_name = get_query_var('author_name'); 732 if(is_author()){ 733 // On author page, get user by page slug 734 $user = get_user_by('slug', $author_name); 735 } else { 736 // On post, get user by author meta 737 $user_id = get_the_author_meta('ID'); 738 $user = get_user_by('id', $user_id); 739 } 740 } 741 // Set user's ID and name 742 if(!empty($user)){ 743 $email = $user->ID; 744 $alt = $user->display_name; 745 } 746 } 747 // Checks if user has WPUA 748 $wpua_meta = get_the_author_meta($wpdb->get_blog_prefix($blog_id).'user_avatar', $email); 749 // Add alignment class 750 $alignclass = !empty($align) && ($align == 'left' || $align == 'right' || $align == 'center') ? ' align'.$align : ' alignnone'; 751 // User has WPUA, bypass get_avatar 752 if(!empty($wpua_meta)){ 753 // Numeric size use size array 754 $get_size = is_numeric($size) ? array($size,$size) : $size; 755 // Get image src 756 $wpua_image = wp_get_attachment_image_src($wpua_meta, $get_size); 757 // Add dimensions to img only if numeric size was specified 758 $dimensions = is_numeric($size) ? ' width="'.$wpua_image[1].'" height="'.$wpua_image[2].'"' : ""; 759 // Construct the img tag 760 $avatar = '<img src="'.$wpua_image[0].'"'.$dimensions.' alt="'.$alt.'" class="avatar avatar-'.$size.' wp-user-avatar wp-user-avatar-'.$size.$alignclass.' photo" />'; 761 } else { 762 // Check for custom image sizes 763 if(in_array($size, $all_sizes)){ 764 if(in_array($size, array('original', 'large', 'medium', 'thumbnail'))){ 765 $get_size = ($size == 'original') ? get_option('large_size_w') : get_option($size.'_size_w'); 766 } else { 767 $get_size = $_wp_additional_image_sizes[$size]['width']; 768 } 769 } else { 770 // Numeric sizes leave as-is 771 $get_size = $size; 772 } 773 // User with no WPUA uses get_avatar 774 $avatar = get_avatar($email, $get_size, $default="", $alt=""); 775 // Remove width and height for non-numeric sizes 776 if(in_array($size, array('original', 'large', 'medium', 'thumbnail'))){ 777 $avatar = preg_replace('/(width|height)=\"\d*\"\s/', "", $avatar); 778 $avatar = preg_replace("/(width|height)=\'\d*\'\s/", "", $avatar); 779 } 780 $str_replacemes = array('wp-user-avatar ', 'wp-user-avatar-'.$get_size.' ', 'wp-user-avatar-'.$size.' ', 'avatar-'.$get_size, 'photo'); 781 $str_replacements = array("", "", "", 'avatar-'.$size, 'wp-user-avatar wp-user-avatar-'.$size.$alignclass.' photo'); 782 $avatar = str_replace($str_replacemes, $str_replacements, $avatar); 783 } 784 return $avatar; 785 } 786 787 // Return just the image src 788 function get_wp_user_avatar_src($id_or_email, $size="", $align=""){ 789 $wpua_image_src = ""; 790 // Gets the avatar img tag 791 $wpua_image = get_wp_user_avatar($id_or_email, $size, $align); 792 // Takes the img tag, extracts the src 793 if(!empty($wpua_image)){ 794 $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $wpua_image, $matches, PREG_SET_ORDER); 795 $wpua_image_src = !empty($matches) ? $matches [0] [1] : ""; 796 } 797 return $wpua_image_src; 798 } 799 800 // Shortcode 801 function wpua_shortcode($atts, $content=null){ 802 global $all_sizes, $blog_id, $post, $wpdb; 803 // Set shortcode attributes 804 extract(shortcode_atts(array('user' => "", 'size' => '96', 'align' => "", 'link' => "", 'target' => ""), $atts)); 805 // Find user by ID, login, slug, or e-mail address 806 if(!empty($user)){ 807 $user = is_numeric($user) ? get_user_by('id', $user) : get_user_by('login', $user); 808 $user = empty($user) ? get_user_by('slug', $user) : $user; 809 $user = empty($user) ? get_user_by('email', $user) : $user; 810 } else { 811 // Find author's name if id_or_email is empty 812 $author_name = get_query_var('author_name'); 813 if(is_author()){ 814 // On author page, get user by page slug 815 $user = get_user_by('slug', $author_name); 816 } else { 817 // On post, get user by author meta 818 $user_id = get_the_author_meta('ID'); 819 $user = get_user_by('id', $user_id); 820 } 821 } 822 // Numeric sizes leave as-is 823 $get_size = $size; 824 // Check for custom image sizes if there are captions 825 if(!empty($content)){ 826 if(in_array($size, $all_sizes)){ 827 if(in_array($size, array('original', 'large', 'medium', 'thumbnail'))){ 828 $get_size = ($size == 'original') ? get_option('large_size_w') : get_option($size.'_size_w'); 829 } else { 830 $get_size = $_wp_additional_image_sizes[$size]['width']; 831 } 832 } 833 } 834 // Get user ID 835 $id_or_email = !empty($user) ? $user->ID : '[email protected]'; 836 // Check if link is set 837 if(!empty($link)){ 838 // CSS class is same as link type, except for URL 839 $link_class = $link; 840 if($link == 'file'){ 841 // Get image src 842 $link = get_wp_user_avatar_src($id_or_email, 'original'); 843 } elseif($link == 'attachment'){ 844 // Get attachment URL 845 $link = get_attachment_link(get_the_author_meta($wpdb->get_blog_prefix($blog_id).'user_avatar', $id_or_email)); 846 } else { 847 // URL 848 $link_class = 'custom'; 849 } 850 // Open in new window 851 $target_link = !empty($target) ? ' target="'.$target.'"' : ""; 852 // Wrap the avatar inside the link 853 $html = '<a href="'.$link.'" class="wp-user-avatar-link wp-user-avatar-'.$link_class.'"'.$target_link.'>'.get_wp_user_avatar($id_or_email, $get_size, $align).'</a>'; 854 } else { 855 $html = get_wp_user_avatar($id_or_email, $get_size, $align); 856 } 857 // Check if caption is set 858 if(!empty($content)){ 859 // Get attachment ID 860 $wpua = get_user_meta($id_or_email, $wpdb->get_blog_prefix($blog_id).'user_avatar', true); 861 // Clean up caption 862 $content = trim($content); 863 $content = preg_replace('/\r|\n/', "", $content); 864 $content = preg_replace('/<\/p><p>/', "", $content, 1); 865 $content = preg_replace('/<\/p><p>$/', "", $content); 866 $content = str_replace('</p><p>', "<br /><br />", $content); 867 $avatar = do_shortcode(image_add_caption($html, $wpua, $content, $title, $align, $link, $get_size, $alt)); 868 } else { 869 $avatar = $html; 870 } 871 return $avatar; 872 } 873 add_shortcode('avatar', 'wpua_shortcode'); 874 875 // Add default avatar 876 function wpua_add_default_avatar($avatar_list=null){ 877 global $avatar_default, $mustache_admin, $mustache_medium, $wpua_avatar_default, $wpua_disable_gravatar; 878 // Remove get_avatar filter 879 remove_filter('get_avatar', 'wpua_get_avatar_filter'); 880 // Set avatar_list variable 881 $avatar_list = ""; 882 // Set avatar defaults 883 $avatar_defaults = array( 884 'mystery' => __('Mystery Man'), 885 'blank' => __('Blank'), 886 'gravatar_default' => __('Gravatar Logo'), 887 'identicon' => __('Identicon (Generated)'), 888 'wavatar' => __('Wavatar (Generated)'), 889 'monsterid' => __('MonsterID (Generated)'), 890 'retro' => __('Retro (Generated)') 891 ); 892 // No Default Avatar, set to Mystery Man 893 if(empty($avatar_default)){ 894 $avatar_default = 'mystery'; 895 } 896 // Take avatar_defaults and get examples for [email protected] 897 foreach($avatar_defaults as $default_key => $default_name){ 898 $avatar = get_avatar('[email protected]', 32, $default_key); 899 $selected = ($avatar_default == $default_key) ? 'checked="checked" ' : ""; 900 $avatar_list .= "\n\t<label><input type='radio' name='avatar_default' id='avatar_{$default_key}' value='".esc_attr($default_key)."' {$selected}/> "; 901 $avatar_list .= preg_replace("/src='(.+?)'/", "src='\$1&forcedefault=1'", $avatar); 902 $avatar_list .= ' '.$default_name.'</label>'; 903 $avatar_list .= '<br />'; 904 } 905 // Show remove link if custom Default Avatar is set 906 if(!empty($wpua_avatar_default) && wp_attachment_is_image($wpua_avatar_default)){ 907 $avatar_thumb_src = wp_get_attachment_image_src($wpua_avatar_default, array(32,32)); 908 $avatar_thumb = $avatar_thumb_src[0]; 909 $hide_remove = ""; 910 } else { 911 $avatar_thumb = $mustache_admin; 912 $hide_remove = ' class="wpua-hide"'; 913 } 914 // Default Avatar is wp_user_avatar, check the radio button next to it 915 $selected_avatar = ((bool) $wpua_disable_gravatar == 1 || $avatar_default == 'wp_user_avatar') ? ' checked="checked" ' : ""; 916 // Wrap WPUA in div 917 $avatar_thumb_img = '<div id="wpua-preview"><img src="'.$avatar_thumb.'" width="32" /></div>'; 918 // Add WPUA to list 919 $wpua_list = "\n\t<label><input type='radio' name='avatar_default' id='wp_user_avatar_radio' value='wp_user_avatar'$selected_avatar /> "; 920 $wpua_list .= preg_replace("/src='(.+?)'/", "src='\$1'", $avatar_thumb_img); 921 $wpua_list .= ' '.__('WP User Avatar', 'wp-user-avatar').'</label>'; 922 $wpua_list .= '<p id="wpua-edit"><button type="button" class="button" id="wpua-add" name="wpua-add">'.__('Edit Image').'</button>'; 923 $wpua_list .= '<span id="wpua-remove-button"'.$hide_remove.'><a href="#" id="wpua-remove">'.__('Remove').'</a></span><span id="wpua-undo-button"><a href="#" id="wpua-undo">'.__('Undo').'</a></span></p>'; 924 $wpua_list .= '<input type="hidden" id="wp-user-avatar" name="avatar_default_wp_user_avatar" value="'.$wpua_avatar_default.'">'; 925 $wpua_list .= '<p id="wpua-message">'.sprintf(__('Click %s to save your changes', 'wp-user-avatar'), '“'.__('Save Changes').'”').'</p>'; 926 if((bool) $wpua_disable_gravatar != 1){ 927 return $wpua_list.'<div id="wp-avatars">'.$avatar_list.'</div>'; 928 } else { 929 return $wpua_list; 930 } 931 } 932 add_filter('default_avatar_select', 'wpua_add_default_avatar', 10); 933 934 // Add default avatar_default to whitelist 935 function wpua_whitelist_options($whitelist_options){ 936 $whitelist_options['discussion'][] = 'avatar_default_wp_user_avatar'; 937 return $whitelist_options; 938 } 939 add_filter('whitelist_options', 'wpua_whitelist_options', 10); 940 941 // Add media state 942 function wpua_add_media_state($media_states){ 943 global $post, $wpua_avatar_default; 944 $is_wpua = get_post_custom_values('_wp_attachment_wp_user_avatar', $post->ID); 945 if(!empty($is_wpua)){ 946 $media_states[] = __('Avatar'); 947 } 948 if(!empty($wpua_avatar_default) && ($wpua_avatar_default == $post->ID)){ 949 $media_states[] = __('Default Avatar'); 950 } 951 return apply_filters('wpua_add_media_state', $media_states); 952 } 953 add_filter('display_media_states', 'wpua_add_media_state', 10, 1); 954 955 // Check if image is used as WPUA 956 function wpua_image($attachment_id, $user_id, $wpua_image=false){ 957 global $wpdb; 958 $wpua = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s AND meta_value != %d", $attachment_id, '_wp_attachment_wp_user_avatar', $user_id)); 959 if(!empty($wpua)){ 960 $wpua_image = true; 961 } 962 return $wpua_image; 963 } 964 965 // Check who owns image 966 function wpua_author($attachment_id, $user_id, $wpua_author=false){ 967 $attachment = get_post($attachment_id); 968 if(!empty($attachment) && $attachment->post_author == $user_id){ 969 $wpua_author = true; 970 } 971 return $wpua_author; 972 } 973 974 // Admin page 975 function wpua_options_page(){ 976 global $show_avatars, $upload_size_limit_with_units, $wpua_allow_upload, $wpua_disable_gravatar, $wpua_edit_avatar, $wpua_resize_crop, $wpua_resize_h, $wpua_resize_upload, $wpua_resize_w, $wpua_tinymce, $wpua_upload_size_limit, $wpua_upload_size_limit_with_units; 977 // Give subscribers edit_posts capability 978 if(isset($_GET['settings-updated']) && $_GET['settings-updated'] == 'true' && (empty($wpua_allow_upload) || empty($wpua_edit_avatar))){ 979 wpua_subscriber_remove_cap(); 980 } 981 $hide_size = (bool) $wpua_allow_upload != 1 ? ' style="display:none;"' : ""; 982 $hide_resize = (bool) $wpua_resize_upload != 1 ? ' style="display:none;"' : ""; 983 ?> 984 <div class="wrap"> 985 <?php screen_icon(); ?> 986 <h2><?php _e('WP User Avatar', 'wp-user-avatar'); ?></h2> 987 <form method="post" action="<?php echo admin_url('options.php'); ?>"> 988 <?php settings_fields('wpua-settings-group'); ?> 989 <?php do_settings_fields('wpua-settings-group', ""); ?> 990 <?php do_action('wpua_donation_message'); ?> 991 <table class="form-table"> 992 <tr valign="top"> 993 <th scope="row"><?php _e('Settings'); ?></th> 994 <td> 995 <fieldset> 996 <legend class="screen-reader-text"><span><?php _e('Settings'); ?></span></legend> 997 <label for="wp_user_avatar_tinymce"> 998 <input name="wp_user_avatar_tinymce" type="checkbox" id="wp_user_avatar_tinymce" value="1" <?php checked($wpua_tinymce, 1); ?> /> 999 <?php _e('Add avatar button to Visual Editor', 'wp-user-avatar'); ?> 1000 </label> 1001 </fieldset> 1002 <fieldset> 1003 <label for="wp_user_avatar_allow_upload"> 1004 <input name="wp_user_avatar_allow_upload" type="checkbox" id="wp_user_avatar_allow_upload" value="1" <?php checked($wpua_allow_upload, 1); ?> /> 1005 <?php _e('Allow Contributors & Subscribers to upload avatars', 'wp-user-avatar'); ?> 1006 </label> 1007 </fieldset> 1008 <fieldset> 1009 <label for="wp_user_avatar_disable_gravatar"> 1010 <input name="wp_user_avatar_disable_gravatar" type="checkbox" id="wp_user_avatar_disable_gravatar" value="1" <?php checked($wpua_disable_gravatar, 1); ?> /> 1011 <?php _e('Disable Gravatar and use only local avatars', 'wp-user-avatar'); ?> 1012 </label> 1013 </fieldset> 1014 </td> 1015 </tr> 1016 </table> 1017 <div id="wpua-contributors-subscribers"<?php echo $hide_size; ?>> 1018 <table class="form-table"> 1019 <tr valign="top"> 1020 <th scope="row"> 1021 <label for="wp_user_avatar_upload_size_limit"> 1022 <?php _e('Upload Size Limit', 'wp-user-avatar'); ?> <?php _e('(only for Contributors & Subscribers)', 'wp-user-avatar'); ?> 1023 </label> 1024 </th> 1025 <td> 1026 <fieldset> 1027 <legend class="screen-reader-text"><span><?php _e('Upload Size Limit', 'wp-user-avatar'); ?> <?php _e('(only for Contributors & Subscribers)', 'wp-user-avatar'); ?></span></legend> 1028 <input name="wp_user_avatar_upload_size_limit" type="text" id="wp_user_avatar_upload_size_limit" value="<?php echo $wpua_upload_size_limit; ?>" class="regular-text" /> 1029 <span id="wpua-readable-size"><?php echo $wpua_upload_size_limit_with_units; ?></span> 1030 <span id="wpua-readable-size-error"><?php printf(__('%s exceeds the maximum upload size for this site.'), ""); ?></span> 1031 <div id="wpua-slider"></div> 1032 <span class="description"><?php printf(__('Maximum upload file size: %d%s.'), esc_html(wp_max_upload_size()), esc_html(' bytes ('.$upload_size_limit_with_units.')')); ?></span> 1033 </fieldset> 1034 <fieldset> 1035 <label for="wp_user_avatar_edit_avatar"> 1036 <input name="wp_user_avatar_edit_avatar" type="checkbox" id="wp_user_avatar_edit_avatar" value="1" <?php checked($wpua_edit_avatar, 1); ?> /> 1037 <?php _e('Allow users to edit avatars', 'wp-user-avatar'); ?> 1038 </label> 1039 </fieldset> 1040 <fieldset> 1041 <label for="wp_user_avatar_resize_upload"> 1042 <input name="wp_user_avatar_resize_upload" type="checkbox" id="wp_user_avatar_resize_upload" value="1" <?php checked($wpua_resize_upload, 1); ?> /> 1043 <?php _e('Resize avatars on upload', 'wp-user-avatar'); ?> 1044 </label> 1045 </fieldset> 1046 <fieldset id="wpua-resize-sizes"<?php echo $hide_resize; ?> 1047 <br /> 1048 <br /> 1049 <label for="wp_user_avatar_resize_w"><?php _e('Width'); ?></label> 1050 <input name="wp_user_avatar_resize_w" type="number" step="1" min="0" id="wp_user_avatar_resize_w" value="<?php form_option('wp_user_avatar_resize_w'); ?>" class="small-text" /> 1051 <label for="wp_user_avatar_resize_h"><?php _e('Height'); ?></label> 1052 <input name="wp_user_avatar_resize_h" type="number" step="1" min="0" id="wp_user_avatar_resize_h" value="<?php form_option('wp_user_avatar_resize_h'); ?>" class="small-text" /> 1053 <br /> 1054 <input name="wp_user_avatar_resize_crop" type="checkbox" id="wp_user_avatar_resize_crop" value="1" <?php checked('1', $wpua_resize_crop); ?> /> 1055 <label for="wp_user_avatar_resize_crop"><?php _e('Crop avatars to exact dimensions', 'wp-user-avatar'); ?></label> 1056 </fieldset> 1057 </td> 1058 </tr> 1059 </table> 1060 </div> 1061 <h3 class="title"><?php _e('Avatars'); ?></h3> 1062 <p><?php _e('An avatar is an image that follows you from weblog to weblog appearing beside your name when you comment on avatar enabled sites. Here you can enable the display of avatars for people who comment on your site.'); ?></p> 1063 <table class="form-table"> 1064 <tr valign="top"> 1065 <th scope="row"><?php _e('Avatar Display'); ?></th> 1066 <td> 1067 <fieldset> 1068 <legend class="screen-reader-text"><span><?php _e('Avatar Display'); ?></span></legend> 1069 <label for="show_avatars"> 1070 <input type="checkbox" id="show_avatars" name="show_avatars" value="1" <?php checked($show_avatars, 1); ?> /> 1071 <?php _e('Show Avatars'); ?> 1072 </label> 1073 </fieldset> 1074 </td> 1075 </tr> 1076 <tr valign="top"> 1077 <th scope="row"><?php _e('Maximum Rating'); ?></th> 1078 <td> 1079 <fieldset> 1080 <legend class="screen-reader-text"><span><?php _e('Maximum Rating'); ?></span></legend> 1081 <?php 1082 $ratings = array( 1083 'G' => __('G — Suitable for all audiences'), 1084 'PG' => __('PG — Possibly offensive, usually for audiences 13 and above'), 1085 'R' => __('R — Intended for adult audiences above 17'), 1086 'X' => __('X — Even more mature than above') 1087 ); 1088 foreach ($ratings as $key => $rating) : 1089 $selected = (get_option('avatar_rating') == $key) ? 'checked="checked"' : ""; 1090 echo "\n\t<label><input type='radio' name='avatar_rating' value='" . esc_attr($key) . "' $selected/> $rating</label><br />"; 1091 endforeach; 1092 ?> 1093 </fieldset> 1094 </td> 1095 </tr> 1096 <tr valign="top"> 1097 <th scope="row"><?php _e('Default Avatar') ?></th> 1098 <td class="defaultavatarpicker"> 1099 <fieldset> 1100 <legend class="screen-reader-text"><span><?php _e('Default Avatar'); ?></span></legend> 1101 <?php _e('For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their e-mail address.'); ?><br /> 1102 <?php echo wpua_add_default_avatar(); ?> 1103 </fieldset> 1104 </td> 1105 </tr> 1106 </table> 1107 <?php submit_button(); ?> 1108 </form> 1109 </div> 1110 <?php 1111 } 1112 1113 // Whitelist settings 1114 function wpua_admin_settings(){ 1115 register_setting('wpua-settings-group', 'avatar_rating'); 1116 register_setting('wpua-settings-group', 'avatar_default'); 1117 register_setting('wpua-settings-group', 'avatar_default_wp_user_avatar', 'intval'); 1118 register_setting('wpua-settings-group', 'show_avatars', 'intval'); 1119 register_setting('wpua-settings-group', 'wp_user_avatar_tinymce', 'intval'); 1120 register_setting('wpua-settings-group', 'wp_user_avatar_allow_upload', 'intval'); 1121 register_setting('wpua-settings-group', 'wp_user_avatar_disable_gravatar', 'intval'); 1122 register_setting('wpua-settings-group', 'wp_user_avatar_edit_avatar', 'intval'); 1123 register_setting('wpua-settings-group', 'wp_user_avatar_resize_crop', 'intval'); 1124 register_setting('wpua-settings-group', 'wp_user_avatar_resize_h', 'intval'); 1125 register_setting('wpua-settings-group', 'wp_user_avatar_resize_upload', 'intval'); 1126 register_setting('wpua-settings-group', 'wp_user_avatar_resize_w', 'intval'); 1127 register_setting('wpua-settings-group', 'wp_user_avatar_upload_size_limit', 'intval'); 1128 } 1129 1130 // Add options page and settings 1131 function wpua_admin(){ 1132 add_options_page(__('WP User Avatar', 'wp-user-avatar'), __('WP User Avatar', 'wp-user-avatar'), 'manage_options', 'wp-user-avatar', 'wpua_options_page'); 1133 add_action('admin_init', 'wpua_admin_settings'); 1134 } 1135 1136 // Initialize WPUA after other plugins are loaded 1137 function wpua_load(){ 1138 global $wpua_instance; 1139 $wpua_instance = new wp_user_avatar(); 1140 } 1141 add_action('plugins_loaded', 'wpua_load'); 1142 } 1143 1144 ?> 39 require_once(WPUA_INC.'wpua-globals.php'); 40 require_once(WPUA_INC.'wpua-functions.php'); 41 require_once(WPUA_INC.'class-wp-user-avatar.php'); 42 require_once(WPUA_INC.'class-wp-user-avatar-admin.php'); 43 require_once(WPUA_INC.'class-wp-user-avatar-shortcode.php'); 44 require_once(WPUA_INC.'class-wp-user-avatar-subscriber.php'); 45 require_once(WPUA_INC.'class-wp-user-avatar-update.php');
Note: See TracChangeset
for help on using the changeset viewer.