!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux acloudg.aryanict.com 4.18.0-513.9.1.lve.el8.x86_64 #1 SMP Mon Dec 4 15:01:22 UTC
2023 x86_64
 

uid=1095(katebhospital) gid=1098(katebhospital) groups=1098(katebhospital) 

Safe-mode: OFF (not secure)

/var/softaculous/sitepad/editor/site-data/plugins/kkart-pro/includes/   drwxr-xr-x
Free 290.68 GB of 429.69 GB (67.65%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     kkart-user-functions.php (26.58 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Kkart Customer Functions
 *
 * Functions for customers.
 *
 * @package Kkart\Functions
 * @version 2.2.0
 */

defined'ABSPATH' ) || exit;

/**
 * Prevent any user who cannot 'edit_posts' (subscribers, customers etc) from seeing the admin bar.
 *
 * Note: get_option( 'kkart_lock_down_admin', true ) is a deprecated option here for backwards compatibility. Defaults to true.
 *
 * @param bool $show_admin_bar If should display admin bar.
 * @return bool
 */
function kkart_disable_admin_bar$show_admin_bar ) {
    if ( 
apply_filters'kkart_disable_admin_bar'true ) && ! ( current_user_can'edit_posts' ) || current_user_can'manage_kkart' ) ) ) {
        
$show_admin_bar false;
    }

    return 
$show_admin_bar;
}
add_filter'show_admin_bar''kkart_disable_admin_bar'10); // phpcs:ignore WordPress.VIP.AdminBarRemoval.RemovalDetected

if ( ! function_exists'kkart_create_new_customer' ) ) {

    
/**
     * Create a new customer.
     *
     * @param  string $email    Customer email.
     * @param  string $username Customer username.
     * @param  string $password Customer password.
     * @param  array  $args     List of arguments to pass to `wp_insert_user()`.
     * @return int|WP_Error Returns WP_Error on failure, Int (user ID) on success.
     */
    
function kkart_create_new_customer$email$username ''$password ''$args = array() ) {
        if ( empty( 
$email ) || ! is_email$email ) ) {
            return new 
WP_Error'registration-error-invalid-email'__'Please provide a valid email address.''kkart' ) );
        }

        if ( 
email_exists$email ) ) {
            return new 
WP_Error'registration-error-email-exists'apply_filters'kkart_registration_error_email_exists'__'An account is already registered with your email address. <a href="#" class="showlogin">Please log in.</a>''kkart' ), $email ) );
        }

        if ( 
'yes' === get_option'kkart_registration_generate_username''yes' ) && empty( $username ) ) {
            
$username kkart_create_new_customer_username$email$args );
        }

        
$username sanitize_user$username );

        if ( empty( 
$username ) || ! validate_username$username ) ) {
            return new 
WP_Error'registration-error-invalid-username'__'Please enter a valid account username.''kkart' ) );
        }

        if ( 
username_exists$username ) ) {
            return new 
WP_Error'registration-error-username-exists'__'An account is already registered with that username. Please choose another.''kkart' ) );
        }

        
// Handle password creation.
        
$password_generated false;
        if ( 
'yes' === get_option'kkart_registration_generate_password' ) && empty( $password ) ) {
            
$password           wp_generate_password();
            
$password_generated true;
        }

        if ( empty( 
$password ) ) {
            return new 
WP_Error'registration-error-missing-password'__'Please enter an account password.''kkart' ) );
        }

        
// Use WP_Error to handle registration errors.
        
$errors = new WP_Error();

        
do_action'kkart_register_post'$username$email$errors );

        
$errors apply_filters'kkart_registration_errors'$errors$username$email );

        if ( 
$errors->get_error_code() ) {
            return 
$errors;
        }

        
$new_customer_data apply_filters(
            
'kkart_new_customer_data',
            
array_merge(
                
$args,
                array(
                    
'user_login' => $username,
                    
'user_pass'  => $password,
                    
'user_email' => $email,
                    
'role'       => 'customer',
                )
            )
        );

        
$customer_id wp_insert_user$new_customer_data );

        if ( 
is_wp_error$customer_id ) ) {
            return 
$customer_id;
        }

        
do_action'kkart_created_customer'$customer_id$new_customer_data$password_generated );

        return 
