load_dependencies();
$this->define_admin_hooks();
add_action( 'init', array( $this, 'define_public_hooks' ) );
}
/**
* Singleton pattern
*
* @return void
*/
public static function get_instance() {
if ( is_null( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
private function load_dependencies() {
require_once SIMPLE_AUTHOR_BOX_PATH . 'inc/class-simple-author-box-social.php';
require_once SIMPLE_AUTHOR_BOX_PATH . 'inc/class-simple-author-box-helper.php';
require_once SIMPLE_AUTHOR_BOX_PATH . 'inc/functions.php';
// everything below this line gets loaded only in the admin back-end
if ( is_admin() ) {
require_once SIMPLE_AUTHOR_BOX_PATH . 'inc/class-simple-author-box-admin-page.php';
require_once SIMPLE_AUTHOR_BOX_PATH . 'inc/class-simple-author-box-user-profile.php';
require_once SIMPLE_AUTHOR_BOX_PATH . 'inc/class-simple-author-box-previewer.php';
}
}
/**
* Admin hooks
*
* @return void
*/
private function define_admin_hooks() {
/**
* everything hooked here loads on both front-end & back-end
*/
add_filter( 'get_avatar', array( $this, 'replace_gravatar_image' ), 10, 6 );
add_filter( 'amp_post_template_data', array( $this, 'sab_amp_css' ) ); // @since 2.0.7
/**
* Only load when we're in the admin panel
*/
if ( is_admin() ) {
add_action( 'init', array( $this, 'initialize_admin' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'admin_style_and_scripts' ) );
add_filter( 'user_contactmethods', array( $this, 'add_extra_fields' ) );
add_filter( 'plugin_action_links_' . SIMPLE_AUTHOR_BOX_SLUG, array( $this, 'settings_link' ) );
}
}
public function initialize_admin() {
// Class that handles admin page
new Simple_Author_Box_Admin_Page();
// Class that handles author box previewer
new Simple_Author_Box_Previewer();
}
/**
* See this: https://codex.wordpress.org/Plugin_API/Filter_Reference/get_avatar
*
* Custom function to overwrite WordPress's get_avatar function
*
* @param [type] $avatar
* @param [type] $id_or_email
* @param [type] $size
* @param [type] $default
* @param [type] $alt
* @param [type] $args
* @return void
*/
public function replace_gravatar_image( $avatar, $id_or_email, $size, $default, $alt, $args = array() ) {
// Process the user identifier.
$user = false;
if ( is_numeric( $id_or_email ) ) {
$user = get_user_by( 'id', absint( $id_or_email ) );
} elseif ( is_string( $id_or_email ) ) {
$user = get_user_by( 'email', $id_or_email );
} elseif ( $id_or_email instanceof WP_User ) {
// User Object
$user = $id_or_email;
} elseif ( $id_or_email instanceof WP_Post ) {
// Post Object
$user = get_user_by( 'id', (int) $id_or_email->post_author );
} elseif ( $id_or_email instanceof WP_Comment ) {
if ( ! empty( $id_or_email->user_id ) ) {
$user = get_user_by( 'id', (int) $id_or_email->user_id );
}
}
if ( ! $user || is_wp_error( $user ) ) {
return $avatar;
}
$custom_profile_image = get_user_meta( $user->ID, 'sabox-profile-image', true );
$class = array( 'avatar', 'avatar-' . (int) $args['size'], 'photo' );
if ( ! $args['found_avatar'] || $args['force_default'] ) {
$class[] = 'avatar-default';
}
if ( $args['class'] ) {
if ( is_array( $args['class'] ) ) {
$class = array_merge( $class, $args['class'] );
} else {
$class[] = $args['class'];
}
}
$class[] = 'sab-custom-avatar';
if ( '' !== $custom_profile_image && true !== $args['force_default'] ) {
$avatar = sprintf(
"",
esc_attr( $args['alt'] ),
esc_url( $custom_profile_image ),
esc_url( $custom_profile_image ) . ' 2x',
esc_attr( join( ' ', $class ) ),
$args['extra_attr']
);
}
return $avatar;
}
public function define_public_hooks() {
$this->options = Simple_Author_Box_Helper::get_option( 'saboxplugin_options' );
$this->options['sab_footer_inline_style'] = Simple_Author_Box_Helper::get_option( 'sab_footer_inline_style' );
add_action( 'wp_enqueue_scripts', array( $this, 'saboxplugin_author_box_style' ), 10 );
add_shortcode( 'simple-author-box', array( $this, 'shortcode' ) );
add_filter( 'sabox_hide_social_icons', array( $this, 'show_social_media_icons' ), 10, 2 );
if ( '0' == $this->options['sab_autoinsert'] ) {
add_filter( 'the_content', 'wpsabox_author_box' );
}
if ( '0' == $this->options['sab_footer_inline_style'] ) {
add_action(
'wp_footer', array(
$this,
'inline_style',
), 13
);
} else {
add_action( 'wp_head', array( $this, 'inline_style' ), 15 );
}
}
public function settings_link( array $links ) {
$links['sab'] = sprintf( '%s', admin_url( 'admin.php?page=simple-author-box-options' ), __( 'Settings', 'saboxplugin' ) );
return $links;
}
public function admin_style_and_scripts( $hook ) {
$suffix = '.min';
if ( SIMPLE_AUTHOR_SCRIPT_DEBUG ) {
$suffix = '';
}
// globally loaded
wp_enqueue_style( 'sabox-css', SIMPLE_AUTHOR_BOX_ASSETS . 'css/sabox.css' );
wp_enqueue_style( 'saboxplugin-admin-style', SIMPLE_AUTHOR_BOX_ASSETS . 'css/sabox-admin-style' . $suffix . '.css' );
// loaded only on plugin page
if ( 'toplevel_page_simple-author-box-options' == $hook ) {
// Styles
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_style( 'jquery-ui', SIMPLE_AUTHOR_BOX_ASSETS . 'css/jquery-ui.min.css' );
// Scripts
wp_enqueue_script(
'sabox-admin-js', SIMPLE_AUTHOR_BOX_ASSETS . 'js/sabox-admin.js', array(
'jquery-ui-slider',
'wp-color-picker',
), false, true
);
wp_enqueue_script(
'sabox-plugin-install', SIMPLE_AUTHOR_BOX_ASSETS . 'js/plugin-install.js', array(
'jquery',
'updates',
), '1.0.0', 'all'
);
// loaded only on user profile page
} elseif ( 'profile.php' == $hook || 'user-edit.php' == $hook ) {
wp_enqueue_style( 'saboxplugin-admin-style', SIMPLE_AUTHOR_BOX_ASSETS . 'css/sabox-admin-style' . $suffix . '.css' );
wp_enqueue_media();
wp_enqueue_editor();
wp_enqueue_script( 'sabox-admin-editor-js', SIMPLE_AUTHOR_BOX_ASSETS . 'js/sabox-editor.js', array(), false, true );
$sabox_js_helper = array();
$social_icons = apply_filters( 'sabox_social_icons', Simple_Author_Box_Helper::$social_icons );
unset( $social_icons['user_email'] );
$sabox_js_helper['socialIcons'] = $social_icons;
wp_localize_script( 'sabox-admin-editor-js', 'SABHerlper', $sabox_js_helper );
}
}
public function add_extra_fields( $extra_fields ) {
unset( $extra_fields['aim'] );
unset( $extra_fields['jabber'] );
unset( $extra_fields['yim'] );
return $extra_fields;
}
/*----------------------------------------------------------------------------------------------------------
Adding the author box main CSS
-----------------------------------------------------------------------------------------------------------*/
public function saboxplugin_author_box_style() {
$suffix = '.min';
if ( SIMPLE_AUTHOR_SCRIPT_DEBUG ) {
$suffix = '';
}
$sab_protocol = is_ssl() ? 'https' : 'http';
$sab_box_subset = Simple_Author_Box_Helper::get_option( 'sab_box_subset' );
/**
* Check for duplicate font families, remove duplicates & re-work the font enqueue procedure
*
* @since 2.0.4
*/
if ( 'none' != strtolower( $sab_box_subset ) ) {
$sab_subset = '&subset=' . strtolower( $sab_box_subset );
} else {
$sab_subset = '&subset=latin';
}
$sab_author_font = Simple_Author_Box_Helper::get_option( 'sab_box_name_font' );
$sab_desc_font = Simple_Author_Box_Helper::get_option( 'sab_box_desc_font' );
$sab_web_font = Simple_Author_Box_Helper::get_option( 'sab_box_web_font' );
$google_fonts = array();
if ( $sab_author_font && 'none' != strtolower( $sab_author_font ) ) {
$google_fonts[] = str_replace( ' ', '+', esc_attr( $sab_author_font ) );
}
if ( $sab_desc_font && 'none' != strtolower( $sab_desc_font ) ) {
$google_fonts[] = str_replace( ' ', '+', esc_attr( $sab_desc_font ) );
}
if ( '1' == $this->options['sab_web'] && $sab_web_font && 'none' != strtolower( $sab_web_font ) ) {
$google_fonts[] = str_replace( ' ', '+', esc_attr( $sab_web_font ) );
}
$google_fonts = apply_filters( 'sabox_google_fonts', $google_fonts );
$google_fonts = array_unique( $google_fonts );
if ( ! empty( $google_fonts ) ) { // let's check the array's not empty before actually loading; we want to avoid loading 'none' font-familes
$final_google_fonts = array();
foreach ( $google_fonts as $v ) {
$final_google_fonts[] = $v . ':400,700,400italic,700italic';
}
wp_register_style( 'sab-font', $sab_protocol . '://fonts.googleapis.com/css?family=' . implode( '|', $final_google_fonts ) . $sab_subset, array(), null );
}
/**
* end changes introduced in 2.0.4
*/
if ( ! is_single() and ! is_page() and ! is_author() and ! is_archive() ) {
return;
}
if ( ! empty( $google_fonts ) ) {
wp_enqueue_style( 'sab-font' );
}
}
public function inline_style() {
if ( ! is_single() and ! is_page() and ! is_author() and ! is_archive() ) {
return;
}
$style = '';
echo $style;
}
public function shortcode( $atts ) {
$defaults = array(
'ids' => '',
);
$atts = wp_parse_args( $atts, $defaults );
if ( '' != $atts['ids'] ) {
$ids = explode( ',', $atts['ids'] );
ob_start();
$sabox_options = Simple_Author_Box_Helper::get_option( 'saboxplugin_options' );
foreach ( $ids as $user_id ) {
$template = Simple_Author_Box_Helper::get_template();
$sabox_author_id = $user_id;
echo '