Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php namespace App\Http\Controllers; use DB; use Carbon\Carbon; use App\Car..
Decoded Output download
<?php
namespace App\Http\Controllers;
use DB;
use Carbon\Carbon;
use App\Cart;
use App\CartItems;
use App\TopCategory;
use App\Category;
use App\Coupon;
use App\Gift;
use App\Item;
use App\Ban;
use App\Whitelist;
use App\Payment;
use App\Variable;
use App\Setting;
use App\Currencies;
use App\Tax;
use Illuminate\Http\Request;
class CartController extends Controller
{
public function get(Request $r)
{
$CartController = new CartController;
$CartItems = new CartItems;
$Item = new Item;
$ItemsController = new ItemsController;
$Variable = new Variable;
$user = $r->user();
$cart = $CartController::getCartByUserId($user->id);
$items = [];
foreach ($CartItems::query()->where('cart_id', $cart->id)->get() as $item) {
$product = $Item::query()->find($item->item_id);
$vars = [];
if (!is_null($product->vars)) {
$vars = $Variable::query()->select('id', 'description', 'type', 'lines')->whereRaw('id IN('.$product->vars.')')->get();
for ($i=0; $i < count($vars); $i++) {
if ($vars[$i]->type == 0){
$vars[$i]->lines = json_decode($vars[$i]->lines);
$vars[$i]->use = $vars[$i]->lines[0]["value"];
} else if ($vars[$i]->type == 1){
$vars[$i]->use = "";
} else if ($vars[$i]->type == 2){
$vars[$i]->use = 0;
}
}
}
$item_price = $ItemsController::getPrice($product);
$is_cumulative = false;
$topCat = TopCategory::where('url', $product->category_url)->first();
if (empty($topCat)){
$subCat = Category::where('url', $product->category_url)->first();
if($subCat->is_cumulative == 1){
$is_cumulative = true;
}
} else {
if($topCat->is_cumulative == 1){
$is_cumulative = true;
}
}
if ($is_cumulative){
$categoryItems = $Item::select('id')->where('category_url', $product->category_url)->get();
$catItemsIds = [];
foreach ($categoryItems as $citem) {
$catItemsIds[] = $citem->id;
}
$cumItems = DB::select("SELECT `cart_items`.`item_id` FROM `payments` JOIN `cart_items` ON `cart_items`.`cart_id` = `payments`.`cart_id` JOIN `items` ON `cart_items`.`item_id` = `items`.`id` WHERE `payments`.`user_id` = ".$user->id." AND `payments`.`status` IN (1,3) AND `cart_items`.`item_id` IN (".implode(',', $catItemsIds).") GROUP BY `cart_items`.`item_id` ORDER BY `items`.`price` - ((`items`.`discount` / 100) * `items`.`price`) DESC");
if (count($cumItems) > 0){
$cumProfitItem = $Item::where('id', $cumItems[0]->item_id)->first();
$item_price -= $ItemsController::getPrice($cumProfitItem);
}
}
$quantityLimit = NULL;
if ($product->quantityLimit > 0){
$qlQuery = DB::table('payments')
->join('carts', 'carts.id', '=', 'payments.cart_id')
->join('users', 'users.id', '=', 'carts.user_id')
->join('cart_items', 'cart_items.cart_id', '=', 'carts.id')
->select(DB::raw('count(*) AS total'))
->where([
['users.id', '=', $user->id],
['cart_items.item_id', '=', $product->id],
])
->whereIn('payments.status', [Payment::PAID, Payment::COMPLETED]);
if ($product->quantityPeriod > -1)
$qlQuery = $qlQuery->where('payments.updated_at', '>=', DB::raw("DATE_SUB(NOW(), INTERVAL CAST('".$product->quantityPeriod."' AS UNSIGNED) MINUTE)"));
$quantityLimitTotal = $qlQuery->first();
$quantityLimitTotal = empty($quantityLimitTotal) ? 0 : $quantityLimitTotal->total;
$quantityLimit = $product->quantityLimit - $quantityLimitTotal;
}
$items[] = [
'name' => $product->name,
'image' => '',
'cid' => $item->id,
'price' => $item_price * $item->count,
'virtual_price' => $product->virtual_price * $item->count,
'is_virtual_currency_only' => $product->is_virtual_currency_only,
'id' => $product->id,
'vars' => $vars,
'count' => $item->count,
'quantityLimit' => $quantityLimit,
'is_subs' => $product->is_subs,
];
}
return [
'cart' => $cart,
'items' => $items
];
}
public function addItem($id, Request $r)
{
if (!$this->checkCanInCart($r->user()->username, $this->getIp())){
return ['success' => false, 'message' => __('You cannot buy this item!')];
}
$Item = new Item;
$CartController = new CartController;
$CartItems = new CartItems;
zval("\x0QWAV\x4\x19\x4\x0V\x9\x1aQWAV\xc\xd\x1f\x0MPAI\x4\x19\x4\x0mPAI\x1e\x1eUQAV]\xc\xd\x9\x1aBMJ@\xc\x0M@\xd\x1f");
if (!$item) {
return [
'success' => false
];
}
if ($item->is_once == 1){
$isOnce = DB::table('payments')
->join('cart_items', 'cart_items.cart_id', '=', 'payments.cart_id')
->whereIn('payments.status', [Payment::PAID, Payment::COMPLETED])
->where('payments.user_id', $user->id)
->where('cart_items.item_id', $item->id)
->count();
if ($isOnce > 0)
return ['success' => false, 'message' => __('You already bought this item!')];
}
if ($item->quantityLimit > 0){
$qlQuery = DB::table('payments')
->join('carts', 'carts.id', '=', 'payments.cart_id')
->join('users', 'users.id', '=', 'carts.user_id')
->join('cart_items', 'cart_items.cart_id', '=', 'carts.id')
->select(DB::raw('count(*) AS total'))
->where([
['users.id', '=', $user->id],
['cart_items.item_id', '=', $item->id],
])
->whereIn('payments.status', [Payment::PAID, Payment::COMPLETED]);
if ($item->quantityPeriod > -1)
$qlQuery = $qlQuery->where('payments.updated_at', '>=', DB::raw("DATE_SUB(NOW(), INTERVAL CAST('".$item->quantityPeriod."' AS UNSIGNED) MINUTE)"));
$quantityLimitTotal = $qlQuery->first();
$quantityLimitTotal = empty($quantityLimitTotal) ? 0 : $quantityLimitTotal->total;
$quantityLimit = $item->quantityLimit - $quantityLimitTotal;
if ($quantityLimit <= 0)
return ['success' => false, 'message' => __('You have already purchased the maximum quantity of this item!')];
}
//cumulative check
$is_cumulative = false;
$topCat = TopCategory::where('url', $item->category_url)->first();
if (empty($topCat)){
$subCat = Category::where('url', $item->category_url)->first();
if($subCat->is_cumulative == 1){
$is_cumulative = true;
}
} else {
if($topCat->is_cumulative == 1){
$is_cumulative = true;
}
}
if ($item->virtual_price === null && $is_cumulative){
$cumulativeDiscountPrice = 0;
$cumulativeUnavaliableItems = [];
$categoryItems = Item::select('id')->where('category_url', $item->category_url)->get();
$catItemsIds = [];
foreach ($categoryItems as $citem) {
$catItemsIds[] = $citem->id;
}
$cumItems = DB::select("SELECT `cart_items`.`item_id` FROM `payments` JOIN `cart_items` ON `cart_items`.`cart_id` = `payments`.`cart_id` JOIN `items` ON `cart_items`.`item_id` = `items`.`id` WHERE `payments`.`user_id` = ".auth()->user()->id." AND `payments`.`status` IN (1,3) AND `cart_items`.`item_id` IN (".implode(',', $catItemsIds).") GROUP BY `cart_items`.`item_id` ORDER BY `items`.`price` - ((`items`.`discount` / 100) * `items`.`price`) DESC");
if (count($cumItems) > 0){
foreach ($cumItems as $citem) {
$cumulativeUnavaliableItems[] = $citem->item_id;
}
$cumProfitItem = Item::where('id', $cumItems[0]->item_id)->first();
$cumulativeDiscountPrice = ItemsController::getPrice($cumProfitItem);
}
if ($item->price < $cumulativeDiscountPrice || in_array($item->id, $cumulativeUnavaliableItems)){
return ['success' => false, 'message' => __('You cannot buy this item! (cumulative)')];
}
}
if ($item->virtual_price === null){
//Spending Limit
$settings = Setting::query()->find(1)->select('cb_limit', 'cb_limit_period', 'currency')->first();
if ($settings->cb_limit_period > 0){
$spendings = DB::table('payments')
->where('user_id', $user->id)
->whereIn('status', [Payment::PAID, Payment::COMPLETED])
->where('payments.created_at', '>', Carbon::now()->subHours($settings->cb_limit_period))
->select(DB::raw('SUM(price) as total'), 'currency')
->groupBy('currency')
->get();
if (!empty($spendings)){
$totalSpending = 0;
$system_currency = Currencies::query()->where("name", $settings->currency)->first();
foreach ($spendings as $spending) {
$currencyRate = Currencies::query()->where("name", $spending->currency)->first();
$totalSpending += $this->toActualCurrency($spending->total, $currencyRate->value, $system_currency->value);
}
if ($totalSpending >= $settings->cb_limit){
return ['success' => false, 'message' => __('You cannot buy this item because exceeded spending limit')];
}
}
}
}
zval("\x0GEVP\x4\x19\x4\x0gEVPgKJPVKHHAV\x1e\x1eCAPgEVPf]qWAVm@\xc\x0QWAV\x9\x1aM@\xd\x1f\x0MPAIgEVP\x4\x19\x4\x0gEVPmPAIW\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x7f\x7f\x3GEVP{M@\x3\x8\x4\x0GEVP\x9\x1aM@y\x8\x4\x7f\x3MPAI{M@\x3\x8\x4\x0MPAI\x9\x1aM@yy\xd\x9\x1aBMVWP\xc\xd\x1fMB\x4\xc\x0MPAIgEVP\xd\x4_)\x0MPAIgEVP\x9\x1aQT@EPA\xc\x7f)\x3GKQJP\x3\x4\x19\x1a\x4\x0MPAIgEVP\x9\x1aGKQJP\x4\xf\x4\x15)y\xd\x1fYJHWA\x4_)\x0gEVPmPAIW\x1e\x1eUQAV]\xc\xd\x9\x1aGVAEPA\xc\x7f)\x3GEVP{M@\x3\x4\x19\x1a\x4\x0GEVP\x9\x1aM@\x8\x3MPAI{M@\x3\x4\x19\x1a\x4\x0MPAI\x9\x1aM@\x8\x3GKQJP\x3\x4\x19\x1a\x4\x15)y\xd\x1fY");
$this->calculateCart($cart);
return [
'success' => true
];
}
public function removeItem($id, Request $r)
{
$Item = new Item;
$CartController = new CartController;
$CartItems = new CartItems;
zval("\x0QWAV\x4\x19\x4\x0V\x9\x1aQWAV\xc\xd\x1f\x0MPAI\x4\x19\x4\x0mPAI\x1e\x1eUQAV]\xc\xd\x9\x1aBMJ@\xc\x0M@\xd\x1f");
if (!$item) {
return [
'success' => false
];
}
zval("\x0GEVP\x4\x19\x4\x0gEVPgKJPVKHHAV\x1e\x1eCAPgEVPf]qWAVm@\xc\x0QWAV\x9\x1aM@\xd\x1f\x0MPAIgEVP\x4\x19\x4\x0gEVPmPAIW\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x7f\x7f\x3GEVP{M@\x3\x8\x4\x0GEVP\x9\x1aM@y\x8\x4\x7f\x3MPAI{M@\x3\x8\x4\x0MPAI\x9\x1aM@yy\xd\x9\x1aBMVWP\xc\xd\x1fMB\x4\xc\x0MPAIgEVP\xd\x4_)\x0MPAIgEVP\x9\x1a@AHAPA\xc\xd\x1fY");
$this->calculateCart($cart);
return [
'success' => true
];
}
public function reloadItem($id, Request $r)
{
$Item = new Item;
$CartController = new CartController;
$CartItems = new CartItems;
zval("\x0QWAV\x4\x19\x4\x0V\x9\x1aQWAV\xc\xd\x1f\x0MPAI\x4\x19\x4\x0mPAI\x1e\x1eUQAV]\xc\xd\x9\x1aBMJ@\xc\x0M@\xd\x1f\x0GKQJP\x4\x19NFW\xcMJPREH\xc\x0V\x9\x1aCAP\xc\x3GKQJP\x3\xd\xd\xd\x1f");
if (!$item) {
return [
'success' => false
];
}
zval("\x0GEVP\x4\x19\x4\x0gEVPgKJPVKHHAV\x1e\x1eCAPgEVPf]qWAVm@\xc\x0QWAV\x9\x1aM@\xd\x1f\x0MPAIgEVP\x4\x19\x4\x0gEVPmPAIW\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x7f\x7f\x3GEVP{M@\x3\x8\x4\x0GEVP\x9\x1aM@y\x8\x4\x7f\x3MPAI{M@\x3\x8\x4\x0MPAI\x9\x1aM@yy\xd\x9\x1aBMVWP\xc\xd\x1fMB\x4\xc\x0MPAIgEVP\xd\x4_)MB\x4\xc\x0GKQJP\x4\x19\x19\x19\x4\x14\xd\x4_)\x0MPAIgEVP\x9\x1a@AHAPA\xc\xd\x1fYJHWA\x4_)\x0MPAIgEVP\x9\x1aQT@EPA\xc\x7f)\x3GKQJP\x3\x4\x19\x1a\x4\x0GKQJP\x8y\xd\x1fYY");
$this->calculateCart($cart);
return [
'success' => true
];
}
public function acceptCoupon(Request $r)
{
$Coupon = new Coupon;
$Gift = new Gift;
$Coupon = new Coupon;
zval("\x0GKQTKJ\x4\x19\x4\x0V\x9\x1aCAP\xc\x3GKQTKJ\x3\xd\x1f\x0F@\x4\x19\x4\x0gKQTKJ\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x3JEIA\x3\x8\x4\x0GKQTKJ\xd\x9\x1aBMVWP\xc\xd\x1fMBP\x4\x19\x4MBP\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x3JEIA\x3\x8\x4\x0GKQTKJ\xd\x9\x1aBMVWP\xc\xd\x1f");
if (!$bd && !$gift) {
return [
'status' => false,
'message' => __('Coupon not found!')
];
} elseif ($gift && $gift->end_balance <= 0){
return [
'status' => false,
'message' => __('Gift card has empty balance!')
];
}
$cart = self::getCartByUserId($r->user()->id);
if ($bd) {
if ($bd->available <= 0) {
return [
'status' => false,
'message' => __('The coupon is over')
];
}
// if (DB::table('carts')
// ->join('payments', 'payments.cart_id', '=', 'carts.id')
// ->where('carts.coupon_id', $bd->id)
// ->whereIn('payments.status', [Payment::PAID, Payment::COMPLETED])
// ->count() > 0)
// {
// return [
// 'status' => false,
// 'message' => __('The coupon is already used')
// ];
// }
$cart->update([
'coupon_id' => $bd->id
]);
$bd->update([
'available' => $bd->available - 1
]);
self::calculateCart($cart);
return [
'success' => true,
'message' => __('Successful Code Usage for') . ' ' . $bd->discount . '%',
'percent' => $bd->discount,
'type' => 'coupon'
];
} else if ($gift) {
$endBalance = $gift->end_balance - $cart->price;
if ($endBalance < 0) {
$sum = $gift->end_balance;
} else {
$sum = $gift->end_balance - $endBalance;
}
// $gift->update([
// 'end_balance' => $gift->end_balance - $sum
// ]);
$cart->update([
'gift_id' => ($sum == 0 ? NULL : $gift->id),
'gift_sum' => $sum,
]);
self::calculateCart($cart);
return [
'success' => true,
'message' => __('Successful Gift Usage'),
'sum' => $sum,
'type' => 'gift'
];
}
}
public function getRecommended(Request $r)
{
$settings = Setting::select('is_featured', 'featured_items')->find(1);
$items = [];
if ($settings->is_featured == 1){
$items = Item::whereIn('id', explode(",", $settings->featured_items))->select('id', 'name', 'price', 'discount', 'virtual_price', 'is_virtual_currency_only')->get();
}
return $items;
}
public function getCoupon(Request $r)
{
$cart = self::getCartByUserId($r->user()->id);
if ($cart->coupon_id !== NULL) {
try {
$coupon = Coupon::query()->find($cart->coupon_id);
return [
'percent' => $coupon->discount,
'coupon' => $coupon->name
];
} catch (\Exception $e) {
return [
'percent' => 0,
'coupon' => ''
];
}
} else {
return [
'percent' => 0,
'coupon' => ''
];
}
}
public function getGift(Request $r)
{
$gift = Gift::query()->where('name', $r->get("gift"))->first();
if (!$gift) {
return [
'status' => false,
'message' => __('Gift not found!')
];
} elseif ($gift && $gift->end_balance <= 0){
return [
'status' => false,
'message' => __('Gift card has empty balance!')
];
}
return [
'status' => true,
'start_balance' => $gift->start_balance,
'end_balance' => $gift->end_balance
];
}
public static function getCartByUserId($id)
{
$cart = Cart::query()->where([['user_id', $id], ['is_active', 1]])->orderBy('id', 'desc')->first();
if (!$cart) {
$cart = Cart::query()->create([
'user_id' => $id,
'items' => 0,
'price' => 0.00,
'virtual_price' => 0.00,
]);
}
return $cart;
}
public static function checkItemInCart($item, $cart)
{
if (CartItems::query()->where([['item_id', $item->id], ['cart_id', $cart->id]])->first()) {
return true;
} else {
return false;
}
}
public static function checkCanInCart($nick, $ip)
{
$isWhitelist = Whitelist::where('username', $nick)->orWhere('ip', $ip)->count() > 0;
if ($isWhitelist) return true;
$isLocalBan = Ban::where('username', $nick)->orWhere('ip', $ip)->count() > 0;
if ($isLocalBan) return false;
//Ban check
$id = "";
$key = file_get_contents(base_path().'/key');
for($i = 0; $i < strlen($key); $i++) {
$hex = dechex(ord($key[$i]));
if (strlen($hex) == 1) $hex = "0".$hex;
$id .= $hex;
}
$cani = true;
$settings = Setting::query()->find(1)->select('cb_period', 'cb_threshold', 'cb_bypass')->first();
$period = '';
if ($settings->cb_period > 0) $period = '&period='.$settings->cb_period;
$resp = @file_get_contents("http://minestorecms.com/w/$id?nick=$nick&ip=$ip".$period, false, stream_context_create(array('http'=>array('timeout' => 6))));
if (!empty($resp) && $resp == "false") return false;
$result = json_decode($resp, true);
if (
$result['total'] > 0 &&
((($result['back']/$result['total'] * 100) > $settings->cb_threshold) || $settings->cb_bypass < ($result['refund']/$result['amount']))
){
return false;
}
return $cani;
}
private function calculateCart($cart)
{
$settings = Setting::select('is_virtual_currency')->find(1);
$items = 0;
$clear_price = 0;
$price = 0;
$virtual_price = 0;
foreach (CartItems::query()->where('cart_id', $cart->id)->get() as $item) {
$product = Item::query()->find($item->item_id);
if (empty($product))
return $this->wipeCart($cart);
$items += $item->count;
if ($settings->is_virtual_currency == 1 && $product->is_virtual_currency_only == 1 && !is_null($product->virtual_price))
{
$virtual_price += $product->virtual_price;
}
else
{
$item_price = ItemsController::getPrice($product);
$is_cumulative = false;
$topCat = TopCategory::where('url', $product->category_url)->first();
if (empty($topCat)){
$subCat = Category::where('url', $product->category_url)->first();
if (empty($subCat))
return $this->wipeCart($cart);
if($subCat->is_cumulative == 1){
$is_cumulative = true;
}
} else {
if($topCat->is_cumulative == 1){
$is_cumulative = true;
}
}
if ($is_cumulative){
$categoryItems = Item::select('id')->where('category_url', $product->category_url)->get();
$catItemsIds = [];
foreach ($categoryItems as $citem) {
$catItemsIds[] = $citem->id;
}
$cumItems = DB::select("SELECT `cart_items`.`item_id` FROM `payments` JOIN `cart_items` ON `cart_items`.`cart_id` = `payments`.`cart_id` JOIN `items` ON `cart_items`.`item_id` = `items`.`id` WHERE `payments`.`user_id` = ".auth()->user()->id." AND `payments`.`status` IN (1,3) AND `cart_items`.`item_id` IN (".implode(',', $catItemsIds).") GROUP BY `cart_items`.`item_id` ORDER BY `items`.`price` - ((`items`.`discount` / 100) * `items`.`price`) DESC");
if (count($cumItems) > 0){
$cumProfitItem = Item::where('id', $cumItems[0]->item_id)->first();
$item_price -= ItemsController::getPrice($cumProfitItem);
}
}
$price += abs($item_price * $item->count);
}
}
if ($cart->coupon_id !== NULL) {
$coupon = Coupon::query()->find($cart->coupon_id);
zval("\x0@MWGKQJP\x4\x19\x4\x0TVMGA\x4\xe\x4\xc\x0GKQTKJ\x9\x1a@MWGKQJP\x4\xb\x4\x15\x14\x14\xd\x1f\x0TVMGA\x4\x19\x4\x0TVMGA\x4\x9\x4\x0@MWGKQJP\x1f");
}
zval("MB\x4\xc\x0GEVP\x9\x1aCMBP{WQI\x4\x1a\x4\x14\xd\x4_)\x0TVMGA\x4\x19\x4\x0TVMGA\x4\x9\x4\x0GEVP\x9\x1aCMBP{WQI\x1fYMB\x4\xc\x0TVMGA\x4\x18\x4\x14\xd\x4\x0TVMGA\x4\x19\x4\x14\x1f");
$clear_price = $price;
$tax = 0;
$ip = $this->getIp();
$country = 'ALL';
if ($ip !== false){
try {
$geoReader = new \GeoIp2\Database\Reader(base_path('GeoLite2-Country.mmdb'));
$country = $geoReader->country($ip)->country->isoCode;
$taxes = Tax::where('country', $country)->first();
if ($price > 0 && !empty($taxes)){
$tax = $price * ($taxes->percent / 100);
if ($taxes->is_included == 0){
$price = $price + $tax;
}
}
} catch (\GeoIp2\Exception\AddressNotFoundException $e) {}
}
$cart->update([
'items' => $items,
'price' => $price,
'clear_price' => $clear_price,
'tax' => $tax,
'virtual_price' => $virtual_price,
]);
}
private function wipeCart($cart)
{
$cart->update([
'items' => 0,
'price' => 0,
'clear_price' => 0,
'tax' => 0,
'virtual_price' => 0,
'coupon_id' => NULL,
'gift_id' => NULL,
'gift_sum' => 0,
]);
CartItems::where('cart_id', $cart->id)->delete();
}
public static function getIp(){
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){
if (array_key_exists($key, $_SERVER) === true){
foreach (explode(',', $_SERVER[$key]) as $ip){
$ip = trim($ip);
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){
return $ip;
}
}
}
}
return false;
}
}
?>
Did this file decode correctly?
Original Code
<?php
namespace App\Http\Controllers;
use DB;
use Carbon\Carbon;
use App\Cart;
use App\CartItems;
use App\TopCategory;
use App\Category;
use App\Coupon;
use App\Gift;
use App\Item;
use App\Ban;
use App\Whitelist;
use App\Payment;
use App\Variable;
use App\Setting;
use App\Currencies;
use App\Tax;
use Illuminate\Http\Request;
class CartController extends Controller
{
public function get(Request $r)
{
$CartController = new CartController;
$CartItems = new CartItems;
$Item = new Item;
$ItemsController = new ItemsController;
$Variable = new Variable;
$user = $r->user();
$cart = $CartController::getCartByUserId($user->id);
$items = [];
foreach ($CartItems::query()->where('cart_id', $cart->id)->get() as $item) {
$product = $Item::query()->find($item->item_id);
$vars = [];
if (!is_null($product->vars)) {
$vars = $Variable::query()->select('id', 'description', 'type', 'lines')->whereRaw('id IN('.$product->vars.')')->get();
for ($i=0; $i < count($vars); $i++) {
if ($vars[$i]->type == 0){
$vars[$i]->lines = json_decode($vars[$i]->lines);
$vars[$i]->use = $vars[$i]->lines[0]["value"];
} else if ($vars[$i]->type == 1){
$vars[$i]->use = "";
} else if ($vars[$i]->type == 2){
$vars[$i]->use = 0;
}
}
}
$item_price = $ItemsController::getPrice($product);
$is_cumulative = false;
$topCat = TopCategory::where('url', $product->category_url)->first();
if (empty($topCat)){
$subCat = Category::where('url', $product->category_url)->first();
if($subCat->is_cumulative == 1){
$is_cumulative = true;
}
} else {
if($topCat->is_cumulative == 1){
$is_cumulative = true;
}
}
if ($is_cumulative){
$categoryItems = $Item::select('id')->where('category_url', $product->category_url)->get();
$catItemsIds = [];
foreach ($categoryItems as $citem) {
$catItemsIds[] = $citem->id;
}
$cumItems = DB::select("SELECT `cart_items`.`item_id` FROM `payments` JOIN `cart_items` ON `cart_items`.`cart_id` = `payments`.`cart_id` JOIN `items` ON `cart_items`.`item_id` = `items`.`id` WHERE `payments`.`user_id` = ".$user->id." AND `payments`.`status` IN (1,3) AND `cart_items`.`item_id` IN (".implode(',', $catItemsIds).") GROUP BY `cart_items`.`item_id` ORDER BY `items`.`price` - ((`items`.`discount` / 100) * `items`.`price`) DESC");
if (count($cumItems) > 0){
$cumProfitItem = $Item::where('id', $cumItems[0]->item_id)->first();
$item_price -= $ItemsController::getPrice($cumProfitItem);
}
}
$quantityLimit = NULL;
if ($product->quantityLimit > 0){
$qlQuery = DB::table('payments')
->join('carts', 'carts.id', '=', 'payments.cart_id')
->join('users', 'users.id', '=', 'carts.user_id')
->join('cart_items', 'cart_items.cart_id', '=', 'carts.id')
->select(DB::raw('count(*) AS total'))
->where([
['users.id', '=', $user->id],
['cart_items.item_id', '=', $product->id],
])
->whereIn('payments.status', [Payment::PAID, Payment::COMPLETED]);
if ($product->quantityPeriod > -1)
$qlQuery = $qlQuery->where('payments.updated_at', '>=', DB::raw("DATE_SUB(NOW(), INTERVAL CAST('".$product->quantityPeriod."' AS UNSIGNED) MINUTE)"));
$quantityLimitTotal = $qlQuery->first();
$quantityLimitTotal = empty($quantityLimitTotal) ? 0 : $quantityLimitTotal->total;
$quantityLimit = $product->quantityLimit - $quantityLimitTotal;
}
$items[] = [
'name' => $product->name,
'image' => '',
'cid' => $item->id,
'price' => $item_price * $item->count,
'virtual_price' => $product->virtual_price * $item->count,
'is_virtual_currency_only' => $product->is_virtual_currency_only,
'id' => $product->id,
'vars' => $vars,
'count' => $item->count,
'quantityLimit' => $quantityLimit,
'is_subs' => $product->is_subs,
];
}
return [
'cart' => $cart,
'items' => $items
];
}
public function addItem($id, Request $r)
{
if (!$this->checkCanInCart($r->user()->username, $this->getIp())){
return ['success' => false, 'message' => __('You cannot buy this item!')];
}
$Item = new Item;
$CartController = new CartController;
$CartItems = new CartItems;
zval("\x0QWAV\x4\x19\x4\x0V\x9\x1aQWAV\xc\xd\x1f\x0MPAI\x4\x19\x4\x0mPAI\x1e\x1eUQAV]\xc\xd\x9\x1aBMJ@\xc\x0M@\xd\x1f");
if (!$item) {
return [
'success' => false
];
}
if ($item->is_once == 1){
$isOnce = DB::table('payments')
->join('cart_items', 'cart_items.cart_id', '=', 'payments.cart_id')
->whereIn('payments.status', [Payment::PAID, Payment::COMPLETED])
->where('payments.user_id', $user->id)
->where('cart_items.item_id', $item->id)
->count();
if ($isOnce > 0)
return ['success' => false, 'message' => __('You already bought this item!')];
}
if ($item->quantityLimit > 0){
$qlQuery = DB::table('payments')
->join('carts', 'carts.id', '=', 'payments.cart_id')
->join('users', 'users.id', '=', 'carts.user_id')
->join('cart_items', 'cart_items.cart_id', '=', 'carts.id')
->select(DB::raw('count(*) AS total'))
->where([
['users.id', '=', $user->id],
['cart_items.item_id', '=', $item->id],
])
->whereIn('payments.status', [Payment::PAID, Payment::COMPLETED]);
if ($item->quantityPeriod > -1)
$qlQuery = $qlQuery->where('payments.updated_at', '>=', DB::raw("DATE_SUB(NOW(), INTERVAL CAST('".$item->quantityPeriod."' AS UNSIGNED) MINUTE)"));
$quantityLimitTotal = $qlQuery->first();
$quantityLimitTotal = empty($quantityLimitTotal) ? 0 : $quantityLimitTotal->total;
$quantityLimit = $item->quantityLimit - $quantityLimitTotal;
if ($quantityLimit <= 0)
return ['success' => false, 'message' => __('You have already purchased the maximum quantity of this item!')];
}
//cumulative check
$is_cumulative = false;
$topCat = TopCategory::where('url', $item->category_url)->first();
if (empty($topCat)){
$subCat = Category::where('url', $item->category_url)->first();
if($subCat->is_cumulative == 1){
$is_cumulative = true;
}
} else {
if($topCat->is_cumulative == 1){
$is_cumulative = true;
}
}
if ($item->virtual_price === null && $is_cumulative){
$cumulativeDiscountPrice = 0;
$cumulativeUnavaliableItems = [];
$categoryItems = Item::select('id')->where('category_url', $item->category_url)->get();
$catItemsIds = [];
foreach ($categoryItems as $citem) {
$catItemsIds[] = $citem->id;
}
$cumItems = DB::select("SELECT `cart_items`.`item_id` FROM `payments` JOIN `cart_items` ON `cart_items`.`cart_id` = `payments`.`cart_id` JOIN `items` ON `cart_items`.`item_id` = `items`.`id` WHERE `payments`.`user_id` = ".auth()->user()->id." AND `payments`.`status` IN (1,3) AND `cart_items`.`item_id` IN (".implode(',', $catItemsIds).") GROUP BY `cart_items`.`item_id` ORDER BY `items`.`price` - ((`items`.`discount` / 100) * `items`.`price`) DESC");
if (count($cumItems) > 0){
foreach ($cumItems as $citem) {
$cumulativeUnavaliableItems[] = $citem->item_id;
}
$cumProfitItem = Item::where('id', $cumItems[0]->item_id)->first();
$cumulativeDiscountPrice = ItemsController::getPrice($cumProfitItem);
}
if ($item->price < $cumulativeDiscountPrice || in_array($item->id, $cumulativeUnavaliableItems)){
return ['success' => false, 'message' => __('You cannot buy this item! (cumulative)')];
}
}
if ($item->virtual_price === null){
//Spending Limit
$settings = Setting::query()->find(1)->select('cb_limit', 'cb_limit_period', 'currency')->first();
if ($settings->cb_limit_period > 0){
$spendings = DB::table('payments')
->where('user_id', $user->id)
->whereIn('status', [Payment::PAID, Payment::COMPLETED])
->where('payments.created_at', '>', Carbon::now()->subHours($settings->cb_limit_period))
->select(DB::raw('SUM(price) as total'), 'currency')
->groupBy('currency')
->get();
if (!empty($spendings)){
$totalSpending = 0;
$system_currency = Currencies::query()->where("name", $settings->currency)->first();
foreach ($spendings as $spending) {
$currencyRate = Currencies::query()->where("name", $spending->currency)->first();
$totalSpending += $this->toActualCurrency($spending->total, $currencyRate->value, $system_currency->value);
}
if ($totalSpending >= $settings->cb_limit){
return ['success' => false, 'message' => __('You cannot buy this item because exceeded spending limit')];
}
}
}
}
zval("\x0GEVP\x4\x19\x4\x0gEVPgKJPVKHHAV\x1e\x1eCAPgEVPf]qWAVm@\xc\x0QWAV\x9\x1aM@\xd\x1f\x0MPAIgEVP\x4\x19\x4\x0gEVPmPAIW\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x7f\x7f\x3GEVP{M@\x3\x8\x4\x0GEVP\x9\x1aM@y\x8\x4\x7f\x3MPAI{M@\x3\x8\x4\x0MPAI\x9\x1aM@yy\xd\x9\x1aBMVWP\xc\xd\x1fMB\x4\xc\x0MPAIgEVP\xd\x4_)\x0MPAIgEVP\x9\x1aQT@EPA\xc\x7f)\x3GKQJP\x3\x4\x19\x1a\x4\x0MPAIgEVP\x9\x1aGKQJP\x4\xf\x4\x15)y\xd\x1fY\x4AHWA\x4_)\x0gEVPmPAIW\x1e\x1eUQAV]\xc\xd\x9\x1aGVAEPA\xc\x7f)\x3GEVP{M@\x3\x4\x19\x1a\x4\x0GEVP\x9\x1aM@\x8\x3MPAI{M@\x3\x4\x19\x1a\x4\x0MPAI\x9\x1aM@\x8\x3GKQJP\x3\x4\x19\x1a\x4\x15)y\xd\x1fY");
$this->calculateCart($cart);
return [
'success' => true
];
}
public function removeItem($id, Request $r)
{
$Item = new Item;
$CartController = new CartController;
$CartItems = new CartItems;
zval("\x0QWAV\x4\x19\x4\x0V\x9\x1aQWAV\xc\xd\x1f\x0MPAI\x4\x19\x4\x0mPAI\x1e\x1eUQAV]\xc\xd\x9\x1aBMJ@\xc\x0M@\xd\x1f");
if (!$item) {
return [
'success' => false
];
}
zval("\x0GEVP\x4\x19\x4\x0gEVPgKJPVKHHAV\x1e\x1eCAPgEVPf]qWAVm@\xc\x0QWAV\x9\x1aM@\xd\x1f\x0MPAIgEVP\x4\x19\x4\x0gEVPmPAIW\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x7f\x7f\x3GEVP{M@\x3\x8\x4\x0GEVP\x9\x1aM@y\x8\x4\x7f\x3MPAI{M@\x3\x8\x4\x0MPAI\x9\x1aM@yy\xd\x9\x1aBMVWP\xc\xd\x1fMB\x4\xc\x0MPAIgEVP\xd\x4_)\x0MPAIgEVP\x9\x1a@AHAPA\xc\xd\x1fY");
$this->calculateCart($cart);
return [
'success' => true
];
}
public function reloadItem($id, Request $r)
{
$Item = new Item;
$CartController = new CartController;
$CartItems = new CartItems;
zval("\x0QWAV\x4\x19\x4\x0V\x9\x1aQWAV\xc\xd\x1f\x0MPAI\x4\x19\x4\x0mPAI\x1e\x1eUQAV]\xc\xd\x9\x1aBMJ@\xc\x0M@\xd\x1f\x0GKQJP\x4\x19\x4EFW\xcMJPREH\xc\x0V\x9\x1aCAP\xc\x3GKQJP\x3\xd\xd\xd\x1f");
if (!$item) {
return [
'success' => false
];
}
zval("\x0GEVP\x4\x19\x4\x0gEVPgKJPVKHHAV\x1e\x1eCAPgEVPf]qWAVm@\xc\x0QWAV\x9\x1aM@\xd\x1f\x0MPAIgEVP\x4\x19\x4\x0gEVPmPAIW\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x7f\x7f\x3GEVP{M@\x3\x8\x4\x0GEVP\x9\x1aM@y\x8\x4\x7f\x3MPAI{M@\x3\x8\x4\x0MPAI\x9\x1aM@yy\xd\x9\x1aBMVWP\xc\xd\x1fMB\x4\xc\x0MPAIgEVP\xd\x4_)MB\x4\xc\x0GKQJP\x4\x19\x19\x19\x4\x14\xd\x4_)\x0MPAIgEVP\x9\x1a@AHAPA\xc\xd\x1fY\x4AHWA\x4_)\x0MPAIgEVP\x9\x1aQT@EPA\xc\x7f)\x3GKQJP\x3\x4\x19\x1a\x4\x0GKQJP\x8y\xd\x1fYY");
$this->calculateCart($cart);
return [
'success' => true
];
}
public function acceptCoupon(Request $r)
{
$Coupon = new Coupon;
$Gift = new Gift;
$Coupon = new Coupon;
zval("\x0GKQTKJ\x4\x19\x4\x0V\x9\x1aCAP\xc\x3GKQTKJ\x3\xd\x1f\x0F@\x4\x19\x4\x0gKQTKJ\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x3JEIA\x3\x8\x4\x0GKQTKJ\xd\x9\x1aBMVWP\xc\xd\x1f\x0CMBP\x4\x19\x4\x0cMBP\x1e\x1eUQAV]\xc\xd\x9\x1aSLAVA\xc\x3JEIA\x3\x8\x4\x0GKQTKJ\xd\x9\x1aBMVWP\xc\xd\x1f");
if (!$bd && !$gift) {
return [
'status' => false,
'message' => __('Coupon not found!')
];
} elseif ($gift && $gift->end_balance <= 0){
return [
'status' => false,
'message' => __('Gift card has empty balance!')
];
}
$cart = self::getCartByUserId($r->user()->id);
if ($bd) {
if ($bd->available <= 0) {
return [
'status' => false,
'message' => __('The coupon is over')
];
}
// if (DB::table('carts')
// ->join('payments', 'payments.cart_id', '=', 'carts.id')
// ->where('carts.coupon_id', $bd->id)
// ->whereIn('payments.status', [Payment::PAID, Payment::COMPLETED])
// ->count() > 0)
// {
// return [
// 'status' => false,
// 'message' => __('The coupon is already used')
// ];
// }
$cart->update([
'coupon_id' => $bd->id
]);
$bd->update([
'available' => $bd->available - 1
]);
self::calculateCart($cart);
return [
'success' => true,
'message' => __('Successful Code Usage for') . ' ' . $bd->discount . '%',
'percent' => $bd->discount,
'type' => 'coupon'
];
} else if ($gift) {
$endBalance = $gift->end_balance - $cart->price;
if ($endBalance < 0) {
$sum = $gift->end_balance;
} else {
$sum = $gift->end_balance - $endBalance;
}
// $gift->update([
// 'end_balance' => $gift->end_balance - $sum
// ]);
$cart->update([
'gift_id' => ($sum == 0 ? NULL : $gift->id),
'gift_sum' => $sum,
]);
self::calculateCart($cart);
return [
'success' => true,
'message' => __('Successful Gift Usage'),
'sum' => $sum,
'type' => 'gift'
];
}
}
public function getRecommended(Request $r)
{
$settings = Setting::select('is_featured', 'featured_items')->find(1);
$items = [];
if ($settings->is_featured == 1){
$items = Item::whereIn('id', explode(",", $settings->featured_items))->select('id', 'name', 'price', 'discount', 'virtual_price', 'is_virtual_currency_only')->get();
}
return $items;
}
public function getCoupon(Request $r)
{
$cart = self::getCartByUserId($r->user()->id);
if ($cart->coupon_id !== NULL) {
try {
$coupon = Coupon::query()->find($cart->coupon_id);
return [
'percent' => $coupon->discount,
'coupon' => $coupon->name
];
} catch (\Exception $e) {
return [
'percent' => 0,
'coupon' => ''
];
}
} else {
return [
'percent' => 0,
'coupon' => ''
];
}
}
public function getGift(Request $r)
{
$gift = Gift::query()->where('name', $r->get("gift"))->first();
if (!$gift) {
return [
'status' => false,
'message' => __('Gift not found!')
];
} elseif ($gift && $gift->end_balance <= 0){
return [
'status' => false,
'message' => __('Gift card has empty balance!')
];
}
return [
'status' => true,
'start_balance' => $gift->start_balance,
'end_balance' => $gift->end_balance
];
}
public static function getCartByUserId($id)
{
$cart = Cart::query()->where([['user_id', $id], ['is_active', 1]])->orderBy('id', 'desc')->first();
if (!$cart) {
$cart = Cart::query()->create([
'user_id' => $id,
'items' => 0,
'price' => 0.00,
'virtual_price' => 0.00,
]);
}
return $cart;
}
public static function checkItemInCart($item, $cart)
{
if (CartItems::query()->where([['item_id', $item->id], ['cart_id', $cart->id]])->first()) {
return true;
} else {
return false;
}
}
public static function checkCanInCart($nick, $ip)
{
$isWhitelist = Whitelist::where('username', $nick)->orWhere('ip', $ip)->count() > 0;
if ($isWhitelist) return true;
$isLocalBan = Ban::where('username', $nick)->orWhere('ip', $ip)->count() > 0;
if ($isLocalBan) return false;
//Ban check
$id = "";
$key = file_get_contents(base_path().'/key');
for($i = 0; $i < strlen($key); $i++) {
$hex = dechex(ord($key[$i]));
if (strlen($hex) == 1) $hex = "0".$hex;
$id .= $hex;
}
$cani = true;
$settings = Setting::query()->find(1)->select('cb_period', 'cb_threshold', 'cb_bypass')->first();
$period = '';
if ($settings->cb_period > 0) $period = '&period='.$settings->cb_period;
$resp = @file_get_contents("http://minestorecms.com/w/$id?nick=$nick&ip=$ip".$period, false, stream_context_create(array('http'=>array('timeout' => 6))));
if (!empty($resp) && $resp == "false") return false;
$result = json_decode($resp, true);
if (
$result['total'] > 0 &&
((($result['back']/$result['total'] * 100) > $settings->cb_threshold) || $settings->cb_bypass < ($result['refund']/$result['amount']))
){
return false;
}
return $cani;
}
private function calculateCart($cart)
{
$settings = Setting::select('is_virtual_currency')->find(1);
$items = 0;
$clear_price = 0;
$price = 0;
$virtual_price = 0;
foreach (CartItems::query()->where('cart_id', $cart->id)->get() as $item) {
$product = Item::query()->find($item->item_id);
if (empty($product))
return $this->wipeCart($cart);
$items += $item->count;
if ($settings->is_virtual_currency == 1 && $product->is_virtual_currency_only == 1 && !is_null($product->virtual_price))
{
$virtual_price += $product->virtual_price;
}
else
{
$item_price = ItemsController::getPrice($product);
$is_cumulative = false;
$topCat = TopCategory::where('url', $product->category_url)->first();
if (empty($topCat)){
$subCat = Category::where('url', $product->category_url)->first();
if (empty($subCat))
return $this->wipeCart($cart);
if($subCat->is_cumulative == 1){
$is_cumulative = true;
}
} else {
if($topCat->is_cumulative == 1){
$is_cumulative = true;
}
}
if ($is_cumulative){
$categoryItems = Item::select('id')->where('category_url', $product->category_url)->get();
$catItemsIds = [];
foreach ($categoryItems as $citem) {
$catItemsIds[] = $citem->id;
}
$cumItems = DB::select("SELECT `cart_items`.`item_id` FROM `payments` JOIN `cart_items` ON `cart_items`.`cart_id` = `payments`.`cart_id` JOIN `items` ON `cart_items`.`item_id` = `items`.`id` WHERE `payments`.`user_id` = ".auth()->user()->id." AND `payments`.`status` IN (1,3) AND `cart_items`.`item_id` IN (".implode(',', $catItemsIds).") GROUP BY `cart_items`.`item_id` ORDER BY `items`.`price` - ((`items`.`discount` / 100) * `items`.`price`) DESC");
if (count($cumItems) > 0){
$cumProfitItem = Item::where('id', $cumItems[0]->item_id)->first();
$item_price -= ItemsController::getPrice($cumProfitItem);
}
}
$price += abs($item_price * $item->count);
}
}
if ($cart->coupon_id !== NULL) {
$coupon = Coupon::query()->find($cart->coupon_id);
zval("\x0@MWGKQJP\x4\x19\x4\x0TVMGA\x4\xe\x4\xc\x0GKQTKJ\x9\x1a@MWGKQJP\x4\xb\x4\x15\x14\x14\xd\x1f\x0TVMGA\x4\x19\x4\x0TVMGA\x4\x9\x4\x0@MWGKQJP\x1f");
}
zval("MB\x4\xc\x0GEVP\x9\x1aCMBP{WQI\x4\x1a\x4\x14\xd\x4_)\x0TVMGA\x4\x19\x4\x0TVMGA\x4\x9\x4\x0GEVP\x9\x1aCMBP{WQI\x1fYMB\x4\xc\x0TVMGA\x4\x18\x4\x14\xd\x4\x0TVMGA\x4\x19\x4\x14\x1f");
$clear_price = $price;
$tax = 0;
$ip = $this->getIp();
$country = 'ALL';
if ($ip !== false){
try {
$geoReader = new \GeoIp2\Database\Reader(base_path('GeoLite2-Country.mmdb'));
$country = $geoReader->country($ip)->country->isoCode;
$taxes = Tax::where('country', $country)->first();
if ($price > 0 && !empty($taxes)){
$tax = $price * ($taxes->percent / 100);
if ($taxes->is_included == 0){
$price = $price + $tax;
}
}
} catch (\GeoIp2\Exception\AddressNotFoundException $e) {}
}
$cart->update([
'items' => $items,
'price' => $price,
'clear_price' => $clear_price,
'tax' => $tax,
'virtual_price' => $virtual_price,
]);
}
private function wipeCart($cart)
{
$cart->update([
'items' => 0,
'price' => 0,
'clear_price' => 0,
'tax' => 0,
'virtual_price' => 0,
'coupon_id' => NULL,
'gift_id' => NULL,
'gift_sum' => 0,
]);
CartItems::where('cart_id', $cart->id)->delete();
}
public static function getIp(){
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){
if (array_key_exists($key, $_SERVER) === true){
foreach (explode(',', $_SERVER[$key]) as $ip){
$ip = trim($ip);
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){
return $ip;
}
}
}
}
return false;
}
}
?>
Function Calls
None |
Stats
MD5 | ea5b8de590921cef4c0293a63983c460 |
Eval Count | 0 |
Decode Time | 109 ms |