um_init();
if( wpforo_feature('um_forum_tab') ){
add_filter('um_profile_tabs', array($this, 'um_tabs'), 999 );
add_filter('um_user_profile_tabs', array($this, 'um_tabs'), 998 );
add_filter('um_user_profile_tabs', array($this, 'um_user_tabs'), 999 );
add_action('um_profile_content_foro_default', array($this, 'um_default_tab_content') );
add_action('um_profile_content_foro_topics', array($this, 'um_user_topics') );
add_action('um_profile_content_foro_replies', array($this, 'um_user_replies') );
add_action('um_profile_content_foro_favorites', array($this, 'um_user_favorites') );
add_action('um_profile_content_foro_subscriptions', array($this, 'um_user_subscriptions') );
}
if( wpforo_feature('profile') === 4 ){
add_filter('wpforo_member_profile_url', array($this, 'um_profile_url'), 10, 3 );
}
if( wpforo_feature('um_notification') && class_exists( 'UM_Notifications_API') ) {
add_filter('um_notifications_core_log_types', array($this, 'um_notification_types'), 500, 1 );
add_filter('um_notifications_get_icon', array($this, 'um_notification_icon'), 10, 2 );
add_action('wpforo_after_add_post', array($this, 'um_add_notification'), 10, 2 );
add_action('wpforo_post_status_update', array($this, 'um_notification_on_post_status_change'), 10, 2 );
}
}
function um_init(){
$options = get_option( 'um_options' );
if( wpfkey($options, 'profile_tab_foro') ||
wpfkey($options, 'log_wpforo_user_reply')
){
if( !empty( $options ) ){
//Set default options for Tab Settings
$tab_options = array( 'profile_tab_foro' => 1, 'profile_tab_foro_privacy' => 0 );
foreach( $tab_options as $key => $value ) {
if(!isset($options[$key])) $options[$key] = $value;
}
//Set default options for Notification Settings
$notification_options = array();
$notification_options['wpforo_user_reply'] = array(
'title' => __('User leaves a reply to wpForo topic', 'wpforo'),
'template' => '{member} has replied to a topic you started on the forum.',
'account_desc' => __('When a member replies to one of my forum topics', 'wpforo')
);
$notification_options['wpforo_user_reply_to_reply'] = array(
'title' => __('User replied to wpForo post', 'wpforo'),
'template' => '{member} has replied to your post on the forum.',
'account_desc' => __('When a member replies to one of my post in forum topics', 'wpforo')
);
foreach( $notification_options as $type => $note ) {
if(!isset($options['log_' . $type])) $options['log_' . $type] = 1;
if(!isset( $options['log_' . $type . '_template'])) $options['log_' . $type . '_template'] = $note['template'];
}
update_option( 'um_options', $options );
}
}
}
function um_tabs( $tabs ) {
$user_id = um_user('ID');
if( $user_id ){
$member = wpforo_member( $user_id );
$topics = 0; $posts = 0; $likes = 0; $subscriptions = 0;
if( wpfval( $member, 'stat' ) ){
if( wpfval($member, 'stat', 'topics') ) $topics = $member['stat']['topics'];
if( wpfval($member, 'stat', 'posts') ) $posts = $member['stat']['posts'];
if( wpfval($member, 'stat', 'likes') ) $likes = $member['stat']['likes'];
}
$args = array('userid' => $user_id);
$subs = WPF()->sbscrb->get_subscribes( $args);
if( !empty($subs) ) $subscriptions = count($subs);
$tabs['foro'] = array(
'name' => wpforo_phrase('Forums', false),
'icon' => 'um-faicon-comments',
'subnav' => array(
'topics' => wpforo_phrase('Topics Started', false) . '' . intval($topics) . '',
'replies' => wpforo_phrase('Replies Created', false) . '' . intval($posts) . '',
'favorites' => wpforo_phrase('Liked Posts', false) . '' . intval($likes) . '',
'subscriptions' => wpforo_phrase('Subscriptions', false) . '' . intval($subscriptions) . '',
),
'subnav_default' => 'topics'
);
}
return $tabs;
}
function um_user_tabs( $tabs ) {
if( wpfval($tabs, 'foro','subnav_default') &&
wpfval($tabs, 'foro', 'subnav', $tabs['foro']['subnav_default'])
) {
$i = 0;
if ( isset( $tabs['foro']['subnav'] ) ) {
foreach( $tabs['foro']['subnav'] as $id => $data ) {
$i++;
if ( $i == 1 ) {
$tabs['foro']['subnav_default'] = $id;
}
}
}
}
return $tabs;
}
function um_default_tab_content( $args ) {
$this->um_user_topics( $args );
}
function um_user_topics( $args ) {
$user_id = um_user('ID');
if(isset($_GET['wpfpaged']) && intval($_GET['wpfpaged'])) $paged = intval($_GET['wpfpaged']);
$paged = (isset($paged) && $paged) ? $paged : 1;
$args = array(
'offset' => ($paged - 1) * WPF()->current_object['items_per_page'],
'row_count' => WPF()->current_object['items_per_page'],
'userid' => $user_id,
'orderby' => 'modified',
'check_private' => true
);
$activities = WPF()->topic->get_topics( $args, $items_count);
?>
($paged - 1) * WPF()->current_object['items_per_page'],
'row_count' => WPF()->current_object['items_per_page'],
'userid' => $user_id,
'orderby' => '`created` DESC',
'check_private' => true
);
$activities = WPF()->post->get_posts( $args, $items_count);
?>
$user_id,
'offset' => ($paged - 1) * WPF()->current_object['items_per_page'],
'row_count' => WPF()->current_object['items_per_page'],
'var' => 'postid'
);
$activities = WPF()->post->get_liked_posts( $args, $items_count);
?>
($paged - 1) * WPF()->current_object['items_per_page'],
'row_count' => WPF()->current_object['items_per_page'],
'userid' => $user_id,
'order' => 'DESC'
);
$activities = WPF()->sbscrb->get_subscribes( $args, $items_count);
?>
|
wpforo_phrase('All ' . $activity['type'], false));
$item_url = '#';
}
if(empty($item)) continue;
?>
|
|
|
um_profile_permalink( $member['ID'] );
if( isset($user_domain) ){
$user_domain = ( $user_domain ) ? $user_domain : get_author_posts_url( $member['ID'] );
$user_domain = strtok( $user_domain, '?');
$tabs = wpforo_feature('um_forum_tab');
if( $user_domain && $tabs ){
if( $template == 'account' ){
$url = $user_domain . '?profiletab=main&um_action=edit';
}
elseif( $template == 'activity' ){
$url = $user_domain . '?profiletab=foro';
}
elseif( $template == 'subscriptions' ){
$url = $user_domain . '?profiletab=foro&subnav=subscriptions';
}
elseif( $template == 'profile' ) {
$url = $user_domain;
}
} else {
$url = $user_domain;
}
}
}
if( isset($user_domain) ){
return apply_filters('wpforo_um_member_profile_url', $url, $member, $template);
} else{
return $url;
}
}
function um_profile_permalink( $user_id ){
if( !$user_id ) return false;
$permalink_base = UM()->options()->get( 'permalink_base' );
$slug = get_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", true );
if ( empty( $slug ) ) {
if ( $permalink_base != 'user_login' ) {
$slug = get_user_meta( $user_id, "um_user_profile_url_slug_user_login", true );
}
if ( empty( $slug ) ) {
return false;
}
}
$um = get_option('um_options');
$page_id = ( wpfval($um, 'core_user') ) ? $um['core_user'] : '';
$profile_url = get_permalink( $page_id );
$profile_url = apply_filters( 'um_localize_permalink_filter', $profile_url, $page_id );
if ( get_option('permalink_structure') ) {
$profile_url = trailingslashit( untrailingslashit( $profile_url ) );
$profile_url = $profile_url . strtolower( $slug ). '/';
} else {
$profile_url = add_query_arg( 'um_user', strtolower( $slug ), $profile_url );
}
return ! empty( $profile_url ) ? $profile_url : '';
}
function um_notification_types( $array ){
$array['wpforo_user_reply'] = array(
'title' => __('User leaves a reply to wpForo topic', 'wpforo'),
'template' => __('{member} has replied to a topic you started on the forum.', 'wpforo'),
'account_desc' => __('When a member replies to one of my forum topics', 'wpforo')
);
$array['wpforo_user_reply_to_reply'] = array(
'title' => __('User replied to wpForo post', 'wpforo'),
'template' => __('{member} has replied to your post on the forum.', 'wpforo'),
'account_desc' => __('When a member replies to one of my post in forum topics', 'wpforo')
);
return $array;
}
function um_notification_icon( $output, $type ) {
if ( $type == 'wpforo_user_reply' ) {
$output = '';
}
if ( $type == 'wpforo_user_reply_to_reply' ) {
$output = '';
}
return $output;
}
function um_add_notification( $post = array(), $topic = array() ) {
//Get reply data
if( !wpfval($post,'postid') ) return;
if( !wpfval($topic,'topicid') ) return;
//Don't notify if a new reply is unapproved
if( wpfval($post,'status') ) return false;
if( wpfval($post, 'is_first_post')) return false;
//Get author information
$author_id = $post['userid'];
$topic_author_id = $topic['userid'];
$reply_to_item_author_id = 0;
um_fetch_user( $author_id );
// Hierarchical replies
if ( wpfval($post, 'parentid') ) {
$reply_to_item_author_id = wpforo_post( $post['parentid'], 'userid' );
}
// Notify the topic author if not the current reply author
if ( $author_id != $topic_author_id ) {
$vars['photo'] = um_get_avatar_url( get_avatar( $author_id, 40 ) );
$vars['member'] = um_user('display_name');
$vars['notification_uri'] = esc_url_raw( $post['posturl'] );
UM()->Notifications_API()->api()->store_notification( $topic_author_id, 'wpforo_user_reply', $vars );
}
// Notify the immediate reply author if not the current reply author
if( $reply_to_item_author_id &&
wpfval($post, 'parentid') &&
$author_id != $reply_to_item_author_id &&
$topic_author_id != $reply_to_item_author_id )
{
$vars['photo'] = um_get_avatar_url( get_avatar( $author_id, 40 ) );
$vars['member'] = um_user('display_name');
$vars['notification_uri'] = esc_url_raw( $post['posturl'] );
UM()->Notifications_API()->api()->store_notification( $reply_to_item_author_id, 'wpforo_user_reply_to_reply', $vars );
}
}
function um_notification_on_post_status_change( $reply_id, $status = 0 ) {
if( !$reply_id || !wpforo_feature('um_notification') ) return;
$post = WPF()->post->get_post($reply_id);
$post['status'] = $status;
$post['posturl'] = WPF()->post->get_post_url( $post['postid'] );
if( wpfval($post,'topicid') ) {
$topic = WPF()->topic->get_topic($post['topicid']);
} else {
return false;
}
if( !$status ){
$this->um_add_notification( $post, $topic );
}
}
function um_frontend_enqueue(){
if (is_rtl()) {
wp_register_style('wpforo-um-rtl', WPFORO_TEMPLATE_URL . '/integration/ultimate-member/style-rtl.css', false, WPFORO_VERSION );
wp_enqueue_style('wpforo-um-rtl');
}
else{
wp_register_style('wpforo-um', WPFORO_TEMPLATE_URL . '/integration/ultimate-member/style.css', false, WPFORO_VERSION );
wp_enqueue_style('wpforo-um');
}
if(!is_wpforo_page()){
wp_enqueue_style( 'dashicons' );
}
}
}
$WPFUM = new wpForo_UM();
}