Exemplo n.º 1
0
/**
 * Edit trade item action by ajax
 */
function editTradeItem()
{
    $userID = buckys_is_logged_in();
    if (!$userID) {
        return;
    }
    $tradeItemIns = new BuckysTradeItem();
    $inputValidFlag = true;
    $requiredFields = ['title', 'subtitle', 'description', 'category'];
    foreach ($requiredFields as $requiredField) {
        if ($_REQUEST[$requiredField] == '') {
            $inputValidFlag = false;
        }
    }
    $actionType = get_secure_string($_REQUEST['type']);
    $paramItemID = get_secure_integer($_REQUEST['itemID']);
    $data = [];
    $editableFlag = false;
    if ($actionType == 'relist') {
        $tradeItemData = $tradeItemIns->getItemById($paramItemID, true);
        if (!$tradeItemData) {
            echo json_encode(['success' => 0, 'msg' => 'You could not relist this item.']);
            exit;
        }
        //you can relist this item
        $data['createdDate'] = date('Y-m-d H:i:s');
        $tradeUserIns = new BuckysTradeUser();
        if (!$tradeUserIns->hasCredits($userID)) {
            echo json_encode(['success' => 0, 'msg' => 'You could not relist this item. You have no credits.']);
            exit;
        }
        if ($tradeItemData['userID'] == $userID) {
            $editableFlag = true;
        } else {
            $editableFlag = false;
        }
    } else {
        $tradeItemData = $tradeItemIns->getItemById($paramItemID, false);
        if ($tradeItemData && $tradeItemData['userID'] == $userID) {
            $editableFlag = true;
        }
    }
    if ($inputValidFlag) {
        if ($editableFlag) {
            $data['title'] = get_secure_string($_REQUEST['title']);
            $data['subtitle'] = get_secure_string($_REQUEST['subtitle']);
            $data['description'] = get_secure_string($_REQUEST['description']);
            $data['itemWanted'] = get_secure_string($_REQUEST['items_wanted']);
            $data['images'] = get_secure_string($_REQUEST['images']);
            $data['catID'] = get_secure_string($_REQUEST['category']);
            $data['locationID'] = get_secure_string($_REQUEST['location']);
            $data['listingDuration'] = get_secure_string($_REQUEST['listing_duration']);
            $data['expiryDate'] = $data['listingDuration'] == -1 ? '0000-00-00 00:00:00' : date('Y-m-d H:i:s', time() + 3600 * 24 * $data['listingDuration']);
            $data['images'] = moveTradeTmpImages($data['images']);
            if ($data['images'] === false) {
                echo json_encode(['success' => 0, 'msg' => 'Something goes wrong, please contact administrator.']);
                exit;
            }
            if ($actionType == 'relist') {
                $tradeUserIns->useCredit($userID);
            }
            $tradeItemIns->updateItem($paramItemID, $data);
            echo json_encode(['success' => 1, 'msg' => 'An item has been updated successfully.']);
        } else {
            echo json_encode(['success' => 0, 'msg' => "You don't have permission."]);
        }
    } else {
        //error
        echo json_encode(['success' => 0, 'msg' => 'Please input required field(s).']);
    }
}
 /**
  * Accept offer
  *
  * @param integer $offerID
  * @return bool|int
  */
 public function acceptOffer($offerID)
 {
     if (!is_numeric($offerID)) {
         return false;
     }
     //Get related info for this offer
     $tradeItemIns = new BuckysTradeItem();
     $offerInfo = $this->getOfferByID($offerID);
     if (empty($offerInfo)) {
         return false;
     }
     $sellerData = $tradeItemIns->getItemById($offerInfo['targetItemID']);
     $buyerData = $tradeItemIns->getItemById($offerInfo['offeredItemID']);
     if (empty($buyerData) || empty($sellerData)) {
         return false;
     }
     $offerInfo['sellerID'] = $sellerData['userID'];
     $offerInfo['buyerID'] = $buyerData['userID'];
     //Add trade
     $tradeIns = new BuckysTrade();
     $newTradeID = $tradeIns->addTrade($offerInfo['sellerID'], $offerInfo['buyerID'], $offerInfo['targetItemID'], $offerInfo['offeredItemID']);
     //Change trade Item status to "traded"
     $tradeItemIns->updateItem($offerInfo['targetItemID'], ['status' => BuckysTradeItem::STATUS_ITEM_TRADED]);
     $tradeItemIns->updateItem($offerInfo['offeredItemID'], ['status' => BuckysTradeItem::STATUS_ITEM_TRADED]);
     //Remove all offered made by these 2 items
     $this->deleteOffersByItemID($offerInfo['targetItemID']);
     $this->deleteOffersByItemID($offerInfo['offeredItemID']);
     //After processing accept (creating record in trade table), then you should remove the offer record from the table
     //$this->deleteOffer($offerID); // Meaningless code since it should be deleted by deleteOffersByItemID (2 commands above this)
     //Create notification
     $tradeNotificationIns = new BuckysTradeNotification();
     $tradeNotificationIns->createNotification($offerInfo['buyerID'], $offerInfo['sellerID'], BuckysTradeNotification::ACTION_TYPE_OFFER_ACCEPTED, $newTradeID);
     return $newTradeID;
 }