$customer_id;
    }
}

/**
 * Create a unique username for a new customer.
 *
 * @since 3.6.0
 * @param string $email New customer email address.
 * @param array  $new_user_args Array of new user args, maybe including first and last names.
 * @param string $suffix Append string to username to make it unique.
 * @return string Generated username.
 */
function kkart_create_new_customer_username$email$new_user_args = array(), $suffix '' ) {
    
$username_parts = array();

    if ( isset( 
$new_user_args['first_name'] ) ) {
        
$username_parts[] = sanitize_user$new_user_args['first_name'], true );
    }

    if ( isset( 
$new_user_args['last_name'] ) ) {
        
$username_parts[] = sanitize_user$new_user_args['last_name'], true );
    }

    
// Remove empty parts.
    
$username_parts array_filter$username_parts );

    
// If there are no parts, e.g. name had unicode chars, or was not provided, fallback to email.
    
if ( empty( $username_parts ) ) {
        
$email_parts    explode'@'$email );
        
$email_username $email_parts[0];

        
// Exclude common prefixes.
        
if ( in_array(
            
$email_username,
            array(
                
'sales',
                
'hello',
                
'mail',
                
'contact',
                
'info',
            ),
            
true
        
) ) {
            
// Get the domain part.
            
$email_username $email_parts[1];
        }

        
$username_parts[] = sanitize_user$email_usernametrue );
    }

    
$username kkart_strtolowerimplode'.'$username_parts ) );

    if ( 
$suffix ) {
        
$username .= $suffix;
    }

    
/**
     * WordPress 4.4 - filters the list of blocked usernames.
     *
     * @since 3.7.0
     * @param array $usernames Array of blocked usernames.
     */
    
$illegal_logins = (array) apply_filters'illegal_user_logins', array() );

    
// Stop illegal logins and generate a new random username.
    
if ( in_arraystrtolower$username ), array_map'strtolower'$illegal_logins ), true ) ) {
        
$new_args = array();

        
/**
         * Filter generated customer username.
         *
         * @since 3.7.0
         * @param string $username      Generated username.
         * @param string $email         New customer email address.
         * @param array  $new_user_args Array of new user args, maybe including first and last names.
         * @param string $suffix        Append string to username to make it unique.
         */
        
$new_args['first_name'] = apply_filters(
            
'kkart_generated_customer_username',
            
'woo_user_' zeroisewp_rand09999 ), ),
            
$email,
            
$new_user_args,
            
$suffix
        
);

        return 
kkart_create_new_customer_username$email$new_args$suffix );
    }

    if ( 
username_exists$username ) ) {
        
// Generate something unique to append to the username in case of a conflict with another user.
        
$suffix '-' zeroisewp_rand09999 ), );
        return 
kkart_create_new_customer_username$email$new_user_args$suffix );
    }

    
/**
     * Filter new customer username.
     *
     * @since 3.7.0
     * @param string $username      Customer username.
     * @param string $email         New customer email address.
     * @param array  $new_user_args Array of new user args, maybe including first and last names.
     * @param string $suffix        Append string to username to make it unique.
     */
    
return apply_filters'kkart_new_customer_username'$username$email$new_user_args$suffix );
}

/**
 * Login a customer (set auth cookie and set global user object).
 *
 * @param int $customer_id Customer ID.
 */
function kkart_set_customer_auth_cookie$customer_id ) {
    
wp_set_current_user$customer_id );
    
wp_set_auth_cookie$customer_idtrue );

    
// Update session.
    
KKART()->session->init_session_cookie();
}

/**
 * Get past orders (by email) and update them.
 *
 * @param  int $customer_id Customer ID.
 * @return int
 */
function kkart_update_new_customer_past_orders$customer_id ) {
    
$linked          0;
    
$complete        0;
    
$customer        get_user_by'id'absint$customer_id ) );
    
$customer_orders kkart_get_orders(
        array(
            
'limit'    => -1,
            
'customer' => array( array( 0$customer->user_email ) ),
            
'return'   => 'ids',
        )
    );

    if ( ! empty( 
$customer_orders ) ) {
        foreach ( 
$customer_orders as $order_id ) {
            
$order kkart_get_order$order_id );
            if ( ! 
$order ) {
                continue;
            }

            
$order->set_customer_id$customer->ID );
            
