Example #1
0
        }
    }
}
$cats = getCatIdAndType($searchCategory);
// Set up pagination object
$total = QueryOperator::countFoundAuctions(buildQuery($searchString, $cats, null));
$page = isset($_GET["page"]) ? $_GET["page"] : 1;
$page = $page <= $total ? $page : 1;
$per_page = 15;
$pagination = new Pagination($page, $per_page, $total);
// Get paginated search results
$catsAndAuctions = QueryOperator::searchAuctions(buildQuery($searchString, $cats, $sort, $per_page, $pagination->offset()));
// Update search sessions
$updated_session = array_merge([SessionOperator::SEARCH_RESULT => $catsAndAuctions], $updated_session);
$updated_session = array_merge([SessionOperator::SEARCH_PAGINATION => $pagination], $updated_session);
SessionOperator::setSearch($updated_session);
// Return back to search page
HelperOperator::redirectTo("../views/search_view.php");
function buildQuery($searchString, $searchCategory, $sortOption, $limit = null, $offset = null)
{
    $query = null;
    // Prepare count query
    if (is_null($limit) && is_null($offset)) {
        $query = "SELECT COUNT(*) ";
    } else {
        $query = "SELECT auctions.auctionId, quantity, startPrice, reservePrice, startTime,\n            endTime, itemName, itemBrand, itemDescription, items.image, auctions.views,\n            item_categories.categoryName as subCategoryName, superCategoryName,\n            item_categories.superCategoryId, item_categories.categoryId,\n            conditionName, countryName, COUNT(DISTINCT (bids.bidId)) AS numBids,\n            COUNT(DISTINCT (auction_watches.watchId)) AS numWatches,\n            MAX(bids.bidPrice) AS highestBid,\n            case\n                when MAX(bids.bidPrice)is not null THEN MAX(bids.bidPrice)\n                else startPrice\n            end AS currentPrice ";
    }
    $query .= "FROM auctions\n            LEFT OUTER JOIN bids ON bids.auctionId = auctions.auctionId\n            LEFT OUTER JOIN auction_watches ON auction_watches.auctionId = auctions.auctionId\n            JOIN items ON items.itemId = auctions.itemId\n            JOIN users ON items.userId = users.userId\n            JOIN item_categories ON items.categoryId = item_categories.categoryId\n            JOIN super_item_categories ON  item_categories.superCategoryId = super_item_categories.superCategoryId\n            JOIN item_conditions ON items.conditionId = item_conditions.conditionId\n            JOIN countries ON users.countryId = countries.countryId\n\n        WHERE auctions.startTime < now() AND auctions.endTime > now() AND\n            items.itemName LIKE \"%__ss__%\" __cc__\n        GROUP BY auctions.auctionId ";
    $query = str_replace("__ss__", $searchString, $query);
    if ($searchCategory != null) {
        if ($searchCategory["type"] == "super") {