403Webshell
Server IP : 185.143.233.238  /  Your IP : 185.215.232.195
Web Server : LiteSpeed
System : Linux saman.shetabanhost.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User : behrakir ( 1361)
PHP Version : 8.1.34
Disable Function : symlink,shell_exec,show_source,exec,popen,system,passthru,proc_open,proc_close,pcntl_exec,mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/behrakir/khanomam.com/wp-content/plugins/wp-score-gamification/app/classes/parts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/behrakir/khanomam.com/wp-content/plugins/wp-score-gamification/app/classes/parts/referer.php
<?php namespace Avans\parts;

use Avans\data;
use Avans\func;
use Avans\user;
use stdClass;

class referer{

    private static $table = 'avans_log_refs';
    
    public static function add_ref_log($type,$amount,$args){

        if ($amount <= 0) {
            return;
        }

        global $wpdb;
        $table_log = $wpdb->prefix . self::$table;
        $wpdb->insert(
            $table_log,
            array(
                'ref_id' => $args->ref_id,
                'user_id' => $args->user_id,
                'type' => $type,
                'amount' => $amount,
                'order_id' =>$args->order_id,
                'status' => $args->status,
                'created_at' => current_time('mysql'),
            )
        );
    }
    
    

    public static function apply_commision_ref_order($log){

        $status = false;

        if($log['status'] == 'approve'){
            return true;
        }


        if($log['type'] == "wc_wallet"){
            $user_info = get_userdata($log['user_id']);
            $user_name = $user_info->display_name;
            $description =  'کمسیون خرید مشتری معرفی شده-'.$user_name;
            $status = convert::wallet_transaction($log['ref_id'], $log['amount'], $description);
        }

        if ($log['type'] == "wc_score") {

            $details = [
                array(
                    'key' => 'order_id',
                    'value' => $log['order_id'],
                ),
                array(
                    'key' => 'customer',
                    'value' => $log['user_id']
                )
            ];

            $temp_score = get_user_meta((int)$log['ref_id'],AVANS_PREFIX.'temp_max_score',true);
			update_user_meta((int)$log['ref_id'],AVANS_PREFIX.'temp_max_score','');
            $status = user::add_log((int)$log['ref_id'], 'wc_referer', $details, (int)$log['amount']);
			update_user_meta((int)$log['ref_id'],AVANS_PREFIX.'temp_max_score',$temp_score);
        }

        if($status){
            $status = self::update_status_log_ref($log['id']);
            do_action('avans_after_applied_commision_referer',$log);
        }

        return $status;

    }

    public static function update_status_log_ref($log_id){
        global $wpdb;
        $tbl = $wpdb->prefix.self::$table;
        $data = array('status'=>'approve');
        $where = array('id'=> $log_id);
        return $wpdb->update($tbl, $data, $where);
    }

    public static function get_log_order($order_id){
        global $wpdb;
        $tbl = $wpdb->prefix.self::$table;
        $query = "SELECT * FROM {$tbl} WHERE order_id = %d";
        $result = $wpdb->get_row($wpdb->prepare($query, $order_id));
        return $result;
    }

    public static function check_fee($user_id,$cart,$refcode){
        $settings = AVANS_SETTINGS['referer_settings']['referer'];
        $subtotal = $cart->cart_contents_total;
        
        $refcode = trim($refcode);
        
        $user_ref_code = get_user_meta($user_id, AVANS_PREFIX.'user_ref_code', true);
        $feetext = 'تخفیف بابت وارد کردن کد معرف';
        $fee = self::calculate_fee($user_id,$settings,$subtotal); 
        
        if ( self::is_permision_for_use($settings,$user_id) ) {
            
            if ( func::is_set($refcode) ) {
                $users = user::find_by_ref($refcode);
                if (count($users)!= 0 && $refcode != $user_ref_code) {
                    WC()->session->set(AVANS_PREFIX.'referal_code', $refcode);
                }
            }else{
                if ( isset($_COOKIE['avans-referal-id']) && !empty($_COOKIE['avans-referal-id']) ) {
                    $users = user::find_by_ref($_COOKIE['avans-referal-id']);
                    $code_referal = trim($_COOKIE['avans-referal-id']);
                    if (count($users)!=0  && $code_referal != $user_ref_code) {
                        $code_referal = $_COOKIE['avans-referal-id'];
                        WC()->session->set(AVANS_PREFIX.'referal_code', $code_referal);
                    }else{
                        WC()->session->__unset(AVANS_PREFIX.'referal_code');
                    }
                }else{
					WC()->session->__unset(AVANS_PREFIX.'referal_code');
				}
            }

            $code_referal = WC()->session->get(AVANS_PREFIX.'referal_code');
            if ($fee > 0 && func::is_set($code_referal)) {
                $cart->add_fee($feetext, -$fee);
            }

        }
    
    }

