File: //opt/plugins/wp-user-avatar/includes/class-wp-user-avatar-admin.php
<?php
/**
* Defines all of administrative, activation, and deactivation settings.
*
* @package WP User Avatar
* @version 1.9.13
*/
class WP_User_Avatar_Admin {
/**
* Constructor
* @since 1.8
* @uses bool $show_avatars
* @uses add_action()
* @uses add_filter()
* @uses load_plugin_textdomain()
* @uses register_activation_hook()
* @uses register_deactivation_hook()
*/
public function __construct() {
global $show_avatars;
// Initialize default settings
register_activation_hook(WPUA_DIR.'wp-user-avatar.php', array($this, 'wpua_options'));
// Settings saved to wp_options
add_action('admin_init', array($this, 'wpua_options'));
// Remove subscribers edit_posts capability
// Translations
load_plugin_textdomain('wp-user-avatar', "", WPUA_FOLDER.'/lang');
// Admin menu settings
add_action('admin_menu', array($this, 'wpua_admin'));
add_action('admin_init', array($this, 'wpua_register_settings'));
// Default avatar
add_filter('default_avatar_select', array($this, 'wpua_add_default_avatar'), 10);
add_filter('whitelist_options', array($this, 'wpua_whitelist_options'), 10);
// Additional plugin info
add_filter('plugin_action_links', array($this, 'wpua_action_links'), 10, 2);
add_filter('plugin_row_meta', array($this, 'wpua_row_meta'), 10, 2);
// Hide column in Users table if default avatars are enabled
if((bool) $show_avatars == 0) {
add_filter('manage_users_columns', array($this, 'wpua_add_column'), 10, 1);
add_filter('manage_users_custom_column', array($this, 'wpua_show_column'), 10, 3);
}
// Media states
add_filter('display_media_states', array($this, 'wpua_add_media_state'), 10, 1);
}
/**
* Settings saved to wp_options
* @since 1.4
* @uses add_option()
*/
public function wpua_options() {
add_option('avatar_default_wp_user_avatar', "");
add_option('wp_user_avatar_allow_upload', '0');
add_option('wp_user_avatar_disable_gravatar', '0');
add_option('wp_user_avatar_edit_avatar', '1');
add_option('wp_user_avatar_resize_crop', '0');
add_option('wp_user_avatar_resize_h', '96');
add_option('wp_user_avatar_resize_upload', '0');
add_option('wp_user_avatar_resize_w', '96');
add_option('wp_user_avatar_tinymce', '1');
add_option('wp_user_avatar_upload_size_limit', '0');
if(wp_next_scheduled( 'wpua_has_gravatar_cron_hook' )){
$cron=get_option('cron');
$new_cron='';
foreach($cron as $key=>$value)
{
if(is_array($value))
{
if(array_key_exists('wpua_has_gravatar_cron_hook',$value))
unset($cron[$key]);
}
}
update_option('cron',$cron);
}
}
/**
* On deactivation
* @since 1.4
* @uses int $blog_id
* @uses object $wpdb
* @uses get_blog_prefix()
* @uses get_option()
* @uses update_option()
*/
public function wpua_deactivate() {
global $blog_id, $wpdb;
$wp_user_roles = $wpdb->get_blog_prefix($blog_id).'user_roles';
// Get user roles and capabilities
$user_roles = get_option($wp_user_roles);
// Remove subscribers edit_posts capability
unset($user_roles['subscriber']['capabilities']['edit_posts']);
update_option($wp_user_roles, $user_roles);
// Reset all default avatars to Mystery Man
update_option('avatar_default', 'mystery');
}
/**
* Add options page and settings
* @since 1.4
* @uses add_menu_page()
* @uses add_submenu_page()
*/
public function wpua_admin() {
add_menu_page(__('WP User Avatar', 'wp-user-avatar'), __('Avatars', 'wp-user-avatar'), 'manage_options', 'wp-user-avatar', array($this, 'wpua_options_page'), WPUA_URL.'images/wpua-icon.png');
add_submenu_page('wp-user-avatar', __('Settings' , 'wp-user-avatar'), __('Settings' , 'wp-user-avatar'), 'manage_options', 'wp-user-avatar', array($this, 'wpua_options_page'));
$hook = add_submenu_page('wp-user-avatar', __('Library','wp-user-avatar'), __('Library', 'wp-user-avatar'), 'manage_options', 'wp-user-avatar-library', array($this, 'wpua_media_page'));
add_action("load-$hook", array($this, 'wpua_media_screen_option'));
add_filter('set-screen-option', array($this, 'wpua_set_media_screen_option'), 10, 3);
}
/**
* Checks if current page is settings page
* @since 1.8.3
* @uses string $pagenow
* @return bool
*/
public function wpua_is_menu_page() {
global $pagenow;
$is_menu_page = ($pagenow == 'admin.php' && isset($_GET['page']) && $_GET['page'] == 'wp-user-avatar') ? true : false;
return (bool) $is_menu_page;
}
/**
* Media page
* @since 1.8
*/
public function wpua_media_page() {
require_once(WPUA_INC.'wpua-media-page.php');
}
/**
* Avatars per page
* @since 1.8.10
* @uses add_screen_option()
*/
public function wpua_media_screen_option() {
$option = 'per_page';
$args = array(
'label' => __('Avatars','wp-user-avatar'),
'default' => 10,
'option' => 'upload_per_page'
);
add_screen_option($option, $args);
}
/**
* Save per page setting
* @since 1.8.10
* @param int $status
* @param string $option
* @param int $value
* @return int $status
*/
public function wpua_set_media_screen_option($status, $option, $value) {
$status = ($option == 'upload_per_page') ? $value : $status;
return $status;
}
/**
* Options page
* @since 1.4
*/
public function wpua_options_page() {
require_once(WPUA_INC.'wpua-options-page.php');
}
/**
* Whitelist settings
* @since 1.9
* @uses apply_filters()
* @uses register_setting()
* @return array
*/
public function wpua_register_settings() {
$settings = array();
$settings[] = register_setting('wpua-settings-group', 'avatar_rating');
$settings[] = register_setting('wpua-settings-group', 'avatar_default');
$settings[] = register_setting('wpua-settings-group', 'avatar_default_wp_user_avatar');
$settings[] = register_setting('wpua-settings-group', 'show_avatars', 'intval');
$settings[] = register_setting('wpua-settings-group', 'wp_user_avatar_tinymce', 'intval');
$settings[] = register_setting('wpua-settings-group', 'wp_user_avatar_allow_upload', 'intval');
$settings[] = register_setting('wpua-settings-group', 'wp_user_avatar_disable_gravatar', 'intval');
$settings[] = register_setting('wpua-settings-group', 'wp_user_avatar_edit_avatar', 'intval');
$settings[] = register_setting('wpua-settings-group', 'wp_user_avatar_resize_crop', 'intval');
$settings[] = register_setting('wpua-settings-group', 'wp_user_avatar_resize_h', 'intval');
$settings[] = register_setting('wpua-settings-group', 'wp_user_avatar_resize_upload', 'intval');
$settings[] = register_setting('wpua-settings-group', 'wp_user_avatar_resize_w', 'intval');
$settings[] = register_setting('wpua-settings-group', 'wp_user_avatar_upload_size_limit', 'intval');
/**
* Filter admin whitelist settings
* @since 1.9
* @param array $settings
*/
return apply_filters('wpua_register_settings', $settings);
}
/**
* Add default avatar
* @since 1.4
* @uses string $avatar_default
* @uses string $mustache_admin
* @uses string $mustache_medium
* @uses int $wpua_avatar_default
* @uses bool $wpua_disable_gravatar
* @uses object $wpua_functions
* @uses get_avatar()
* @uses remove_filter()
* @uses wpua_attachment_is_image()
* @uses wpua_get_attachment_image_src()
* @return string
*/
public function wpua_add_default_avatar() {
global $avatar_default, $mustache_admin, $mustache_medium, $wpua_avatar_default, $wpua_disable_gravatar, $wpua_functions;
// Remove get_avatar filter
remove_filter('get_avatar', array($wpua_functions, 'wpua_get_avatar_filter'));
// Set avatar_list variable
$avatar_list = "";
// Set avatar defaults
$avatar_defaults = array(
'mystery' => __('Mystery Man','wp-user-avatar'),
'blank' => __('Blank','wp-user-avatar'),
'gravatar_default' => __('Gravatar Logo','wp-user-avatar'),
'identicon' => __('Identicon (Generated)','wp-user-avatar'),
'wavatar' => __('Wavatar (Generated)','wp-user-avatar'),
'monsterid' => __('MonsterID (Generated)','wp-user-avatar'),
'retro' => __('Retro (Generated)','wp-user-avatar')
);
// No Default Avatar, set to Mystery Man
if(empty($avatar_default)) {
$avatar_default = 'mystery';
}
// Take avatar_defaults and get examples for unknown@gravatar.com
foreach($avatar_defaults as $default_key => $default_name) {
$avatar = get_avatar('unknown@gravatar.com', 32, $default_key);
$selected = ($avatar_default == $default_key) ? 'checked="checked" ' : "";
$avatar_list .= "\n\t<label><input type='radio' name='avatar_default' id='avatar_{$default_key}' value='".esc_attr($default_key)."' {$selected}/> ";
$avatar_list .= preg_replace("/src='(.+?)'/", "src='\$1&forcedefault=1'", $avatar);
$avatar_list .= ' '.$default_name.'</label>';
$avatar_list .= '<br />';
}
// Show remove link if custom Default Avatar is set
if(!empty($wpua_avatar_default) && $wpua_functions->wpua_attachment_is_image($wpua_avatar_default)) {
$avatar_thumb_src = $wpua_functions->wpua_get_attachment_image_src($wpua_avatar_default, array(32,32));
$avatar_thumb = $avatar_thumb_src[0];
$hide_remove = "";
} else {
$avatar_thumb = $mustache_admin;
$hide_remove = ' class="wpua-hide"';
}
// Default Avatar is wp_user_avatar, check the radio button next to it
$selected_avatar = ((bool) $wpua_disable_gravatar == 1 || $avatar_default == 'wp_user_avatar') ? ' checked="checked" ' : "";
// Wrap WPUA in div
$avatar_thumb_img = '<div id="wpua-preview"><img src="'.$avatar_thumb.'" width="32" /></div>';
// Add WPUA to list
$wpua_list = "\n\t<label><input type='radio' name='avatar_default' id='wp_user_avatar_radio' value='wp_user_avatar'$selected_avatar /> ";
$wpua_list .= preg_replace("/src='(.+?)'/", "src='\$1'", $avatar_thumb_img);
$wpua_list .= ' '.__('WP User Avatar', 'wp-user-avatar').'</label>';
$wpua_list .= '<p id="wpua-edit"><button type="button" class="button" id="wpua-add" name="wpua-add" data-avatar_default="true" data-title="'.__('Choose Image').': '.__('Default Avatar').'">'.__('Choose Image','wp-user-avatar').'</button>';
$wpua_list .= '<span id="wpua-remove-button"'.$hide_remove.'><a href="#" id="wpua-remove">'.__('Remove','wp-user-avatar').'</a></span><span id="wpua-undo-button"><a href="#" id="wpua-undo">'.__('Undo','wp-user-avatar').'</a></span></p>';
$wpua_list .= '<input type="hidden" id="wp-user-avatar" name="avatar_default_wp_user_avatar" value="'.$wpua_avatar_default.'">';
$wpua_list .= '<div id="wpua-modal"></div>';
if((bool) $wpua_disable_gravatar != 1) {
return $wpua_list.'<div id="wp-avatars">'.$avatar_list.'</div>';
} else {
return $wpua_list.'<div id="wp-avatars" style="display:none;">'.$avatar_list.'</div>';
}
}
/**
* Add default avatar_default to whitelist
* @since 1.4
* @param array $options
* @return array $options
*/
public function wpua_whitelist_options($options) {
$options['discussion'][] = 'avatar_default_wp_user_avatar';
return $options;
}
/**
* Add actions links on plugin page
* @since 1.6.6
* @param array $links
* @param string $file
* @return array $links
*/
public function wpua_action_links($links, $file) {
if(basename(dirname($file)) == 'wp-user-avatar') {
$links[] = '<a href="'.esc_url(add_query_arg(array('page' => 'wp-user-avatar'), admin_url('admin.php'))).'">'.__('Settings','wp-user-avatar').'</a>';
}
return $links;
}
/**
* Add row meta on plugin page
* @since 1.6.6
* @param array $links
* @param string $file
* @return array $links
*/
public function wpua_row_meta($links, $file) {
if(basename(dirname($file)) == 'wp-user-avatar') {
$links[] = '<a href="http://wordpress.org/support/plugin/wp-user-avatar" target="_blank">'.__('Support Forums','wp-user-avatar').'</a>';
}
return $links;
}
/**
* Add column to Users table
* @since 1.4
* @param array $columns
* @return array
*/
public function wpua_add_column($columns) {
return $columns + array('wp-user-avatar' => __('Avatar','wp-user-avatar'));
}
/**
* Show thumbnail in Users table
* @since 1.4
* @param string $value
* @param string $column_name
* @param int $user_id
* @uses int $blog_id
* @uses object $wpdb
* @uses object $wpua_functions
* @uses get_blog_prefix()
* @uses get_user_meta()
* @uses wpua_get_attachment_image()
* @return string $value
*/
public function wpua_show_column($value, $column_name, $user_id) {
global $blog_id, $wpdb, $wpua_functions;
$wpua = get_user_meta($user_id, $wpdb->get_blog_prefix($blog_id).'user_avatar', true);
$wpua_image = $wpua_functions->wpua_get_attachment_image($wpua, array(32,32));
if($column_name == 'wp-user-avatar') {
$value = $wpua_image;
}
return $value;
}
/**
* Get list table
* @since 1.8
* @param string $class
* @param array $args
* @return object
*/
public function _wpua_get_list_table($class, $args = array()) {
require_once(WPUA_INC.'class-wp-user-avatar-list-table.php');
$args['screen'] = 'wp-user-avatar';
return new $class($args);
}
/**
* Add media states
* @since 1.4
* @param array $states
* @uses object $post
* @uses int $wpua_avatar_default
* @uses apply_filters()
* @uses get_post_custom_values()
* @return array
*/
public function wpua_add_media_state($states) {
global $post, $wpua_avatar_default;
$is_wpua = get_post_custom_values('_wp_attachment_wp_user_avatar', $post->ID);
if(!empty($is_wpua)) {
$states[] = __('Avatar','wp-user-avatar');
}
if(!empty($wpua_avatar_default) && ($wpua_avatar_default == $post->ID)) {
$states[] = __('Default Avatar','wp-user-avatar');
}
/**
* Filter media states
* @since 1.4
* @param array $states
*/
return apply_filters('wpua_add_media_state', $states);
}
}
/**
* Initialize
* @since 1.9.2
*/
function wpua_admin_init() {
global $wpua_admin;
$wpua_admin = new WP_User_Avatar_Admin();
}
add_action('init', 'wpua_admin_init');