$order->save();

            if ( 
$order->has_downloadable_item() ) {
                
$data_store KKART_Data_Store::load'customer-download' );
                
$data_store->delete_by_order_id$order->get_id() );
                
kkart_downloadable_product_permissions$order->get_id(), true );
            }

            
do_action'kkart_update_new_customer_past_order'$order_id$customer );

            if ( 
get_post_status$order_id ) === 'kkart-completed' ) {
                
$complete++;
            }

            
$linked++;
        }
    }

    if ( 
$complete ) {
        
update_user_meta$customer_id'paying_customer');
        
update_user_meta$customer_id'_order_count''' );
        
update_user_meta$customer_id'_money_spent''' );
    }

    return 
$linked;
}

/**
 * Order payment completed - This is a paying customer.
 *
 * @param int $order_id Order ID.
 */
function kkart_paying_customer$order_id ) {
    
$order       kkart_get_order$order_id );
    
$customer_id $order->get_customer_id();

    if ( 
$customer_id && 'shop_order_refund' !== $order->get_type() ) {
        
$customer = new KKART_Customer$customer_id );

        if ( ! 
$customer->get_is_paying_customer() ) {
            
$customer->set_is_paying_customertrue );
            
$customer->save();
        }
    }
}
add_action'kkart_payment_complete''kkart_paying_customer' );
add_action'kkart_order_status_completed''kkart_paying_customer' );

/**
 * Checks if a user (by email or ID or both) has bought an item.
 *
 * @param string $customer_email Customer email to check.
 * @param int    $user_id User ID to check.
 * @param int    $product_id Product ID to check.
 * @return bool
 */
function kkart_customer_bought_product$customer_email$user_id$product_id ) {
    global 
$wpdb;

    
$result apply_filters'kkart_pre_customer_bought_product'null$customer_email$user_id$product_id );

    if ( 
null !== $result ) {
        return 
$result;
    }

    
$transient_name    'kkart_customer_bought_product_' md5$customer_email $user_id );
    
$transient_version KKART_Cache_Helper::get_transient_version'orders' );
    
$transient_value   get_transient$transient_name );

    if ( isset( 
$transient_value['value'], $transient_value['version'] ) && $transient_value['version'] === $transient_version ) {
        
$result $transient_value['value'];
    } else {
        
$customer_data = array( $user_id );

        if ( 
$user_id ) {
            
$user get_user_by'id'$user_id );

            if ( isset( 
$user->user_email ) ) {
                
$customer_data[] = $user->user_email;
            }
        }

        if ( 
is_email$customer_email ) ) {
            
$customer_data[] = $customer_email;
        }

        
$customer_data array_map'esc_sql'array_filterarray_unique$customer_data ) ) );
        
$statuses      array_map'esc_sql'kkart_get_is_paid_statuses() );

        if ( 
count$customer_data ) === ) {
            return 
false;
        }

        
$result $wpdb->get_col(
            
"
            SELECT im.meta_value FROM 
{$wpdb->posts} AS p
            INNER JOIN 
{$wpdb->postmeta} AS pm ON p.ID = pm.post_id
            INNER JOIN 
{$wpdb->prefix}kkart_order_items AS i ON p.ID = i.order_id
            INNER JOIN 
{$wpdb->prefix}kkart_order_itemmeta AS im ON i.order_item_id = im.order_item_id
            WHERE p.post_status IN ( 'kkart-" 
implode"','kkart-"$statuses ) . "' )
            AND pm.meta_key IN ( '_billing_email', '_customer_user' )
            AND im.meta_key IN ( '_product_id', '_variation_id' )
            AND im.meta_value != 0
            AND pm.meta_value IN ( '" 
implode"','"$customer_data ) . "' )
        "
        
); // WPCS: unprepared SQL ok.
        
$result array_map'absint'$result );

        
$transient_value = array(
            
'version' => $transient_version,
            
'value'   => $result,
        );

        
set_transient$transient_name$transient_valueDAY_IN_SECONDS 30 );
    }
    return 
in_arrayabsint$product_id ), $resulttrue );
}

/**
 * Checks if the current user has a role.
 *
 * @param string $role The role.
 * @return bool
 */
