403Webshell
Server IP : 43.141.49.107  /  Your IP : 113.219.202.141
Web Server : Apache
System : Linux VM-8-5-opencloudos 6.6.34-9.oc9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 19 19:35:45 CST 2024 x86_64
User : www ( 1000)
PHP Version : 8.1.27
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /www/wwwroot/www.ucppt.com/wp-content/plugins/wpcom-member-pro/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/wwwroot/www.ucppt.com/wp-content/plugins/wpcom-member-pro/includes/follow.php
<?php
namespace WPCOM\Member;
defined( 'ABSPATH' ) || exit;

class Follow{
    function __construct(){
        add_action( 'wpcom_profile_after_description', array($this, 'add_btn') );
        add_action( 'wpcom_follow_item_action', array($this, 'add_btn') );
        add_action( 'wpcom_user_card_action', array($this, 'add_btn') );
        add_action( 'wp_ajax_wpcom_follow', array($this, 'follow_action') );
        add_action( 'wp_ajax_nopriv_wpcom_follow', array($this, 'follow_action') );
        add_action( 'wp_ajax_wpcom_check_follow', array($this, 'check_follow') );
        add_action( 'wp_ajax_wpcom_user_follows', array($this, 'load_follows') );
        add_action( 'wp_ajax_nopriv_wpcom_user_follows', array($this, 'load_follows') );
        add_action( 'wp_ajax_wpcom_user_followers', array($this, 'load_followers') );
        add_action( 'wp_ajax_nopriv_wpcom_user_followers', array($this, 'load_followers') );
        add_action( 'wpcom_profile_tabs_follows', array($this, 'follows_tab') );
        add_action( 'wpcom_follow_user', array($this, 'update_count'), 10, 2 );
        add_action( 'wpcom_unfollow_user', array($this, 'update_count'), 10, 2 );

        add_filter( 'wpcom_follow_btn_html', array($this, 'follow_btn_html'), 5 );
        add_filter( 'wpcom_followed_btn_html', array($this, 'followed_btn_html'), 5 );
        add_filter( 'wpmx_localize_script', array($this, 'localize_script') );
        add_filter( 'wpcom_profile_tabs', array($this, 'profile_tab') );
        add_filter( 'wpcom_followers_count', array($this, 'get_followers_count'), 5, 2);
    }

    function follow_action(){
        $res = array('result' => 0, 'msg' => __('Followed!', WPCMP_TD));
        $user_id = get_current_user_id();
        $follow = isset($_REQUEST['follow']) ? $_REQUEST['follow'] : 0;
        if($user_id){
            if($user_id==$follow){
                $res['result'] = -3;
                $res['msg'] = __('You can’t follow yourself!', WPCMP_TD);
            }else if($this->is_followed($follow, $user_id) && $this->unfollow($follow, $user_id)){
                $res['result'] = 1; // 取消关注成功
                $res['msg'] = __('Unfollow successfully!', WPCMP_TD);
            } else if(!$this->follow($follow, $user_id)){
                $res['result'] = -2;
                $res['msg'] = __('Follow failed, please try again later!', WPCMP_TD);
            }
        }else{
            $res['result'] = -1;
            $res['msg'] = _x('Please login first', 'follow', WPCMP_TD);;
        }
        wp_send_json($res);
    }

    function check_follow(){
        $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : array();
        $user_id = get_current_user_id();
        $res = new \stdClass;
        if($user_id && $ids && is_array($ids)){
            foreach ($ids as $id) {
                $res->{$id} = $this->is_followed($id, $user_id);
            }
        }
        wp_send_json($res);
    }

    function load_follows(){
        global $wpcom_member;
        $user_id = isset($_REQUEST['user']) ? $_REQUEST['user'] : 0;
        $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : 2;
        $follows = $this->get_follows($user_id, 10, $page);
        if($follows && is_array($follows)){
            foreach ($follows as $follow) echo $wpcom_member->load_template('follow', array('follow' => $follow));
        }else{
            echo 0;
        }
        exit;
    }

    function load_followers(){
        global $wpcom_member, $wpdb;
        $user_id = isset($_REQUEST['user']) ? $_REQUEST['user'] : 0;
        $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : 1;
        $follows = $this->get_followers($user_id, 10, $page);
        if($follows && is_array($follows)){
            if($page==1) {
                $table = _get_meta_table( 'user' );
                $option_name = $wpdb->get_blog_prefix() . '_wpcom_follow';
                $count = $wpdb->get_var($wpdb->prepare( "SELECT COUNT(*) FROM $table WHERE meta_key = %s AND meta_value = %s", $option_name, $user_id ));
                header('Next-page: '.($count>10?'1':'0'));
            }
            foreach ($follows as $follow) echo $wpcom_member->load_template('follow', array('follow' => $follow));
        }else{
            echo 0;
        }
        exit;
    }

    function follow($followed, $user=''){
        global $wpdb;
        $user = $user ? $user : get_current_user_id();
        $option_name = $wpdb->get_blog_prefix() . '_wpcom_follow';
        if($user && $followed && is_numeric($user) && is_numeric($followed) && !$this->is_followed($followed, $user)){
            $res = add_user_meta($user, $option_name, $followed);
            if($res){
                do_action('wpcom_follow_user', $user, $followed);
            }
            return $res;
        }
        return false;
    }