    public static function get_discount_refcode($user_id,$settings){
        $level = user::get_level($user_id);
        $role =  user::get_role($user_id);
        $normal = (int)$settings['fee'];
        $role   = (int)data::check_condition((array)$settings['condition-coupon'], 'role', $role);
        $level  = (int)data::check_condition((array)$settings['condition-coupon'], 'level', $level);
        if (max($role, $level) > 0) {
            return (int)max($role, $level);
        }
        return $normal;
    }

    public static function get_discount_commision($ref_id,$settings){
        $level = user::get_level($ref_id);
        $role =  user::get_role($ref_id);
        $normal = (int)$settings['ref_gift'];
        $role  = (int)data::check_condition((array)$settings['condition-commission'], 'role', $role);
        $level = (int)data::check_condition((array)$settings['condition-commission'], 'level', $level);
        if (max($role, $level) > 0) {
            return (int)max($role, $level);
        }
        return $normal;
    }


    public static function calculate_fee($user_id,$settings,$subtotal){
        $calc_discount = self::get_discount_refcode($user_id,$settings);
        if ($settings['fee_type']=='percent') {
            $discount = $calc_discount / 100;
            $fee = $subtotal * $discount;
            if (($subtotal * $discount) > $subtotal) {
                $fee = $subtotal;
            }
        } else {
            $fee = $calc_discount;
            if ($calc_discount > $subtotal) {
                $fee = $subtotal;
            }
        }
        return $fee;
    }

    public static function is_permision_for_use($settings,$user_id){
        $last_ref_code_used = get_user_meta($user_id, AVANS_PREFIX.'wc_ref_code', true);
        if ( $settings['repeat'] != 'once' || empty($last_ref_code_used) ) {
            return true;
        }
        return false;
    }

    public static function apply_referer_commission($order,$customer_id,$ref_code){
        $refs = get_users(array('meta_key' => AVANS_PREFIX.'user_ref_code', 'meta_value' => $ref_code));
        $settings = AVANS_SETTINGS['referer_settings']['referer'];
        
        $details = [
            array(
                'key' => 'order_id',
                'value' => $order->get_id()
            ),
            array(
                'key' => 'customer',
                'value' => $customer_id
                )
            ];
            
            
            $sum_score = data::get_sum_score_for_purchase($customer_id,$order);
            $price = data::get_total_order($order);
            
            $args = new stdClass();
            $args->user_id = $customer_id;
            $args->order_id = $order->get_id();
            $args->status = 'processing';
            
            
            foreach ($refs as $ref) {
                
                $ref_gift = self::get_discount_commision($ref->ID,$settings);
                $args->ref_id = $ref->ID;
                 
                switch($settings['ref_gift_type']){
                    case 'percent-score':
                        if($sum_score > 0){
                            $score = $sum_score * ($ref_gift/100);
                            if ($args->status == 'approve') {
                                user::add_log($ref->ID, 'wc_referer', $details, (int)$score);
                            }
                        self::add_ref_log('wc_score',(int)$score,$args);
                    }
                    break;
                    case 'static-score':
                        if ($args->status == 'approve') {
                            user::add_log($ref->ID, 'wc_referer', $details, (int)$ref_gift);
                        }
                        
                        self::add_ref_log('wc_score',(int)$ref_gift , $args);
                        break;
                case 'percent-total-price':
                    $amount = $price * ($ref_gift/100);
                    $user_info = get_userdata($customer_id);
                    $user_name = $user_info->display_name;
                    
                    $description =  'کمسیون خرید مشتری معرفی شده-'.$user_name;
                    
                    if ($args->status == 'approve') {
                        convert::wallet_transaction($ref->ID, $amount, $description);
                    }
                    self::add_ref_log('wc_wallet',$amount, $args);
                break;

                do_action('avans_after_referer_code_used_in_order',$ref->ID,$customer_id,$order->get_id());

            }
            

    
        }

    }

    public static function get_order_referer_by_id($order_id){
        $refcode = get_post_meta($order_id, AVANS_PREFIX.'wc_ref_order', true);
        if(!empty($refcode)){
            $users = user::find_by_ref($refcode);
            if(count($users) > 0){
                foreach($users as $user){
                    return get_user_by("ID" , $user->user_id);
                }
            }
        }
        return false;
    }

    public static function get_user_purchase_refs($user_id){
        global $wpdb;
        $tbl = $wpdb->prefix.self::$table;
        $postmeta = $wpdb->postmeta;
        $result =  $wpdb->get_results("SELECT 
            COUNT(id) as count_order,sum(amount) as amount,sum(meta_value) as total,ref_id FROM $tbl
            JOIN $postmeta ON $tbl.order_id = $postmeta.post_id
            WHERE 
            meta_key = '_order_total' AND
            status = 'approve' AND
            user_id = $user_id
            GROUP BY ref_id"
        );
        return $result;
    }


}

Youez - 2016 - github.com/yon3zu
LinuXploit