Current File : /var/www/e360ban/wp-content/plugins/wp-shortcodes-usuarios/integraciones/buddypress.php |
<?php
/**
* Datos de BuddyPress
* copyright Enrique J. Ros - enrique@enriquejros.com
*
* @author Enrique J. Ros
* @link https://www.enriquejros.com
* @since 1.0.0
* @package WPShortcodesUsuarios
*
* http://hookr.io/plugins/buddypress/#index
*
*/
defined ('ABSPATH') or exit;
Class WP_Shortcodes_Usuarios_BuddyPress {
public function __construct ($dato_shortcode, $user_id, $shortcode_id) {
$this->resultado = false;
switch ($dato_shortcode) {
case 'enlace_perfil_bp':
$this->resultado = bp_core_get_userlink ($user_id);
break;
case 'url_perfil_bp':
$this->resultado = bp_core_get_user_domain ($user_id);
break;
case 'foto_perfil_bp':
$datos = get_userdata ($user_id);
$size = apply_filters ('wp_shortcodes_usuarios_bp_imagen_perfil', get_field ('size', $shortcode_id), $shortcode_id);
/**
* Para cambiar el tamaño por encima del máximo:
*
* add_filter ('wp_shortcodes_usuarios_bp_imagen_perfil', function ($size) {
*
* return 500;
* }, 10, 1);
*
*/
$this->resultado = get_avatar ($datos->user_email, $size);
break;
case 'imagen_portada_bp':
$this->resultado = ($url = bp_attachments_get_attachment ('url', ['item_id' => $user_id])) ? sprintf ('<img src="%s" />', $url) : false;
break;
case 'num_grupos_creador_bp':
$this->resultado = 0;
foreach (groups_get_user_groups($user_id)['groups'] as $grupo_id)
if ($grupo = groups_get_group (['group_id' => $grupo_id]) and $grupo->creator_id == $user_id)
$this->resultado++;
break;
case 'lista_grupos_creador_bp':
$grupos = [];
$enlace = apply_filters ('wp_shortcodes_usuarios_bp_grupos_creador_enlace', true, $shortcode_id);
/**
* Si queremos que la lista no incluya un enlace a cada grupo:
*
* add_filter ('wp_shortcodes_usuarios_bp_grupos_creador_enlace', '__return_false');
*
*/
foreach (groups_get_user_groups($user_id)['groups'] as $grupo_id)
if ($grupo = groups_get_group (['group_id' => $grupo_id]) and $grupo->creator_id == $user_id)
$grupos[] = $grupo;
if (count ($grupos)) {
$this->resultado = '<ul class="wp-shortcodes-grupos-creados">';
foreach ($grupos as $grupo)
$this->resultado .= $enlace ? sprintf ('<li>%s</li>', bp_get_group_link ($grupo), $grupo->name) : sprintf ('<li>%s</li>', $grupo->name);
$this->resultado .= '</ul>';
}
break;
case 'num_grupos_miembro_bp':
$this->resultado = groups_get_user_groups ($user_id)['total'];
break;
case 'lista_grupos_miembro_bp':
$grupos = [];
$enlace = apply_filters ('wp_shortcodes_usuarios_bp_grupos_miembro_enlace', true, $shortcode_id);
/**
* Si queremos que la lista no incluya un enlace a cada grupo:
*
* add_filter ('wp_shortcodes_usuarios_bp_grupos_miembro_enlace', '__return_false');
*
*/
foreach (groups_get_user_groups($user_id)['groups'] as $grupo_id)
if ($grupo = groups_get_group (['group_id' => $grupo_id]))
$grupos[] = $grupo;
if (count ($grupos)) {
$this->resultado = '<ul class="wp-shortcodes-grupos-miembro">';
foreach ($grupos as $grupo)
$this->resultado .= $enlace ? sprintf ('<li>%s</li>', bp_get_group_link ($grupo), $grupo->name) : sprintf ('<li>%s</li>', $grupo->name);
$this->resultado .= '</ul>';
}
break;
case 'num_amigos_bp':
$this->resultado = friends_get_friend_count_for_user ($user_id);
break;
case 'lista_amigos_bp':
case 'nuevos_amigos_bp':
case 'amigos_activos_bp':
if ('lista_amigos_bp' == $dato_shortcode)
$funcion = 'friends_get_alphabetically';
else if ('nuevos_amigos_bp' == $dato_shortcode)
$funcion = 'friends_get_newest';
else if ('amigos_activos_bp' == $dato_shortcode)
$funcion = 'friends_get_recently_active';
$ninguno = apply_filters ('wp_shortcodes_usuarios_bp_lista_amigos_ninguno', false, $shortcode_id);
/**
* Si queremos mostrar un mensaje en caso de que no haya amigos en la lista:
*
* add_filter ('wp_shortcodes_usuarios_bp_lista_amigos_ninguno', function ($mensaje) {
*
* return 'Mensaje a mostrar';
* }, 10, 1);
*
*/
$enlace = apply_filters ('wp_shortcodes_usuarios_bp_lista_amigos_enlace', true, $shortcode_id);
/**
* Si queremos que la lista no incluya un enlace al perfil de cada amigo:
*
* add_filter ('wp_shortcodes_usuarios_bp_lista_amigos_enlace', '__return_false');
*
*/
$amigos = $funcion ($user_id);
if ($amigos['total']) {
$this->resultado = '<ul class="wp-shortcodes-lista-amigos">';
foreach ($amigos['users'] as $amigo)
$this->resultado .= $enlace ? sprintf ('<li>%s</li>', bp_core_get_userlink ($amigo->ID)) : sprintf ('<li>%s</li>', $amigo->display_name);
$this->resultado .= '</ul>';
}
else
$this->resultado = $ninguno;
break;
}
return $this->resultado;
}
}