public static function CancelAuction($auctionId) { global $config, $user; // validate args $auctionId = floor((int) $auctionId); if ($auctionId < 1) { $_SESSION['error'][] = 'Invalid auction id!'; return FALSE; } // query auction $auction = QueryAuctions::QuerySingle($auctionId); if (!$auction) { $_SESSION['error'][] = 'Auction not found!'; return FALSE; } // isAdmin or owns auction if (!$user->hasPerms('isAdmin') && $auction->getSellerId() != $user->getId()) { $_SESSION['error'][] = 'You don\'t own that auction!'; return FALSE; } // remove auction self::RemoveAuction($auctionId, -1); // add item to inventory $tableRowId = ItemFuncs::AddCreateItem($auction->getSellerId(), $auction->getItem()); // add sale log $Item = $auction->getItem(); LogSales::addLog(LogSales::LOG_CANCEL, LogSales::SALE_BUYNOW, $user->getId(), NULL, $Item, 0.0, FALSE, ''); return TRUE; }
public static function SellShop($shopId, $qty) { global $config, $user; // has canSell permissions if (!$user->hasPerms('canSell')) { $_SESSION['error'][] = 'You don\'t have permission to sell.'; return FALSE; } // sanitize args $shopId = (int) $shopId; $qty = (int) $qty; if ($shopId < 1) { $_SESSION['error'][] = 'Invalid server shop id!'; return FALSE; } if ($qty < 1) { $_SESSION['error'][] = 'Invalid qty!'; return FALSE; } // query shop $shop = QueryAuctions::QuerySingleShop($shopId); if (!$shop) { $_SESSION['error'][] = 'Shop not found!'; return FALSE; } $shopItem = $shop->getItem(); if (!$shopItem) { $_SESSION['error'][] = 'Failed to get item info for server shop!'; return FALSE; } // query player items $Items = QueryItems::QueryInventory($user->getId(), $shopItem); if (!$Items) { $_SESSION['error'][] = 'Failed to get item from inventory!'; return FALSE; } // shop price $shopPrice = $shop->getPriceSell(); if ($shopPrice <= 0.0) { $_SESSION['error'][] = 'Cannot sell to this shop!'; return FALSE; } // sell multiple stacks $hasFound = FALSE; $soldCount = 0; while (TRUE) { $Item = $Items->getNext(); // no more stacks found if (!$Item) { break; } // remove empty stack if ($Item->getItemQty() <= 0) { ItemFuncs::RemoveItem($Item->getTableRowId(), -1); continue; } // sold enough if ($soldCount >= $qty) { break; } $hasFound = TRUE; // sell partial stack if ($qty - $soldCount < $Item->getItemQty()) { $sellQty = $qty - $soldCount; $soldCount += $sellQty; if (!ItemFuncs::RemoveItem($Item->getTableRowId(), $sellQty)) { $_SESSION['error'][] = 'Failed to remove sold item!'; return FALSE; } // sell full stack } else { $soldCount += $Item->getItemQty(); if (!ItemFuncs::RemoveItem($Item->getTableRowId(), -1)) { $_SESSION['error'][] = 'Failed to remove sold item!'; return FALSE; } } } // no items sold if (!$hasFound || $soldCount <= 0) { $_SESSION['error'][] = 'You don\'t have any of this item!'; return FALSE; } // price for sold items $priceTotal = $shopPrice * (double) $soldCount; // success $_SESSION['success'][] = 'Sold ' . $soldCount . ' items for ' . SettingsClass::getString('Currency Prefix') . $priceTotal . SettingsClass::getString('Currency Postfix'); // make payment to seller UserClass::PaymentQuery($user->getName(), $user->getUUID(), $priceTotal); // sold less than requested if ($qty > $soldCount) { $_SESSION['error'][] = 'You don\'t have that many!'; } // add sale log $Item->setItemQty($soldCount); LogSales::addLog(LogSales::LOG_SALE, LogSales::SALE_SERVER, NULL, $user->getId(), $Item, $priceTotal, FALSE, '', FALSE); return TRUE; }