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); ?>

topic->members($topic['topicid'], 3); ?> member->avatar($member, 'alt="'.esc_attr($member['display_name']).'"', 30) ?>
tpl->pagenavi( $paged, $items_count, null, false ); ?>
($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); ?>

tpl->pagenavi( $paged, $items_count, null, false ); ?>
$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); ?>

tpl->pagenavi( $paged, $items_count, null, false ); ?>
($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; ?>
tpl->pagenavi( $paged, $items_count, null, false ); ?>
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(); }