function kkart_current_user_has_role$role ) {
    return 
kkart_user_has_rolewp_get_current_user(), $role );
}

/**
 * Checks if a user has a role.
 *
 * @param int|\WP_User $user The user.
 * @param string       $role The role.
 * @return bool
 */
function kkart_user_has_role$user$role ) {
    if ( ! 
is_object$user ) ) {
        
$user get_userdata$user );
    }

    if ( ! 
$user || ! $user->exists() ) {
        return 
false;
    }

    return 
in_array$role$user->rolestrue );
}

/**
 * Checks if a user has a certain capability.
 *
 * @param array $allcaps All capabilities.
 * @param array $caps    Capabilities.
 * @param array $args    Arguments.
 *
 * @return array The filtered array of all capabilities.
 */
function kkart_customer_has_capability$allcaps$caps$args ) {
    if ( isset( 
$caps[0] ) ) {
        switch ( 
$caps[0] ) {
            case 
'view_order':
                
$user_id intval$args[1] );
                
$order   kkart_get_order$args[2] );

                if ( 
$order && $user_id === $order->get_user_id() ) {
                    
$allcaps['view_order'] = true;
                }
                break;
            case 
'pay_for_order':
                
$user_id  intval$args[1] );
                
$order_id = isset( $args[2] ) ? $args[2] : null;

                
// When no order ID, we assume it's a new order
                // and thus, customer can pay for it.
                
if ( ! $order_id ) {
                    
$allcaps['pay_for_order'] = true;
                    break;
                }

                
$order kkart_get_order$order_id );

                if ( 
$order && ( $user_id === $order->get_user_id() || ! $order->get_user_id() ) ) {
                    
$allcaps['pay_for_order'] = true;
                }
                break;
            case 
'order_again':
                
$user_id intval$args[1] );
                
$order   kkart_get_order$args[2] );

                if ( 
$order && $user_id === $order->get_user_id() ) {
                    
$allcaps['order_again'] = true;
                }
                break;
            case 
'cancel_order':
                
$user_id intval$args[1] );
                
$order   kkart_get_order$args[2] );

                if ( 
$order && $user_id === $order->get_user_id() ) {
                    
$allcaps['cancel_order'] = true;
                }
                break;
            case 
'download_file':
                
$user_id  intval$args[1] );
                
$download $args[2];

                if ( 
$download && $user_id === $download->get_user_id() ) {
                    
$allcaps['download_file'] = true;
                }
                break;
        }
    }
    return 
$allcaps;
}
add_filter'user_has_cap''kkart_customer_has_capability'10);

/**
 * Safe way of allowing shop managers restricted capabilities that will remove
 * access to the capabilities if Kkart is deactivated.
 *
 * @since 3.5.4
 * @param bool[]   $allcaps Array of key/value pairs where keys represent a capability name and boolean values
 *                          represent whether the user has that capability.
 * @param string[] $caps    Required primitive capabilities for the requested capability.
 * @param array    $args Arguments that accompany the requested capability check.
 * @param WP_User  $user    The user object.
 * @return bool[]
 */
function kkart_shop_manager_has_capability$allcaps$caps$args$user ) {

    if ( 
kkart_user_has_role$user'shop_manager' ) ) {
        
// @see kkart_modify_map_meta_cap, which limits editing to customers.
        
$allcaps['edit_users'] = true;
    }

    return 
$allcaps;
}
add_filter'user_has_cap''kkart_shop_manager_has_capability'10);

/**
 * Modify the list of editable roles to prevent non-admin adding admin users.
 *
 * @param  array $roles Roles.
 * @return array
 */
function kkart_modify_editable_roles$roles ) {
    if ( 
is_multisite() && is_super_admin() ) {
        return 
$roles;
    }
    if ( ! 
kkart_current_user_has_role'administrator' ) ) {
        unset( 
$roles['administrator'] );

        if ( 
kkart_current_user_has_role'shop_manager' ) ) {
            
$shop_manager_editable_roles apply_filters'kkart_shop_manager_editable_roles', array( 'customer' ) );
            return 
array_intersect_key$rolesarray_flip$shop_manager_editable_roles ) );
        }
    }

    return 
$roles;
}
add_filter'editable_roles''kkart_modify_editable_roles' );

/**
 * Modify capabilities to prevent non-admin users editing admin users.
 *
 * $args[0] will be the user being edited in this case.
 *
 * @param  array  $caps    Array of caps.
 * @param  string $cap     Name of the cap we are checking.
 * @param  int    $user_id ID of the user being checked against.
 * @param  array  $args    Arguments.
 * @return array
 */
function kkart_modify_map_meta_cap$caps$cap$user_id$args ) {
    if ( 
is_multisite() && is_super_admin() ) {
        return 
$caps;
    }
    switch ( 
$cap ) {
        case 
'edit_user':
        case 
'remove_user':
        case 
'promote_user':
        case 
'delete_user':
            if ( ! isset( 
$args[0] ) || $args[0] === $user_id ) {
                break;
            } else {
                if ( ! 
kkart_current_user_has_role'administrator' ) ) {
                    if ( 
kkart_user_has_role$args[0], 'administrator' ) ) {
                        
$caps[] = 'do_not_allow';
                    } elseif ( 
kkart_current_user_has_role'shop_manager' ) ) {
                        
// Shop managers can only edit customer info.
                        
$userdata                    get_userdata$args[0] );
                        
$shop_manager_editable_roles apply_filters'kkart_shop_manager_editable_roles', array( 'customer' ) );
                        if ( 
property_exists$userdata'roles' ) && ! empty( $userdata->roles ) && ! array_intersect$userdata->roles$shop_manager_editable_roles ) ) {
                            
$caps[] = 'do_not_allow';
                        }
                    }
                }
            }
            break;
    }
    return 
$caps;
}
add_filter'map_meta_cap''kkart_modify_map_meta_cap'10);

/**
 * Get customer download permissions from the database.
 *
 * @param int $customer_id Customer/User ID.
 * @return array
 */
function kkart_get_customer_download_permissions$customer_id ) {
    
$data_store KKART_Data_Store::load'customer-download' );
    return 
apply_filters'kkart_permission_list'$data_store->get_downloads_for_customer$customer_id ), $customer_id );
}

/**
 * Get customer available downloads.
 *
 * @param int $customer_id Customer/User ID.
 * @return array
 */
function kkart_get_customer_available_downloads$customer_id ) {
    
$downloads   = array();
    
$_product    null;
    
$order       null;
    
$file_number 0;

    
// Get results from valid orders only.
    
$results kkart_get_customer_download_permissions$customer_id );

    if ( 
$results ) {
        foreach ( 
$results as $result ) {
            
$order_id intval$result->order_id );

            if ( ! 
$order || $order->get_id() !== $order_id ) {
                
// New order.
                
$order    kkart_get_order$order_id );
                
$_product null;
            }

            
// Make sure the order exists for this download.
            
if ( ! $order ) {
                continue;
            }

            
// Check if downloads are permitted.
            
if ( ! $order->is_download_permitted() ) {
                continue;
            }

            
$product_id intval$result->product_id );

            if ( ! 
$_product || $_product->get_id() !== $product_id ) {
                
// New product.
                
$file_number 0;
                
$_product    kkart_get_product$product_id );
            }

            
// Check product exists and has the file.
            
if ( ! $_product || ! $_product->exists() || ! $_product->has_file$result->download_id ) ) {
                continue;
            }

            
$download_file $_product->get_file$result->download_id );

            
// Download name will be 'Product Name' for products with a single downloadable file, and 'Product Name - File X' for products with multiple files.
            
$download_name apply_filters(
                
'kkart_downloadable_product_name',
                
$download_file['name'],
                
$_product,
                
$result->download_id,
                
$file_number
            
);

            
$downloads[] = array(
                
'download_url'        => add_query_arg(
                    array(
                        
'download_file' => $product_id,
                        
'order'         => $result->order_key,
                        
'email'         => rawurlencode$result->user_email ),
                        
'key'           => $result->download_id,
                    ),
                    
home_url'/' )
                ),
                
'download_id'         => $result->download_id,
                
'product_id'          => $_product->get_id(),
                
'product_name'        => $_product->get_name(),
                
'product_url'         => $_product->is_visible() ? $_product->get_permalink() : ''// Since 3.3.0.
                
'download_name'       => $download_name,
                
'order_id'            => $order->get_id(),
                
'order_key'           => $order->get_order_key(),
                
'downloads_remaining' => $result->downloads_remaining,
                
'access_expires'      => $result->access_expires,
                
'file'                => array(
                    
'name' => $download_file->get_name(),
                    
'file' => $download_file->get_file(),
                ),
            );

            
$file_number++;
        }
    }

    return 
apply_filters'kkart_customer_available_downloads'$downloads$customer_id );
}

/**
 * Get total spent by customer.
 *
 * @param  int $user_id User ID.
 * @return string
 */
function kkart_get_customer_total_spent$user_id ) {
    
$customer = new KKART_Customer$user_id );
    return 
$customer->get_total_spent();
}

/**
 * Get total orders by customer.
 *
 * @param  int $user_id User ID.
 * @return int
 */
function kkart_get_customer_order_count$user_id ) {
    
$customer = new KKART_Customer$user_id );
    return 
$customer->get_order_count();
}

/**
 * Reset _customer_user on orders when a user is deleted.
 *
 * @param int $user_id User ID.
 */
function kkart_reset_order_customer_id_on_deleted_user$user_id ) {
    global 
$wpdb;

    
$wpdb->update(
        
$wpdb->postmeta,
        array(
            
'meta_value' => 0,
        ),
        array(
            
'meta_key'   => '_customer_user',
            
'meta_value' => $user_id,
        )
    ); 
// WPCS: slow query ok.
}

add_action'deleted_user''kkart_reset_order_customer_id_on_deleted_user' );

/**
 * Get review verification status.
 *
 * @param  int $comment_id Comment ID.
 * @return bool
 */
function kkart_review_is_from_verified_owner$comment_id ) {
    
$verified get_comment_meta$comment_id'verified'true );
    return 
'' === $verified KKART_Comments::add_comment_purchase_verification$comment_id ) : (bool) $verified;
}

/**
 * Disable author archives for customers.
 *
 * @since 2.5.0
 */
function kkart_disable_author_archives_for_customers() {
    global 
$author;

    if ( 
is_author() ) {
        
$user get_user_by'id'$author );

        if ( 
user_can$user'customer' ) && ! user_can$user'edit_posts' ) ) {
            
wp_safe_redirectkkart_get_page_permalink'shop' ) );
            exit;
        }
    }
}

add_action'template_redirect''kkart_disable_author_archives_for_customers' );

/**
 * Hooks into the `profile_update` hook to set the user last updated timestamp.
 *
 * @since 2.6.0
 * @param int   $user_id The user that was updated.
 * @param array $old     The profile fields pre-change.
 */
function kkart_update_profile_last_update_time$user_id$old ) {
    
kkart_set_user_last_update_time$user_id );
}

add_action'profile_update''kkart_update_profile_last_update_time'10);

/**
 * Hooks into the update user meta function to set the user last updated timestamp.
 *
 * @since 2.6.0
 * @param int    $meta_id     ID of the meta object that was changed.
 * @param int    $user_id     The user that was updated.
 * @param string $meta_key    Name of the meta key that was changed.
 * @param string $_meta_value Value of the meta that was changed.
 */
function kkart_meta_update_last_update_time$meta_id$user_id$meta_key$_meta_value ) {
    
$keys_to_track apply_filters'kkart_user_last_update_fields', array( 'first_name''last_name' ) );

    
$update_time in_array$meta_key$keys_to_tracktrue ) ? true false;
    
$update_time 'billing_' === substr$meta_key0) ? true $update_time;
    
$update_time 'shipping_' === substr$meta_key0) ? true $update_time;

    if ( 
$update_time ) {
        
kkart_set_user_last_update_time$user_id );
    }
}

add_action'update_user_meta''kkart_meta_update_last_update_time'10);

/**
 * Sets a user's "last update" time to the current timestamp.
 *
 * @since 2.6.0
 * @param int $user_id The user to set a timestamp for.
 */
function kkart_set_user_last_update_time$user_id ) {
    
update_user_meta$user_id'last_update'gmdate'U' ) );
}

/**
 * Get customer saved payment methods list.
 *
 * @since 2.6.0
 * @param int $customer_id Customer ID.
 * @return array
 */
function kkart_get_customer_saved_methods_list$customer_id ) {
    return 
apply_filters'kkart_saved_payment_methods_list', array(), $customer_id );
}

/**
 * Get info about customer's last order.
 *
 * @since 2.6.0
 * @param int $customer_id Customer ID.
 * @return KKART_Order|bool Order object if successful or false.
 */
function kkart_get_customer_last_order$customer_id ) {
    
$customer = new KKART_Customer$customer_id );

    return 
$customer->get_last_order();
}

/**
 * Add support for searching by display_name.
 *
 * @since 3.2.0
 * @param array $search_columns Column names.
 * @return array
 */
function kkart_user_search_columns$search_columns ) {
    
$search_columns[] = 'display_name';
    return 
$search_columns;
}
add_filter'user_search_columns''kkart_user_search_columns' );

/**
 * When a user is deleted in WordPress, delete corresponding Kkart data.
 *
 * @param int $user_id User ID being deleted.
 */
function kkart_delete_user_data$user_id ) {
    global 
$wpdb;

    
// Clean up sessions.
    
$wpdb->delete(
        
$wpdb->prefix 'kkart_sessions',
        array(
            
'session_key' => $user_id,
        )
    );

    
// Revoke API keys.
    
$wpdb->delete(
        
$wpdb->prefix 'kkart_api_keys',
        array(
            
'user_id' => $user_id,
        )
    );

    
// Clean up payment tokens.
    
$payment_tokens KKART_Payment_Tokens::get_customer_tokens$user_id );

    foreach ( 
$payment_tokens as $payment_token ) {
        
$payment_token->delete();
    }
}
add_action'delete_user''kkart_delete_user_data' );

/**
 * Store user agents. Used for tracker.
 *
 * @since 3.0.0
 * @param string     $user_login User login.
 * @param int|object $user       User.
 */
function kkart_maybe_store_user_agent$user_login$user ) {
    if ( 
'yes' === get_option'kkart_allow_tracking''no' ) && user_can$user'manage_kkart' ) ) {
        
$admin_user_agents   array_filter( (array) get_option'kkart_tracker_ua', array() ) );
        
$admin_user_agents[] = kkart_get_user_agent();
        
update_option'kkart_tracker_ua'array_unique$admin_user_agents ) );
    }
}
add_action'wp_login''kkart_maybe_store_user_agent'10);

/**
 * Update logic triggered on login.
 *
 * @since 3.4.0
 * @param string $user_login User login.
 * @param object $user       User.
 */
function kkart_user_logged_in$user_login$user ) {
    
kkart_update_user_last_active$user->ID );
    
update_user_meta$user->ID'_kkart_load_saved_cart_after_login');
}
add_action'wp_login''kkart_user_logged_in'10);

/**
 * Update when the user was last active.
 *
 * @since 3.4.0
 */
function kkart_current_user_is_active() {
    if ( ! 
is_user_logged_in() ) {
        return;
    }
    
kkart_update_user_last_activeget_current_user_id() );
}
add_action'wp''kkart_current_user_is_active'10 );

/**
 * Set the user last active timestamp to now.
 *
 * @since 3.4.0
 * @param int $user_id User ID to mark active.
 */
function kkart_update_user_last_active$user_id ) {
    if ( ! 
$user_id ) {
        return;
    }
    
update_user_meta$user_id'kkart_last_active', (string) strtotimedate'Y-m-d'time() ) ) );
}

/**
 * Translate KKART roles using the kkart textdomain.
 *
 * @since 3.7.0
 * @param string $translation  Translated text.
 * @param string $text         Text to translate.
 * @param string $context      Context information for the translators.
 * @param string $domain       Text domain. Unique identifier for retrieving translated strings.
 * @return string
 */
function kkart_translate_user_roles$translation$text$context$domain ) {
    
// translate_user_role() only accepts a second parameter starting in WP 5.2.
    
if ( version_compareget_bloginfo'version' ), '5.2''<' ) ) {
        return 
$translation;
    }

    if ( 
'User role' === $context && 'default' === $domain && in_array$text, array( 'Shop manager''Customer' ), true ) ) {
        return 
translate_user_role$text'kkart' );
    }

    return 
$translation;
}
add_filter'gettext_with_context''kkart_translate_user_roles'10);

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0965 ]--