Avatar()
Description #
AnsPress avatar hook class.
Source #
File: addons/avatar/avatar.php
class Avatar extends \AnsPress\Singleton {
/**
* Refers to a single instance of this class.
*
* @var null|object
* @since 4.1.8
*/
public static $instance = null;
/**
* Initialize the class.
*
* @since unknown
* @since 4.2.0 Added hook `ap_settings_menu_features_groups`.
* @since 4.2.0 Renamed `ap_form_addon-avatar` to `ap_form_options_features_avatar`.
*/
protected function __construct() {
ap_add_default_options(
array(
'avatar_font' => 'Pacifico',
'avatar_force' => false,
)
);
anspress()->add_filter( 'ap_settings_menu_features_groups', __CLASS__, 'add_to_settings_page' );
anspress()->add_action( 'ap_form_options_features_avatar', __CLASS__, 'option_form' );
anspress()->add_filter( 'pre_get_avatar_data', __CLASS__, 'get_avatar', 1000, 3 );
anspress()->add_action( 'wp_ajax_ap_clear_avatar_cache', __CLASS__, 'clear_avatar_cache' );
}
/**
* Add tags settings to features settings page.
*
* @param array $groups Features settings group.
* @return array
* @since 4.2.0
*/
public static function add_to_settings_page( $groups ) {
$groups['avatar'] = array(
'label' => __( 'Dynamic Avatar', 'anspress-question-answer' ),
);
return $groups;
}
/**
* Register options of Avatar addon.
*
* @return array
* @since 4.1.0
*/
public static function option_form() {
$opt = ap_opt();
ob_start();
?>
<script type="text/javascript">
jQuery(document).ready(function($){
$('#ap-clear-avatar').on('click', function(e){
e.preventDefault();
$.ajax({
url: '<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>',
data: {
action: 'ap_clear_avatar_cache',
__nonce: '<?php echo esc_attr( wp_create_nonce( 'clear_avatar_cache' ) ); ?>'
},
success: function(data){
if(data==='success') alert('All avatar deleted');
}
});
});
});
</script>
<?php
$js = ob_get_clean();
$form = array(
'submit_label' => __( 'Save add-on options', 'anspress-question-answer' ),
'fields' => array(
'clear_avatar_cache' => array(
'label' => __( 'Clear Cache', 'anspress-question-answer' ),
'html' => '<div class="ap-form-fields-in"><a id="ap-clear-avatar" href="#" class="button">' . __( 'Clear avatar cache', 'anspress-question-answer' ) . '</a></div>' . $js,
),
'avatar_font' => array(
'label' => __( 'Font family', 'anspress-question-answer' ),
'desc' => __( 'Select font family for avatar letters.', 'anspress-question-answer' ),
'type' => 'select',
'options' => array(
'calibri' => 'Calibri',
'Pacifico' => 'Pacifico',
'OpenSans' => 'Open Sans',
'Glegoo-Bold' => 'Glegoo Bold',
'DeliusSwashCaps' => 'Delius Swash Caps',
),
'value' => $opt['avatar_font'],
),
'avatar_force' => array(
'label' => __( 'Force avatar', 'anspress-question-answer' ),
'desc' => __( 'Show AnsPress avatars by default instead of gravatar fallback. Useful in localhost development.', 'anspress-question-answer' ),
'type' => 'checkbox',
'value' => $opt['avatar_force'],
),
),
);
return $form;
}
/**
* Override get_avatar.
*
* @param string $args Avatar image.
* @param integer|string $id_or_email User id or email.
* @return string
*/
public static function get_avatar( $args, $id_or_email ) {
$override = apply_filters( 'ap_pre_avatar_url', false, $args, $id_or_email );
// Return if override is not false.
if ( false !== $override ) {
return $override;
}
$args['default'] = ap_generate_avatar( $id_or_email );
// Set default avatar url.
if ( ap_opt( 'avatar_force' ) ) {
$args['url'] = ap_generate_avatar( $id_or_email );
}
return $args;
}
/**
* Ajax callback for clearing avatar cache.
*/
public static function clear_avatar_cache() {
check_ajax_referer( 'clear_avatar_cache', '__nonce' );
if ( current_user_can( 'manage_options' ) ) {
WP_Filesystem();
global $wp_filesystem;
$upload_dir = wp_upload_dir();
$wp_filesystem->rmdir( $upload_dir['basedir'] . '/ap_avatars', true );
wp_die( 'success' );
}
wp_die( 'failed' );
}
}
Expand full source code Collapse full source code View on GitHub: addons/avatar/avatar.php:38
Add your comment