asgarosforum = $object;
add_action('asgarosforum_breadcrumbs_profile', array($this, 'add_breadcrumbs_profile'));
add_action('asgarosforum_breadcrumbs_history', array($this, 'add_breadcrumbs_history'));
}
// Checks if the profile functionality is enabled.
public function functionalityEnabled() {
return $this->asgarosforum->options['enable_profiles'];
}
// Checks if profile links should be hidden for the current user.
public function hideProfileLink() {
if (!is_user_logged_in() && $this->asgarosforum->options['hide_profiles_from_guests']) {
return true;
} else {
return false;
}
}
public function get_user_data($user_id) {
return get_user_by('id', $user_id);
}
// Gets the current title.
public function get_profile_title() {
$currentTitle = __('Profile', 'asgaros-forum').$this->get_title_suffix();
return $currentTitle;
}
public function get_history_title() {
$currentTitle = __('Post History', 'asgaros-forum').$this->get_title_suffix();
return $currentTitle;
}
private function get_title_suffix() {
$suffix = '';
$userData = $this->get_user_data($this->asgarosforum->current_element);
if ($userData) {
$suffix = ': '.$userData->display_name;
}
return $suffix;
}
// Sets the breadcrumbs.
public function add_breadcrumbs_profile() {
$elementLink = $this->asgarosforum->get_link('current');
$elementTitle = __('Profile', 'asgaros-forum').$this->get_title_suffix();
$this->asgarosforum->breadcrumbs->add_breadcrumb($elementLink, $elementTitle);
}
public function add_breadcrumbs_history() {
$elementLink = $this->asgarosforum->get_link('current');
$elementTitle = __('Post History', 'asgaros-forum').$this->get_title_suffix();
$this->asgarosforum->breadcrumbs->add_breadcrumb($elementLink, $elementTitle);
}
public function show_profile_header($user_data) {
$userOnline = ($this->asgarosforum->online->is_user_online($user_data->ID)) ? ' class="user-online"' : '';
$background_style = '';
echo '
';
}
public function show_profile_navigation($user_data) {
echo '';
// Show first name.
if (!empty($userData->first_name)) {
$cellTitle = __('First Name:', 'asgaros-forum');
$cellValue = $userData->first_name;
$this->renderProfileRow($cellTitle, $cellValue);
}
// Show usergroups.
$userGroups = AsgarosForumUserGroups::getUserGroupsOfUser($userData->ID, 'all', true);
if (!empty($userGroups)) {
$cellTitle = __('Usergroups:', 'asgaros-forum');
$cellValue = $userGroups;
$this->renderProfileRow($cellTitle, $cellValue, 'usergroups');
}
// Show website.
if (!empty($userData->user_url)) {
$cellTitle = __('Website:', 'asgaros-forum');
$cellValue = '
'.$userData->user_url.'';
$this->renderProfileRow($cellTitle, $cellValue);
}
// Show last seen.
if ($this->asgarosforum->online->functionality_enabled) {
$cellTitle = __('Last seen:', 'asgaros-forum');
$cellValue = $this->asgarosforum->online->last_seen($userData->ID);
$this->renderProfileRow($cellTitle, $cellValue);
}
// Show member since.
$cellTitle = __('Member Since:', 'asgaros-forum');
$cellValue = $this->asgarosforum->format_date($userData->user_registered, false);
$this->renderProfileRow($cellTitle, $cellValue);
// Show biographical info.
if (!empty($userData->description)) {
$cellTitle = __('Biographical Info:', 'asgaros-forum');
$cellValue = trim(esc_html($userData->description));
$this->renderProfileRow($cellTitle, $cellValue);
}
// Show signature.
$signature = $this->asgarosforum->get_signature($userData->ID);
if ($signature !== false) {
$cellTitle = __('Signature:', 'asgaros-forum');
$cellValue = $signature;
$this->renderProfileRow($cellTitle, $cellValue);
}
echo '';
echo '
';
// Topics started.
$count_topics = $this->asgarosforum->countTopicsByUser($userData->ID);
AsgarosForumStatistics::renderStatisticsElement(__('Topics Started', 'asgaros-forum'), $count_topics, 'far fa-comments');
// Replies created.
$count_posts = $this->asgarosforum->countPostsByUser($userData->ID);
$count_posts = $count_posts - $count_topics;
AsgarosForumStatistics::renderStatisticsElement(__('Replies Created', 'asgaros-forum'), $count_posts, 'far fa-comment');
// Likes Received.
if ($this->asgarosforum->options['enable_reactions']) {
$count_likes = $this->asgarosforum->reactions->get_reactions_received($userData->ID, 'up');
AsgarosForumStatistics::renderStatisticsElement(__('Likes Received', 'asgaros-forum'), $count_likes, 'fas fa-thumbs-up');
}
echo '
';
do_action('asgarosforum_custom_profile_content', $userData);
$current_user_id = get_current_user_id();
if ($userData->ID == $current_user_id) {
echo '
';
echo '';
echo __('Edit Profile', 'asgaros-forum');
echo '';
}
// Check if the current user can ban this user.
if ($this->asgarosforum->permissions->can_ban_user($current_user_id, $userData->ID)) {
if ($this->asgarosforum->permissions->isBanned($userData->ID)) {
$url = $this->getProfileLink($userData, array('unban_user' => $userData->ID));
$nonce_url = wp_nonce_url($url, 'unban_user_'.$userData->ID);
echo '
'.__('Unban User', 'asgaros-forum').'';
} else {
$url = $this->getProfileLink($userData, array('ban_user' => $userData->ID));
$nonce_url = wp_nonce_url($url, 'ban_user_'.$userData->ID);
echo '
'.__('Ban User', 'asgaros-forum').'';
}
}
echo '
';
}
} else {
_e('This user does not exist.', 'asgaros-forum');
}
}
public function renderProfileRow($cellTitle, $cellValue, $type = '') {
echo '