!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/dokan/script/vendor/bumbummen99/shoppingcart/src/   drwxrwxrwx
Free 12.92 GB of 57.97 GB (22.29%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     CartItem.php (14.24 KB)      -rwxrwxrwx
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Gloudemans\Shoppingcart;

use 
Gloudemans\Shoppingcart\Calculation\DefaultCalculator;
use 
Gloudemans\Shoppingcart\Contracts\Buyable;
use 
Gloudemans\Shoppingcart\Contracts\Calculator;
use 
Gloudemans\Shoppingcart\Exceptions\InvalidCalculatorException;
use 
Illuminate\Contracts\Support\Arrayable;
use 
Illuminate\Contracts\Support\Jsonable;
use 
Illuminate\Support\Arr;
use 
ReflectionClass;

/**
 * @property-read mixed discount
 * @property-read float discountTotal
 * @property-read float priceTarget
 * @property-read float priceNet
 * @property-read float priceTotal
 * @property-read float subtotal
 * @property-read float taxTotal
 * @property-read float tax
 * @property-read float total
 * @property-read float priceTax
 */
class CartItem implements ArrayableJsonable
{
    
/**
     * The rowID of the cart item.
     *
     * @var string
     */
    
public $rowId;

    
/**
     * The ID of the cart item.
     *
     * @var int|string
     */
    
public $id;

    
/**
     * The quantity for this cart item.
     *
     * @var int|float
     */
    
public $qty;

    
/**
     * The name of the cart item.
     *
     * @var string
     */
    
public $name;

    
/**
     * The price without TAX of the cart item.
     *
     * @var float
     */
    
public $price;

    
/**
     * The weight of the product.
     *
     * @var float
     */
    
public $weight;

    
/**
     * The options for this cart item.
     *
     * @var array
     */
    
public $options;

    
/**
     * The tax rate for the cart item.
     *
     * @var int|float
     */
    
public $taxRate 0;

    
/**
     * The FQN of the associated model.
     *
     * @var string|null
     */
    
private $associatedModel null;

    
/**
     * The discount rate for the cart item.
     *
     * @var float
     */
    
private $discountRate 0;

    
/**
     * CartItem constructor.
     *
     * @param int|string $id
     * @param string     $name
     * @param float      $price
     * @param float      $weight
     * @param array      $options
     */
    
public function __construct($id$name$price$weight 0, array $options = [])
    {
        if (empty(
$id)) {
            throw new 
\InvalidArgumentException('Please supply a valid identifier.');
        }
        if (empty(
$name)) {
            throw new 
\InvalidArgumentException('Please supply a valid name.');
        }
        if (
strlen($price) < || !is_numeric($price)) {
            throw new 
\InvalidArgumentException('Please supply a valid price.');
        }
        if (
strlen($weight) < || !is_numeric($weight)) {
            throw new 
\InvalidArgumentException('Please supply a valid weight.');
        }

        
$this->id $id;
        
$this->name $name;
        
$this->price floatval($price);
        
$this->weight floatval($weight);
        
$this->options = new CartItemOptions($options);
        
$this->rowId $this->generateRowId($id$options);
    }

    
/**
     * Returns the formatted weight.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function weight($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->weight$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted price without TAX.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function price($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->price$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted price with discount applied.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function priceTarget($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->priceTarget$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted price with TAX.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function priceTax($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->priceTax$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted subtotal.
     * Subtotal is price for whole CartItem without TAX.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function subtotal($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->subtotal$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted total.
     * Total is price for whole CartItem with TAX.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function total($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->total$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted tax.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function tax($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->tax$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted tax.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function taxTotal($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->taxTotal$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted discount.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function discount($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->discount$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted total discount for this cart item.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function discountTotal($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->discountTotal$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Returns the formatted total price for this cart item.
     *
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
public function priceTotal($decimals null$decimalPoint null$thousandSeperator null)
    {
        return 
$this->numberFormat($this->priceTotal$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Set the quantity for this cart item.
     *
     * @param int|float $qty
     */
    
public function setQuantity($qty)
    {
        if (empty(
$qty) || !is_numeric($qty)) {
            throw new 
\InvalidArgumentException('Please supply a valid quantity.');
        }

        
$this->qty $qty;
    }

    
/**
     * Update the cart item from a Buyable.
     *
     * @param \Gloudemans\Shoppingcart\Contracts\Buyable $item
     *
     * @return void
     */
    
public function updateFromBuyable(Buyable $item)
    {
        
$this->id $item->getBuyableIdentifier($this->options);
        
$this->name $item->getBuyableDescription($this->options);
        
$this->price $item->getBuyablePrice($this->options);
    }

    
/**
     * Update the cart item from an array.
     *
     * @param array $attributes
     *
     * @return void
     */
    
public function updateFromArray(array $attributes)
    {
        
$this->id Arr::get($attributes'id'$this->id);
        
$this->qty Arr::get($attributes'qty'$this->qty);
        
$this->name Arr::get($attributes'name'$this->name);
        
$this->price Arr::get($attributes'price'$this->price);
        
$this->weight Arr::get($attributes'weight'$this->weight);
        
$this->options = new CartItemOptions(Arr::get($attributes'options'$this->options));

        
$this->rowId $this->generateRowId($this->id$this->options->all());
    }

    
/**
     * Associate the cart item with the given model.
     *
     * @param mixed $model
     *
     * @return \Gloudemans\Shoppingcart\CartItem
     */
    
public function associate($model)
    {
        
$this->associatedModel is_string($model) ? $model get_class($model);

        return 
$this;
    }

    
/**
     * Set the tax rate.
     *
     * @param int|float $taxRate
     *
     * @return \Gloudemans\Shoppingcart\CartItem
     */
    
public function setTaxRate($taxRate)
    {
        
$this->taxRate $taxRate;

        return 
$this;
    }

    
/**
     * Set the discount rate.
     *
     * @param int|float $discountRate
     *
     * @return \Gloudemans\Shoppingcart\CartItem
     */
    
public function setDiscountRate($discountRate)
    {
        
$this->discountRate $discountRate;

        return 
$this;
    }

    
/**
     * Get an attribute from the cart item or get the associated model.
     *
     * @param string $attribute
     *
     * @return mixed
     */
    
public function __get($attribute)
    {
        if (
property_exists($this$attribute)) {
            return 
$this->{$attribute};
        }
        
$decimals config('cart.format.decimals'2);

        switch (
$attribute) {
            case 
'model':
                if (isset(
$this->associatedModel)) {
                    return 
with(new $this->associatedModel())->find($this->id);
                }
                
// no break
            
case 'modelFQCN':
                if (isset(
$this->associatedModel)) {
                    return 
$this->associatedModel;
                }
                
// no break
            
case 'weightTotal':
                return 
round($this->weight $this->qty$decimals);
        }

        
$class = new ReflectionClass(config('cart.calculator'DefaultCalculator::class));
        if (!
$class->implementsInterface(Calculator::class)) {
            throw new 
InvalidCalculatorException('The configured Calculator seems to be invalid. Calculators have to implement the Calculator Contract.');
        }

        return 
call_user_func($class->getName().'::getAttribute'$attribute$this);
    }

    
/**
     * Create a new instance from a Buyable.
     *
     * @param \Gloudemans\Shoppingcart\Contracts\Buyable $item
     * @param array                                      $options
     *
     * @return \Gloudemans\Shoppingcart\CartItem
     */
    
public static function fromBuyable(Buyable $item, array $options = [])
    {
        return new 
self($item->getBuyableIdentifier($options), $item->getBuyableDescription($options), $item->getBuyablePrice($options), $item->getBuyableWeight($options), $options);
    }

    
/**
     * Create a new instance from the given array.
     *
     * @param array $attributes
     *
     * @return \Gloudemans\Shoppingcart\CartItem
     */
    
public static function fromArray(array $attributes)
    {
        
$options Arr::get($attributes'options', []);

        return new 
self($attributes['id'], $attributes['name'], $attributes['price'], $attributes['weight'], $options);
    }

    
/**
     * Create a new instance from the given attributes.
     *
     * @param int|string $id
     * @param string     $name
     * @param float      $price
     * @param array      $options
     *
     * @return \Gloudemans\Shoppingcart\CartItem
     */
    
public static function fromAttributes($id$name$price$weight, array $options = [])
    {
        return new 
self($id$name$price$weight$options);
    }

    
/**
     * Generate a unique id for the cart item.
     *
     * @param string $id
     * @param array  $options
     *
     * @return string
     */
    
protected function generateRowId($id, array $options)
    {
        
ksort($options);

        return 
md5($id.serialize($options));
    }

    
/**
     * Get the instance as an array.
     *
     * @return array
     */
    
public function toArray()
    {
        return [
            
'rowId'    => $this->rowId,
            
'id'       => $this->id,
            
'name'     => $this->name,
            
'qty'      => $this->qty,
            
'price'    => $this->price,
            
'weight'   => $this->weight,
            
'options'  => $this->options->toArray(),
            
'discount' => $this->discount,
            
'tax'      => $this->tax,
            
'subtotal' => $this->subtotal,
        ];
    }

    
/**
     * Convert the object to its JSON representation.
     *
     * @param int $options
     *
     * @return string
     */
    
public function toJson($options 0)
    {
        return 
json_encode($this->toArray(), $options);
    }

    
/**
     * Get the formatted number.
     *
     * @param float  $value
     * @param int    $decimals
     * @param string $decimalPoint
     * @param string $thousandSeperator
     *
     * @return string
     */
    
private function numberFormat($value$decimals$decimalPoint$thousandSeperator)
    {
        if (
is_null($decimals)) {
            
$decimals config('cart.format.decimals'2);
        }

        if (
is_null($decimalPoint)) {
            
$decimalPoint config('cart.format.decimal_point''.');
        }

        if (
is_null($thousandSeperator)) {
            
$thousandSeperator config('cart.format.thousand_separator'',');
        }

        return 
number_format($value$decimals$decimalPoint$thousandSeperator);
    }

    
/**
     * Getter for the raw internal discount rate.
     * Should be used in calculators.
     *
     * @return float
     */
    
public function getDiscountRate()
    {
        return 
$this->discountRate;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

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

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0072 ]--