143 lines
4.3 KiB
PHP
143 lines
4.3 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Defines widgets.
|
||
|
*
|
||
|
* @package One User Avatar
|
||
|
* @author Bangbay Siboliban
|
||
|
* @author Flippercode
|
||
|
* @author ProfilePress
|
||
|
* @author One Designs
|
||
|
* @copyright 2013-2014 Bangbay Siboliban
|
||
|
* @copyright 2014-2020 Flippercode
|
||
|
* @copyright 2020-2021 ProfilePress
|
||
|
* @copyright 2021 One Designs
|
||
|
* @version 2.3.9
|
||
|
*/
|
||
|
|
||
|
class WP_User_Avatar_Profile_Widget extends WP_Widget {
|
||
|
/**
|
||
|
* Constructor
|
||
|
* @since 1.9.4
|
||
|
*/
|
||
|
public function __construct() {
|
||
|
$widget_ops = array(
|
||
|
'classname' => 'widget_wp_user_avatar',
|
||
|
'description' => sprintf(
|
||
|
/* translators: [avatar_upload] shortcode */
|
||
|
__( 'Insert %s', 'one-user-avatar' ),
|
||
|
'[avatar_upload]'
|
||
|
),
|
||
|
);
|
||
|
|
||
|
parent::__construct( 'wp_user_avatar_profile', __( 'One User Avatar', 'one-user-avatar' ), $widget_ops );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Add [avatar_upload] to widget
|
||
|
* @since 1.9.4
|
||
|
* @param array $args
|
||
|
* @param array $instance
|
||
|
* @uses object $wp_user_avatar
|
||
|
* @uses bool $wpua_allow_upload
|
||
|
* @uses object $wpua_shortcode
|
||
|
* @uses add_filter()
|
||
|
* @uses apply_filters()
|
||
|
* @uses is_user_logged_in()
|
||
|
* @uses remove_filter()
|
||
|
* @uses wpua_edit_shortcode()
|
||
|
* @uses wpua_is_author_or_above()
|
||
|
*/
|
||
|
public function widget($args, $instance) {
|
||
|
global $wp_user_avatar, $wpua_allow_upload, $wpua_shortcode;
|
||
|
|
||
|
extract( $args );
|
||
|
|
||
|
$instance = apply_filters( 'wpua_widget_instance', $instance );
|
||
|
$title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
|
||
|
$text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance );
|
||
|
|
||
|
// Show widget only for users with permission
|
||
|
if ( $wp_user_avatar->wpua_is_author_or_above() || ( 1 == (bool) $wpua_allow_upload && is_user_logged_in() ) ) {
|
||
|
echo $before_widget;
|
||
|
|
||
|
if ( ! empty( $title ) ) {
|
||
|
echo $before_title . esc_html( $title ) . $after_title;
|
||
|
}
|
||
|
|
||
|
if ( ! empty( $text ) ) {
|
||
|
echo '<div class="textwidget">';
|
||
|
echo wp_kses_post( ! empty( $instance['filter'] ) ? wpautop( $text ) : $text );
|
||
|
echo '</div>';
|
||
|
}
|
||
|
|
||
|
// Remove profile title
|
||
|
add_filter( 'wpua_profile_title', '__return_null' );
|
||
|
|
||
|
// Get [avatar_upload] shortcode
|
||
|
echo $wpua_shortcode->wpua_edit_shortcode( '' );
|
||
|
|
||
|
// Add back profile title
|
||
|
remove_filter('wpua_profile_title', '__return_null');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Set title
|
||
|
* @since 1.9.4
|
||
|
* @param array $instance
|
||
|
* @uses wp_parse_args()
|
||
|
*/
|
||
|
public function form( $instance ) {
|
||
|
$instance = wp_parse_args( (array) $instance, array(
|
||
|
'title' => '',
|
||
|
'text' => '',
|
||
|
) );
|
||
|
?>
|
||
|
|
||
|
<p>
|
||
|
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>">
|
||
|
<?php esc_html_e( 'Title:', 'one-user-avatar' ); ?>
|
||
|
</label>
|
||
|
|
||
|
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name('title') ); ?>" type="text" value="<?php echo esc_attr( wp_kses( $instance['title'], 'data' ) ); ?>" />
|
||
|
</p>
|
||
|
|
||
|
<label for="<?php echo esc_attr( $this->get_field_id( 'filter' ) ); ?>"><?php esc_html_e( 'Description:', 'one-user-avatar' ); ?></label>
|
||
|
|
||
|
<textarea class="widefat" rows="3" cols="20" id="<?php echo esc_attr( $this->get_field_id( 'text' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'text' ) ); ?>"><?php echo esc_textarea( $instance['text'] ); ?></textarea>
|
||
|
|
||
|
<p>
|
||
|
<input id="<?php echo esc_attr( $this->get_field_id( 'filter' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'filter' ) ); ?>" type="checkbox" <?php checked( isset( $instance['filter'] ) ? $instance['filter'] : 0 ); ?> />
|
||
|
|
||
|
<label for="<?php echo esc_attr( $this->get_field_id( 'filter' ) ); ?>">
|
||
|
<?php esc_html_e( 'Automatically add paragraphs', 'one-user-avatar' ); ?>
|
||
|
</label>
|
||
|
</p>
|
||
|
<?php
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Update widget
|
||
|
* @since 1.9.4
|
||
|
* @param array $new_instance
|
||
|
* @param array $old_instance
|
||
|
* @uses current_user_can()
|
||
|
* @return array
|
||
|
*/
|
||
|
public function update( $new_instance, $old_instance ) {
|
||
|
$instance = $old_instance;
|
||
|
|
||
|
$instance['title'] = wp_kses( $new_instance['title'], 'data' );
|
||
|
|
||
|
if ( current_user_can( 'unfiltered_html' ) ) {
|
||
|
$instance['text'] = $new_instance['text'];
|
||
|
} else {
|
||
|
$instance['text'] = stripslashes( wp_filter_post_kses( addslashes( $new_instance['text'] ) ) );
|
||
|
}
|
||
|
|
||
|
$instance['filter'] = isset( $new_instance['filter'] );
|
||
|
|
||
|
return $instance;
|
||
|
}
|
||
|
}
|