    function unfollow($followed, $user=''){
        global $wpdb;
        $user = $user ? $user : get_current_user_id();
        $option_name = $wpdb->get_blog_prefix() . '_wpcom_follow';
        if($user && $followed && is_numeric($user) && is_numeric($followed) && $this->is_followed($followed, $user)){
            $res = delete_user_meta( $user, $option_name, $followed );
            if($res){
                do_action('wpcom_unfollow_user', $user, $followed);
            }
            return $res;
        }
        return false;
    }

    function update_count($user, $followed){
        global $wpdb;
        $table = _get_meta_table('user');
        $option_name = $wpdb->get_blog_prefix() . '_wpcom_follow';
        $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT( * ) FROM $table WHERE meta_key = %s AND meta_value = %d", $option_name, $followed));
        if(is_wp_error($count)){
            $filter = current_filter();
            $count = get_user_meta($followed, $wpdb->get_blog_prefix() . 'followers_count', true);
            $count = $count ? $count : 0;
            if($filter==='wpcom_follow_user'){
                $count += 1;
            }else if($count>0){
                $count -= 1;
            }
        }
        update_user_option($followed, 'followers_count', $count);
        return $count;
    }

    function is_followed($followed, $user=''){
        global $wpdb;
        $user = $user ? $user : get_current_user_id();
        if($user && $followed && is_numeric($user) && is_numeric($followed)) {
            $table = _get_meta_table('user');
            $option_name = $wpdb->get_blog_prefix() . '_wpcom_follow';
            if ($wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $table WHERE meta_key = %s AND user_id = %d AND meta_value = %d", $option_name, $user, $followed))) {
                return true;
            }
        }
        return false;
    }

    function get_follows($user, $number=-1, $paged=1){
        global $wpdb;
        $option_name = $wpdb->get_blog_prefix() . '_wpcom_follow';
        $ids = get_user_meta($user, $option_name);
        if($ids) {
            if($number>0){
                $ids = array_slice(array_reverse($ids), $number*($paged-1), $number);
            }
            if($ids){
                $users = get_users(array('include' => $ids, 'orderby' => 'include'));
                if(!is_wp_error($users)) return $users;
            }
        }
        return false;
    }

    function get_followers($user, $number=-1, $paged=1){
        global $wpdb;
        $table = _get_meta_table( 'user' );
        $option_name = $wpdb->get_blog_prefix() . '_wpcom_follow';
        $limit = '';
        if($number>0) $limit = $wpdb->prepare('LIMIT %d, %d', $number * ($paged - 1), $number);
        $meta_list = $wpdb->get_results( $wpdb->prepare("SELECT user_id FROM $table WHERE meta_key = %s AND meta_value = %s ORDER BY umeta_id DESC $limit", $option_name, $user) );
        $ids = array();
        if($meta_list){
            foreach ($meta_list as $meta){
                if($meta->user_id && !in_array($meta->user_id, $ids)) $ids[] = $meta->user_id;
            }
        }
        if($ids) {
            $users = get_users(array('include' => $ids, 'orderby' => 'include'));
            if(!is_wp_error($users)) return $users;
        }
        return false;
    }

    function get_followers_count($count){
        if($count==='') $count = 0;
        return $count;
    }

    function profile_tab($tabs){
        $tabs += array(
            27 => array(
                'slug' => 'follows',
                'title' => __( 'Follows', WPCMP_TD )
            )
        );
        return $tabs;
    }

    function follows_tab(){
        global $wpcom_member, $wpdb;
        $profile = isset($GLOBALS['profile']) ? $GLOBALS['profile'] : null;
        if($profile && isset($profile->ID)){
            $option_name = $wpdb->get_blog_prefix() . '_wpcom_follow';
            $ids = get_user_meta($profile->ID, $option_name);
            $number = 10;
            $atts = array(
                'user_id' => $profile->ID,
                'total' => is_array($ids) ? count($ids) : 0,
                'number' => $number,
                'follows' => $this->get_follows($profile->ID, $number)
            );
            echo $wpcom_member->load_template('follows', $atts);
        }
    }

    function follow_btn_html($btn){
        $btn = wpmx_icon('add', false) . __('Follow', WPCMP_TD);
        return $btn;
    }

    function followed_btn_html($btn){
        $btn = __('Followed', WPCMP_TD);
        return $btn;
    }

    function add_btn($user){
        $is_followed = $this->is_followed($user);
        if($is_followed){
            $html = apply_filters('wpcom_followed_btn_html', '');
        }else{
            $html = apply_filters('wpcom_follow_btn_html', '');
        }
        echo '<button type="button" class="wpcom-btn btn-xs btn-follow j-follow'.($is_followed?' followed':' btn-primary').'" data-user="'.$user.'">' . $html . '</button>';
    }

    function localize_script($scripts){
        $scripts['follow_btn'] = apply_filters('wpcom_follow_btn_html', '');
        $scripts['followed_btn'] = apply_filters('wpcom_followed_btn_html', '');
        return $scripts;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit