| Server IP : 104.171.130.249 / Your IP : 216.73.216.146 Web Server : nginx/1.25.5 System : Linux 0dac65491b7e 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64 User : root ( 0) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/html/wp-content/themes/matreshka/inc/ |
Upload File : |
<?php
/**
* User bonuses and loyalty system functions
*
* @package Matreshka
*/
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Get user bonuses (loyalty points)
*
* @param int|null $user_id User ID. If null, uses current user.
* @return int Number of bonuses
*/
function matreshka_get_user_bonuses( $user_id = null ) {
if ( ! $user_id ) {
$user_id = get_current_user_id();
}
$bonuses = get_user_meta( $user_id, 'matreshka_bonuses', true );
if ( empty( $bonuses ) ) {
$bonuses = 0;
}
return intval( $bonuses );
}
/**
* Update user bonuses
*
* @param int $user_id User ID
* @param int $bonuses New bonuses amount
* @return bool True on success, false on failure
*/
function matreshka_update_user_bonuses( $user_id, $bonuses ) {
return update_user_meta( $user_id, 'matreshka_bonuses', intval( $bonuses ) );
}
/**
* Add bonuses to user
*
* @param int $user_id User ID
* @param int $amount Amount of bonuses to add
* @return bool True on success, false on failure
*/
function matreshka_add_user_bonuses( $user_id, $amount ) {
$current_bonuses = matreshka_get_user_bonuses( $user_id );
$new_bonuses = $current_bonuses + intval( $amount );
return matreshka_update_user_bonuses( $user_id, $new_bonuses );
}
/**
* Subtract bonuses from user
*
* @param int $user_id User ID
* @param int $amount Amount of bonuses to subtract
* @return bool True on success, false on failure
*/
function matreshka_subtract_user_bonuses( $user_id, $amount ) {
$current_bonuses = matreshka_get_user_bonuses( $user_id );
$new_bonuses = max( 0, $current_bonuses - intval( $amount ) );
return matreshka_update_user_bonuses( $user_id, $new_bonuses );
}
/**
* Initialize bonuses for new users
*
* @param int $user_id User ID
*/
function matreshka_init_user_bonuses( $user_id ) {
$bonuses = get_user_meta( $user_id, 'matreshka_bonuses', true );
if ( empty( $bonuses ) ) {
update_user_meta( $user_id, 'matreshka_bonuses', 0 );
}
}
add_action( 'user_register', 'matreshka_init_user_bonuses' );
/**
* Get user's main delivery address
*
* @param int|null $user_id User ID. If null, uses current user.
* @return string User address or default text
*/
function matreshka_get_user_address( $user_id = null ) {
if ( ! $user_id ) {
$user_id = get_current_user_id();
}
$address_parts = array();
$street = get_user_meta( $user_id, 'billing_address_1', true );
$city = get_user_meta( $user_id, 'billing_city', true );
if ( ! empty( $street ) ) {
$address_parts[] = $street;
}
if ( ! empty( $city ) && $city !== $street ) {
$address_parts[] = $city;
}
if ( ! empty( $address_parts ) ) {
return implode( ', ', $address_parts );
}
return 'Добавить адрес доставки';
}
/**
* Convert bonuses to monetary value
*
* @param int $bonuses Number of bonuses
* @param float $rate Conversion rate (default 0.1 = 10%)
* @return string Formatted price string
*/
function matreshka_bonuses_to_money( $bonuses, $rate = 0.1 ) {
$value = $bonuses * $rate;
return matreshka_format_price( $value );
}