<?php
use Klaravik\Buyer\Repository\FavoritesRepo;
use Klaravik\Category\Cache\CategoryCache;
use Klaravik\Enum\ReservePriceStatusEnum;
use Klaravik\includes\Categories;
use Klaravik\Product\ProductCardRenderer;
use Klaravik\Page\PropUserData;
use Klaravik\Product\Collection\ProductListCollection;
use Klaravik\Product\Util\TimeLeftUtil;
use Klaravik\Storefront\GraphQL\ProductObjectConverter;
use Klaravik\Storefront\GraphQL\Products\PaginatedProductResponse;
use Klaravik\Storefront\GraphQL\Repository\ProductCategoriesRepository;
use Klaravik\Storefront\GraphQL\Repository\ProductSearchRepository;
use Klaravik\Translate\Trans;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
/**
* Included from index.phtml
*
* @var CategoryCache $cachedCategories
* @var Categories $categoriesObject
* @var Object $manifestAssets
* @var mysqli $db
* @var ParameterBagInterface $parameters
* @var Request $request
* @var PropUserData $propUserData
*
* Comes from LegacyController
* @var Trans $trans
* @var UrlGeneratorInterface $urlGenerator
* @var ContainerInterface $container
* @var Environment $twig
*/
require_once __DIR__ . '/includes/PageListPartials.php';
require_once __DIR__ . '/includes/Categories.php';
$manifestAssets->add('bundle-pages-list');
function getVendorChildrenId($db, $vendorId)
{
$vendors = array();
$vendorQuery = "SELECT id FROM vendors
WHERE parent_id = " . (int) $vendorId . "
AND deleted=0 AND active=1 AND banned=0
AND company IS NOT NULL";
$res = mysqli_query($db, $vendorQuery);
if (mysqli_num_rows($res) > 0) {
while ($vendor = mysqli_fetch_object($res)) {
$vendors[] = (int) $vendor->id;
$vendors = array_merge($vendors, getVendorChildrenId($db, $vendor->id));
}
}
return $vendors;
}
$showClosed = false;
$pageListPartials = new \Klaravik\includes\PageListPartials($urlGenerator, $trans);
// default to empty string to better handling.
$_REQUEST['specialcat'] = isset($_REQUEST['specialcat']) ? $_REQUEST['specialcat'] : '';
$sessionVarName = "";
if (isset($_REQUEST['specialcat']) && $_REQUEST["specialcat"] == "closed") {
$sessionVarName = "CL_";
}
$_SESSION[$sessionVarName . 'perpage'] = $setPerPage = isset($_SESSION[$sessionVarName . 'perpage']) ? (int) $_SESSION[$sessionVarName . 'perpage'] : 60;
$availablePageSizes = array(30, 60, 90, 120);
if (isset($_REQUEST['setperpage']) && in_array((int) $_REQUEST['setperpage'], $availablePageSizes, true)) {
$setPerPage = $_SESSION[$sessionVarName . 'perpage'] = (int) $_REQUEST['setperpage'];
}
if (isset($_REQUEST["setsortflag"]) && is_numeric($_REQUEST["setsortflag"])) {
if ($_REQUEST["setsortflag"] > 0 && $_REQUEST["setsortflag"] <= 8) {
if (!isset($_REQUEST['nocookie'])) {
$_SESSION[$sessionVarName . "sortflag"] = $_REQUEST["setsortflag"];
} else {
$pageListPartials->setSortflag($_REQUEST['setsortflag']);
}
}
}
if (!isset($_SESSION[$sessionVarName . "sortflag"])) {
$_SESSION[$sessionVarName . "sortflag"] = 4;
}
if (!isset($_REQUEST["catid"]) && !isset($_REQUEST["specialcat"]) && !isset($_REQUEST["searchtext"])) {
$_REQUEST["specialcat"] = "all";
}
if (isset($_REQUEST['specialcat']) && $_REQUEST["specialcat"] != "closed" && $_SESSION[$sessionVarName . "sortflag"] > 6) {
$_SESSION[$sessionVarName . "sortflag"] = 4;
}
// Get a users favorite products and save an array
$favoriteProductListCollection = new ProductListCollection([]);
if (isset($_SESSION['register_id'])) {
$favoriteProductListCollection = (new FavoritesRepo())->getFavorites((int) $_SESSION['register_id']);
}
/** @var ProductSearchRepository $redisSearch */
$redisSearch = $container->get(ProductSearchRepository::class);
/** @var ProductCategoriesRepository $productCategoriesRepository */
$productCategoriesRepository = $container->get(ProductCategoriesRepository::class);
/** @var \Klaravik\Common\Collections\CountyCollection $countiesCollection */
$countiesCollection = (new \Klaravik\Repository\CountyRepo())->getAll();
$searchBuilder = new \Klaravik\Storefront\GraphQL\Products\SearchQueryBuilder();
if (!empty($_REQUEST['searchtext'])) {
$searchBuilder->setText(trim(str_replace(["<", ">", "\""], "", $_REQUEST['searchtext'])));
}
if (isset($_REQUEST['commissions_id'])) {
$searchBuilder->setCommissions([mysqli_real_escape_string($db, $_REQUEST['commissions_id'])]);
} elseif (isset($_REQUEST['product_ids'])) {
$ids = explode(',', $_REQUEST['product_ids']);
if (count($ids) > 0) {
$searchBuilder->setIds($ids);
}
} elseif (isset($_REQUEST['listVendors_id']) && $_REQUEST['listVendors_id'] > 0) {
$vendorIds[] = (int) $_REQUEST['listVendors_id'];
if (isset($_REQUEST['showChildren'])) {
$vendorIds = array_merge($vendorIds, getVendorChildrenId($db, $_REQUEST['listVendors_id']));
}
$searchBuilder->setVendors($vendorIds);
} else {
switch ($_REQUEST["specialcat"]) {
case "closed":
$showClosed = 1;
$searchBuilder->setEnded(true)->setSold(true);
break;
case "bankruptcy":
$searchBuilder->setBankruptcy(true);
break;
case "promoted":
$searchBuilder->setCategories([$parameters->get('app.rest.category.id')]);
break;
}
}
$objectsPerPage = $setPerPage;
if (
isset($_REQUEST['listVendors_id'])
|| (isset($_REQUEST['subcatpage']) && (int) $_REQUEST['subcatpage'] === 1)
) {
$objectsPerPage = 1000;
}
$curpage = isset($_REQUEST['curpage']) ? (int) $_REQUEST['curpage'] : 1;
$searchBuilder->setPageSize($objectsPerPage)->setPage($curpage);
switch ($_SESSION[$sessionVarName . "sortflag"]) {
case 1: // Kortast tid kvar
$searchBuilder->sortBy()->byShortestTimeLeft();
break;
case 2: // Senast inkommet
$searchBuilder->sortBy()->byLatest();
break;
case 3: // Lägsta pris
$searchBuilder->sortBy()->byLowestPrice();
break;
case 4: // Högsta pris
$searchBuilder->sortBy()->byHighestPrice();
break;
case 5: // Minst bud
$searchBuilder->sortBy()->byLeastAmountOfBids();
break;
case 6: // Flest bud
$searchBuilder->sortBy()->byHighestAmountOfBids();
break;
case 7: // Senast avslutad
$searchBuilder->sortBy()->byRecentlyEnded();
break;
default:
$searchBuilder->sortBy()->byHighestPrice();
break;
}
$selectedCategoryId = (isset($_REQUEST['catid']) && (int) $_REQUEST['catid'] > 0) ? (int) $_REQUEST['catid'] : 0;
if (isset($_REQUEST['subcatid']) && (int) $_REQUEST['subcatid'] > 0) {
$selectedCategoryId = (int) $_REQUEST['subcatid'];
}
if ($selectedCategoryId) {
$searchBuilder->setCategories([$selectedCategoryId]);
}
$requestSetCountyFlag = $_REQUEST['setcountyflag'] ?? null;
$countyFilter = null;
if ($requestSetCountyFlag) {
$countyFilter[] = $requestSetCountyFlag;
if (is_array($requestSetCountyFlag)) {
$countyFilter = $requestSetCountyFlag;
}
$countyFilter = $countiesCollection->filterCounties()->idsThatExist($countyFilter);
}
$requestSetMunicipality = $_REQUEST['setmunicipality'] ?? null;
$municipalityFilter = null;
if ($requestSetMunicipality) {
$municipalityFilter[] = $requestSetMunicipality;
if (is_array($requestSetMunicipality)) {
$municipalityFilter = $requestSetMunicipality;
}
if (in_array('countyclose', $municipalityFilter)) {
$municipalityFilter = ['countyclose'];
} else {
$municipalityFilter = $countiesCollection->filterMunicipalities()->idsThatExist($municipalityFilter);
}
}
$requestFilterReservePrice = $_REQUEST['reserve'] ?? null;
if ($requestFilterReservePrice && null !== $reserveFilterEnum = ReservePriceStatusEnum::tryFrom($requestFilterReservePrice)) {
$pageListPartials->setReservePriceStatus($reserveFilterEnum);
$searchBuilder->setReservePriceStatus($reserveFilterEnum);
}
// If the user somehow have selected more than one county combined with more than one municipality, then reset municipalities.
if ($countyFilter && count($countyFilter) > 1 && $municipalityFilter && count($municipalityFilter) > 1) {
$municipalityFilter = null;
}
if (
isset($_REQUEST['listVendors_id'])
|| (isset($_REQUEST['subcatpage']) && (int) $_REQUEST['subcatpage'] === 1)
|| (isset($_REQUEST['specialcat']) && in_array($_REQUEST['specialcat'], array('bankruptcy', 'closed')))
) {
$municipalityFilter = null;
}
// Filter on county
if (
$municipalityFilter &&
!array_intersect($municipalityFilter, ['all', 'countyclose']) &&
(!isset($_REQUEST["specialcat"]) || ($_REQUEST["specialcat"] === "all" || $_REQUEST['specialcat'] == ''))
) {
$searchBuilder->setMunicipalities($municipalityFilter);
}
// Filter on Län
if ($countyFilter) {
$countyCloseIds = [];
// County close
if ($municipalityFilter && in_array('countyclose', $municipalityFilter) && count($countyFilter) === 1) {
$closeCountyQuery = 'SELECT county_close FROM county_close WHERE county = ' . (int) $countyFilter[0];
$closeCountyStmt = mysqli_query($db, $closeCountyQuery);
if (!in_array('all', $countyFilter)) {
$countyCloseIds[] = (int) $countyFilter[0];
}
while ($closeCounties = mysqli_fetch_object($closeCountyStmt)) {
if (in_array($closeCounties->county_close, $countyCloseIds)) {
continue;
}
$countyCloseIds[] = $closeCounties->county_close;
}
} else {
if (!in_array('all', $countyFilter) && ($_REQUEST["specialcat"] == "all" || $_REQUEST['specialcat'] == '')) {
$countyCloseIds = $countyFilter;
}
}
if (count($countyCloseIds)) {
$searchBuilder->setCounties($countyCloseIds);
}
}
$sourceObjectsArray = [];
try {
$searchProductSCategoriesResult = $productCategoriesRepository->searchProductCategories($searchBuilder);
foreach ($searchProductSCategoriesResult->getItems() as $productCategoriesItem) {
$tmpCategories = explode(',', $productCategoriesItem['categories']);
$fakeProduct = new stdClass();
$fakeProduct->categories_id = end($tmpCategories);
// For the auctions amount per category calculation to work.
for ($i = 1; $i <= $productCategoriesItem['items']; $i++) {
$sourceObjectsArray[] = $fakeProduct;
}
}
} catch (\Klaravik\Storefront\GraphQL\Exception\GraphQLRepositoryException $e) {
}
try {
$searchResult = $redisSearch->searchProductsList($searchBuilder);
} catch (\Klaravik\Storefront\GraphQL\Exception\GraphQLRepositoryException $e) {
$searchResult = new PaginatedProductResponse(["data" => ["products" => ["pageCount" => 0, "totalCount" => 0]]]);
}
$pages = $searchResult->getPageCount();
$activeCounties = array();
$activeMunicipalities = array();
$totalNbrMatchedObjects = 0;
/** @var \Klaravik\Model\County $countyItem */
foreach ($countiesCollection->filterCounties()->orderByName() as $countyItem) {
$activeCounties[$countyItem->getId()] = $countyItem->getName();
if ($countyFilter && !in_array('all', $countyFilter) && !in_array($countyItem->getId(), $countyFilter)) {
continue;
}
/** @var \Klaravik\Model\County $municipalityItem */
foreach ($countiesCollection->filterMunicipalities($countyItem->getId()) as $municipalityItem) {
$activeMunicipalities[$municipalityItem->getId()] = [
'name' => $municipalityItem->getName(),
'county_id' => $countyItem->getId(),
];
}
}
uasort($activeMunicipalities, function ($a, $b) {
return strcmp($a["name"], $b["name"]);
});
$sortArray = array();
$prodObjects = array();
$pageUrl = $urlGenerator->generate('app.legacy.auction.listing');
if (!empty($_REQUEST['specialcat'])) {
switch ($_REQUEST['specialcat']) {
case 'closed':
$pageUrl = $urlGenerator->generate('app.legacy.auction.listing.closed');
break;
case 'bankruptcy':
$pageUrl = $urlGenerator->generate('app.legacy.auction.listing.bankruptcy');
break;
case 'promoted':
$pageUrl = $urlGenerator->generate('app.legacy.auction.listing.promoted');
break;
}
}
// *******************************************************************************************
print "<div class=\"page-container object-list-wrapper redis-search\">\n";
$showSortbar = false;
$grid_cookie = (isset($_COOKIE['grid']) ? $_COOKIE['grid'] : 3);
if (!isset($_REQUEST['listVendors_id']) && !isset($_REQUEST['subcatpage'])) {
if ($showClosed) {
$categoryCache = new \Klaravik\Category\Cache\ClosedCategoryCache();
} else {
$categoryCache = new \Klaravik\Category\Cache\ActiveCategoryCache();
}
$categoryCacheCollection = $categoryCache->cachedCategories();
$pageListPartials->setUrl($pageUrl)
->setPages($pages)
->setPage($curpage)
->setSessionVarName($sessionVarName)
->setShowClosed($showClosed)
->setActiveCounties($activeCounties)
->setActiveMunicipalities($activeMunicipalities)
->setTotalNbrMatchedObjects($totalNbrMatchedObjects)
->setCategoryCache($categoryCache)
->setListObjects($sourceObjectsArray);
$showSortbar = true;
?>
<div class="sortbar-filter-container-top">
<?php if ($selectedCategoryId > 0 || $showClosed || !empty($_REQUEST['searchtext'])): ?>
<div id="listNav" class="list-navigation">
<div class="row">
<div class="columns large-12">
<div class="breadcrumbs-wrapper">
<div class="left-blur"></div>
<div id="breadcrumbs" class="breadcrumbs">
<?php $pageListPartials->breadcrumbs($selectedCategoryId); ?>
</div>
<div class="right-blur"></div>
</div>
<hr>
</div>
</div>
<?php elseif ($_REQUEST['specialcat'] !== 'bankruptcy'): ?>
<div id="listNav" class="list-navigation">
<div class="row">
<div class="columns large-12">
<div class="category-head-tags-wrapper">
<div class="left-blur"></div>
<div id="category-head-tags" class="category-head-tags">
<?php foreach ($categoryCacheCollection->getTopLevel()->toArray() as $cat):
$urlParams = ['caturlname' => $cat->getUrl()];
$pageListPartials->geoLocationUrlParams($urlParams);
$pageListPartials->filterUrlParams($urlParams);
$url = $urlGenerator->generate('app.legacy.auction.listing.category', $urlParams);
?>
<a class="category-head-tag" href="<?php echo $url; ?>" aria-label="<?php echo $cat->getName(); ?>">
<div class="circle-with-icon">
<img src="/images/icons/icn-category-dark-<?php echo $cat->getIcon(); ?>.svg" alt="" aria-hidden="true"/>
</div>
<span><?php echo $cat->getEllipsedName(); ?></span>
</a>
<?php endforeach; ?>
</div>
<div class="right-blur"></div>
</div>
</div>
</div>
</div>
<?php endif; ?>
<?php if (!empty($_REQUEST["searchtext"]) || $showClosed || $selectedCategoryId > 0): ?>
<div class="row">
<div class="columns large-12">
<div class="category-tags-wrapper">
<div class="left-blur"></div>
<div id="catTags" class="category-tags">
<?php $pageListPartials->categoryButtons($selectedCategoryId); ?>
</div>
<div class="right-blur"></div>
</div>
</div>
</div> <!-- row -->
<?php endif; ?>
</div>
<?php
} else {
if (isset($_REQUEST['listVendors_id'])) {
$catHeadline = $trans->get('ALIAS_PRODUCTLIST_VENDOR');
$catDescription = $trans->get('ALIAS_PRODUCTLIST_VENDOR__DESCRIPTION');
}
if (isset($specialHeadline)) {
print "<div class='row collapse'><div class='large-12 columns'>";
print "<h1>" . $specialHeadline . "</h1>";
}
}
?>
<div class="list-header">
<div class="row">
<?php
// *******************************************************************************************
if (!isset($catHeadline)) {
$catHeadline = '';
}
if ($selectedCategoryId > 0) {
$categoryModel = $categoriesObject->getCategory($selectedCategoryId);
$catHeadline = $categoryModel->getHeadline();
$catDescription = $categoryModel->getDescription();
}
// Tweak 2013-02-08: Ingen filtrering på kategorier under avslutade auktioner
if ($showClosed) {
$catHeadline = $trans->get("ALIAS_PRODUCT_LIST_HEADLINE_CLOSED");
$catDescription = $trans->get("ALIAS_PRODUCT_LIST_DESCRIPTION_CLOSED");
}
if (isset($_REQUEST['specialcat']) && $_REQUEST["specialcat"] === "bankruptcy") {
$catHeadline = $trans->get("ALIAS_PRODUCT_LIST_HEADLINE_BANKRUPTCY") . ' <span class="auction-amount">(' . $searchResult->getTotalCount() . ')</span>';
$catDescription = $trans->get("ALIAS_PRODUCT_LIST_DESCRIPTION_BANKRUPTCY");
}
if (isset($_REQUEST['specialcat']) && $_REQUEST["specialcat"] === "promoted") {
$catHeadline = $trans->get("ALIAS_PRODUCT_LIST_HEADLINE_STOCK");
$catDescription = $trans->get("ALIAS_PRODUCT_LIST_DESCRIPTION_STOCK");
}
if (!empty($_REQUEST['searchtext'])) {
$appendCategory = !empty($categoryModel) ? 'i <span class="category-headline">' . strtolower($categoryModel->getName()) : '';
$catHeadline = $trans->get('text_headline_page-list_heading_searched') . ' <span class="search-word">”' . htmlentities($_REQUEST['searchtext']) . '”</span> ' . $appendCategory . '</span>';
$catDescription = '';
}
$headline = false;
if (isset($catHeadline) && strlen($catHeadline) > 0) {
$headline = true;
}
$categoriesListClasses = array(
'category-info',
'large-6',
'columns'
);
if ($showClosed) {
$categoriesListClasses[] = 'show-closed-auctions';
}
if ($headline) {
$categoriesListClasses[] = 'show-auctions';
} else {
$categoriesListClasses[] = 'large-6 medium-10';
}
if ($headline) {
if (isset($pageListPartials) && (empty($_REQUEST['specialcat']) || $showClosed) && $pageListPartials->totalNumberOfProducts((int) $selectedCategoryId)) {
$catHeadline .= ' <span class="auction-amount">(' . $pageListPartials->totalNumberOfProducts((int) $selectedCategoryId) . ')</span>';
}
if (!empty($_REQUEST['searchtext'])) {
$catHeadline .= '<a href="' . $urlGenerator->generate('app.legacy.index') . '" class="search-word-reset"><i class="ri-close-line"></i></a>';
}
print "<div class=\"" . implode(' ', $categoriesListClasses) . "\">";
print " <div class=\"category-info__wrapper\">";
print " <h1>" . $catHeadline . "</h1>";
print " <div class=\"catdescription\">\n";
if (isset($catDescription) && strlen($catDescription) > 0) {
print "<p>" . $catDescription . "</p>";
}
print " </div>\n";
print " </div>\n";
print "</div>";
} else {
print "<div class=\"" . implode(' ', $categoriesListClasses) . "\">";
print " <div class=\"category-info__wrapper all-auctions\">";
print " <h1>" . $trans->get('text_headline_page-list_heading_all-auctions') . ": <span>" . $pageListPartials->totalNumberOfProducts() . "</span></h1>";
print " </div>\n";
print "</div>";
}
if ($showClosed): ?>
<div class="columns large-6">
<div class='sell-with-us'>
<h2><?php $trans->eGet('text_subheading_page-list_subheading_closed-auctions'); ?></h2>
<p><?php $trans->eGet('text_bodytext_page-list_bodytext_all-auctions'); ?></p>
<a
href='<?php echo $urlGenerator->generate('app.legacy.pages.howtosell'); ?>'><?php $trans->eGet('link_button_page-list_link_all-auctions'); ?></a>
</div>
</div>
<?php endif; ?>
</div>
<?php
if ($showSortbar):
?>
<div class="row">
<div class="columns">
<div class="filter-wrapper">
<?php if (!$showClosed && $_REQUEST['specialcat'] !== 'bankruptcy'): ?>
<div class="filter-col redis-search__location">
<div class="location-filter redis-filter">
<?php
$countiesArr = [];
foreach ($countiesCollection->filterCounties()->orderByName() as $countyItem) {
// The leading 0 is to force PHP to preserve the key as the type string
$countiesArr['0' . $countyItem->getId()] = $countyItem->getName();
}
$municipalityArr = [];
foreach ($countiesCollection->filterMunicipalities()->orderByName() as $municipalityItem) {
$municipalityArr['0' . $municipalityItem->getParentId()]['0' . $municipalityItem->getId()] = $municipalityItem->getName();
}
?>
<script>
const currentCounty = <?php echo (!empty($setCountyFlagData) ? json_encode($setCountyFlagData) : "false"); ?>;
const currentMunicipality = <?php echo (!empty($setMunicipalityData) ? json_encode($setMunicipalityData) : "false"); ?>;
const reservePriceStatus = <?php echo (!empty($requestFilterReservePrice) ? json_encode($requestFilterReservePrice) : "false"); ?>;
const countiesList = <?php echo json_encode($countiesArr, JSON_UNESCAPED_UNICODE); ?>;
const municipalityList = <?php echo json_encode($municipalityArr, JSON_UNESCAPED_UNICODE); ?>;
const postLabelTrans = " <?php $trans->eGet('text_label_page-list-partials_including-bordering-counties'); ?>";
const reserveDropdownOptions = {
'': '<?php $trans->eGet('text_label_page-list-partials_reserve_all'); ?>',
none: '<?php $trans->eGet('text_label_page-list-partials_no_reserve'); ?>',
reached: '<?php $trans->eGet('text_label_page-list-partials_reserve_reached'); ?>',
notreached: '<?php $trans->eGet('text_label_page-list-partials_reserve_not_reached'); ?>'
};
</script>
<?php
echo '<form id="locationSearchForm" action="' . $pageListPartials->getFormUrl() . '" method="GET">';
echo $pageListPartials->renderCountyRedis();
echo $pageListPartials->renderMunicipalityRedis();
if (
$selectedCategoryId > 0 ||
!empty($_REQUEST['searchtext']) ||
($countyFilter && !in_array('all', $countyFilter)) ||
($municipalityFilter && !in_array('all', $municipalityFilter))
):
?>
<button data-k-modal-trigger="saved-search-modal" type="button"
class="saved-search-button saved-search-button-desktop button--large button--rounded button--text">
<svg width="14" height="14" viewBox="0 0 16 16" fill="none"
xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet">
<g clip-path="url(#clip0_11116_9170)">
<path
d="M2.66667 1.33331H13.3333C13.5101 1.33331 13.6797 1.40355 13.8047 1.52858C13.9298 1.6536 14 1.82317 14 1.99998V14.8506C14.0001 14.9063 13.9862 14.961 13.9597 15.0099C13.9332 15.0588 13.8948 15.1003 13.8482 15.1306C13.8015 15.1609 13.748 15.179 13.6926 15.1833C13.6371 15.1876 13.5814 15.178 13.5307 15.1553L8 12.6866L2.46933 15.1546C2.4186 15.1773 2.36301 15.1869 2.30761 15.1827C2.25221 15.1784 2.19876 15.1603 2.15212 15.1301C2.10548 15.0999 2.06713 15.0585 2.04057 15.0097C2.014 14.9609 2.00005 14.9062 2 14.8506V1.99998C2 1.82317 2.07024 1.6536 2.19526 1.52858C2.32029 1.40355 2.48986 1.33331 2.66667 1.33331ZM12.6667 13.31V2.66665H3.33333V13.31L8 11.2273L12.6667 13.31Z"
fill="#008540" />
<path
d="M6.59318 5C6.1822 5 5.77002 5.15179 5.4619 5.45268C4.84566 6.05446 4.84641 7.00917 5.4619 7.61122C5.4619 7.61122 7.9387 10 7.99978 10C8.06087 10 9.74506 8.3873 10.5378 7.61337C11.1541 7.01159 11.1541 6.05648 10.5378 5.45484C9.92158 4.85306 8.89391 4.85306 8.27766 5.45484L8.00113 5.72445L7.72236 5.45282C7.41408 5.15193 7.00415 5 6.59318 5Z"
fill="#008540" />
</g>
<defs>
<clipPath id="clip0_11116_9170">
<rect width="16" height="16" fill="white" />
</clipPath>
</defs>
</svg>
<?php $trans->eGet("text_label_saved-search_trigger-button") ?>
</button>
<?php endif;
print '</form>';
print '</div>'; // End location filter
print '</div>'; // End filter-col
print '<div class="filter-col">';
print '<form id="reservePriceForm" action="' . $pageListPartials->getFormUrl() . '" method="GET">';
print $pageListPartials->renderReservePrice();
print '</form>';
print '</div>'; // end filter-col
endif;
print '<div class="filter-col">';
print '<div class="saved-search-wrapper hide-for-large-up">';
if (
$selectedCategoryId > 0 ||
!empty($_REQUEST['searchtext']) ||
($countyFilter && !in_array('all', $countyFilter)) ||
($municipalityFilter && !in_array('all', $municipalityFilter))
):
print "<button data-k-modal-trigger=\"saved-search-modal\" class=\"saved-search-button saved-search-button-mobile button--medium button--rounded button--text show-for-medium-down\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" preserveAspectRatio=\"xMidYMid meet\"><g clip-path=\"url(#clip0_11116_9170)\"><path d=\"M2.66667 1.33331H13.3333C13.5101 1.33331 13.6797 1.40355 13.8047 1.52858C13.9298 1.6536 14 1.82317 14 1.99998V14.8506C14.0001 14.9063 13.9862 14.961 13.9597 15.0099C13.9332 15.0588 13.8948 15.1003 13.8482 15.1306C13.8015 15.1609 13.748 15.179 13.6926 15.1833C13.6371 15.1876 13.5814 15.178 13.5307 15.1553L8 12.6866L2.46933 15.1546C2.4186 15.1773 2.36301 15.1869 2.30761 15.1827C2.25221 15.1784 2.19876 15.1603 2.15212 15.1301C2.10548 15.0999 2.06713 15.0585 2.04057 15.0097C2.014 14.9609 2.00005 14.9062 2 14.8506V1.99998C2 1.82317 2.07024 1.6536 2.19526 1.52858C2.32029 1.40355 2.48986 1.33331 2.66667 1.33331ZM12.6667 13.31V2.66665H3.33333V13.31L8 11.2273L12.6667 13.31Z\" fill=\"#008540\"/><path d=\"M6.59318 5C6.1822 5 5.77002 5.15179 5.4619 5.45268C4.84566 6.05446 4.84641 7.00917 5.4619 7.61122C5.4619 7.61122 7.9387 10 7.99978 10C8.06087 10 9.74506 8.3873 10.5378 7.61337C11.1541 7.01159 11.1541 6.05648 10.5378 5.45484C9.92158 4.85306 8.89391 4.85306 8.27766 5.45484L8.00113 5.72445L7.72236 5.45282C7.41408 5.15193 7.00415 5 6.59318 5Z\" fill=\"#008540\"/></g><defs><clipPath id=\"clip0_11116_9170\"><rect width=\"16\" height=\"16\" fill=\"white\"/></clipPath></defs></svg>" . $trans->get("text_label_saved-search_trigger-button") . "</button>";
endif;
print '</div>'; // End grid-picker-wrapper
print '<div class="secondary-sortbar-wrapper">';
print '<div class="secondary-sortbar">';
print $pageListPartials->renderPerPage();
print $pageListPartials->renderSortOrder();
print '</div>';
print '</div>';
print '</div>'; // end filter-col
?>
</div> <!-- end filter-wrapper -->
</div> <!-- end columns -->
</div> <!-- end row -->
<?php endif; ?>
</div> <!-- list-header -->
</div> <!-- sortbar-filter-conatainer -->
<?php
$productIds = array();
if ($searchResult->getTotalCount()) {
print " <div class=\"row\">\n";
print " <div id=\"listing_wrapper\" class=\"listing_wrapper\">\n";
print " <div class=\"redis-product-grid\">\n";
$currentDateTime = new DateTime();
$productCardRenderer = new ProductCardRenderer($twig, $propUserData, $parameters);
$productObjectConverter = new ProductObjectConverter();
$timeLeftUtil = $container->get(TimeLeftUtil::class);
foreach ($searchResult->getItems() as $object) {
$productIds[] = $object['id'];
$prodObjects[] = [
'id' => (int) $object['id'],
'timeLeft' => $timeLeftUtil->timeLeft(new DateTime($object['endDate'])),
'auctionEnd' => strtotime($object['endDate'])
];
try {
echo $productCardRenderer->render(
$productObjectConverter->toProductList($object, $favoriteProductListCollection),
false,
true
);
} catch (LoaderError | RuntimeError | SyntaxError $e) {}
}
print " <!-- end redis-product-grid --></div>";
if ((!isset($_REQUEST['specialcat']) || (isset($_REQUEST['specialcat']) && ($_REQUEST['specialcat'] == 'all' || $_REQUEST['specialcat'] == ''))) && !isset($_REQUEST['curpage']) && (isset($_REQUEST['catid']) && (int) $_REQUEST['catid'] < 1)) {
print "<a href=/corona-information.html class=\"coronaBar\">";
print $trans->get('text_url_page-list_covid-information');
print " <img src='/images/arrow-right.svg?v=1' alt='" . $trans->get('text_altimg_page-list_arrow') . "'>";
print "</a>";
}
print " <!-- end #listing_wrapper --></div>\n";
print " <!-- end row --></div>\n";
$js_searchtext = '';
if (isset($_REQUEST['searchtext'])) {
$js_searchtext = str_replace(array("'", "\r\n", "\r", "\n"), "", $_REQUEST["searchtext"]);
}
$ajaxtimeout = 45000;
if (isset($_REQUEST['specialcat']) && $_REQUEST["specialcat"] == "closed") {
$ajaxtimeout = 3600000;
}
?>
<?php
}
if ($searchResult->getTotalCount() === 0) {
?>
<div class="row">
<div class="columns">
<div class="no-search-results-container">
<div class="lottie-search-container">
<div id="lottie-no-search" class="lottie-no-search"
data-src="/images/lottie-animations/lottie-search-real.json"></div>
</div>
<p>
<?php
print $trans->get("ALIAS_PRODUCT_LIST_NOOBJECTS");
print "<span>" . $trans->get("ALIAS_PRODUCT_LIST_NOOBJECTS__DESCRIPTION") . "</span>";
?>
</p>
</div>
</div>
</div>
<?php
}
if (
$selectedCategoryId > 0 ||
!empty($_REQUEST['searchtext']) ||
($countyFilter && !in_array('all', $countyFilter)) ||
($municipalityFilter && !in_array('all', $municipalityFilter))
):
print "<div class=\"saved-search-button-bottom-container\"><button data-k-modal-trigger=\"saved-search-modal\" class=\"saved-search-button saved-search-button-bottom button--medium button--rounded button--text \"><svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" preserveAspectRatio=\"xMidYMid meet\"><g clip-path=\"url(#clip0_11116_9170)\"><path d=\"M2.66667 1.33331H13.3333C13.5101 1.33331 13.6797 1.40355 13.8047 1.52858C13.9298 1.6536 14 1.82317 14 1.99998V14.8506C14.0001 14.9063 13.9862 14.961 13.9597 15.0099C13.9332 15.0588 13.8948 15.1003 13.8482 15.1306C13.8015 15.1609 13.748 15.179 13.6926 15.1833C13.6371 15.1876 13.5814 15.178 13.5307 15.1553L8 12.6866L2.46933 15.1546C2.4186 15.1773 2.36301 15.1869 2.30761 15.1827C2.25221 15.1784 2.19876 15.1603 2.15212 15.1301C2.10548 15.0999 2.06713 15.0585 2.04057 15.0097C2.014 14.9609 2.00005 14.9062 2 14.8506V1.99998C2 1.82317 2.07024 1.6536 2.19526 1.52858C2.32029 1.40355 2.48986 1.33331 2.66667 1.33331ZM12.6667 13.31V2.66665H3.33333V13.31L8 11.2273L12.6667 13.31Z\" fill=\"#008540\"/><path d=\"M6.59318 5C6.1822 5 5.77002 5.15179 5.4619 5.45268C4.84566 6.05446 4.84641 7.00917 5.4619 7.61122C5.4619 7.61122 7.9387 10 7.99978 10C8.06087 10 9.74506 8.3873 10.5378 7.61337C11.1541 7.01159 11.1541 6.05648 10.5378 5.45484C9.92158 4.85306 8.89391 4.85306 8.27766 5.45484L8.00113 5.72445L7.72236 5.45282C7.41408 5.15193 7.00415 5 6.59318 5Z\" fill=\"#008540\"/></g><defs><clipPath id=\"clip0_11116_9170\"><rect width=\"16\" height=\"16\" fill=\"white\"/></clipPath></defs></svg>" . $trans->get("text_label_saved-search_trigger-button") . "</button>";
endif;
print "</div>\n";
print "<!-- end .page-container --></div>\n";
print "<!-- end #topbar_full --></div>";
?>
<?php if ($selectedCategoryId < 1): ?>
<div id="topbar-app">
<div class="topbar-app__wrapper">
<p class="topbar-app__text"><?php $trans->eGet("text_topbar_download-app_description") ?></p>
<a href="/app/download">
<button
class="topbar-app__download button--small button--highlight"><?php $trans->eGet("text_topbar_download-app_button") ?></button>
</a>
</div>
<p href="#" id="topbar-app__close" class="topbar-app__close-icon"><i class="ri-close-line"></i></p>
</div>
<?php endif;
if ($showSortbar):
?>
<div class="pagination-wrapper">
<div class="pagination bottom-pagination">
<?php print $pageListPartials->renderPaging(); ?>
</div>
</div>
<?php
endif;
// *******************************************************************************************
// Trustpilot-showcase
if ($_REQUEST['specialcat'] === '' || $_REQUEST['specialcat'] === 'all') {
echo $container->get('twig')->render('public/trustpilot/trustpilot_slider.html.twig');
} else {
echo $container->get('twig')->render('public/trustpilot/trustpilot_small.html.twig');
}
// *******************************************************************************************
if (isset($_SESSION['register_id'])) {
?>
<k-modal id="saved-search-modal" class="saved-search-modal" data-position="center">
<i slot="close-icon" class="ri-close-fill"></i>
<div slot="header" class="saved-search-modal__header">
<span class="saved-search-modal__header-img"></span>
</div>
<div slot="body" class="saved-search-modal__body">
<h1 class="saved-search-modal__heading"><?php $trans->eGet("text_heading_saved-search-modal_save-search") ?>
</h1>
<p class="saved-search-modal__subheading"><?php $trans->eGet("text_bodytext_saved-search-modal_save-search") ?>
</p>
<form id="save-search-form" class="saved-search-modal__form validate-form">
<div class="form-field-1">
<input type="text" id="saveSearchTitle" class="form-field-1__input-field validate-field textInput"
value=" " />
<label for="form-field-1" class="form-field-1__label">
<?php $trans->eGet("text_label_saved-search-modal_save-search-input") ?>
</label>
<span class="form-clear-field"></span>
</div>
<span class="saved-search-modal__info-text saved-search-modal__filters-description"></span>
<div>
<k-switch-component checked label="<?php $trans->eGet("text_label_saved-search-modal_mail-switch") ?>"
id="mail-switch"></k-switch-component>
</div>
<span
class="saved-search-modal__info-text"><?php $trans->eGet("text_label_saved-search-modal_mail-disclaimer") ?></span>
<button class="button--large button--primary button--rounded button--grid">
<?php $trans->eGet("text_label_saved-search_trigger-button") ?>
</button>
</form>
</div>
<div slot="footer" class="saved-search-modal__footer"></div>
</k-modal>
<?php } else { ?>
<k-modal id="saved-search-modal" data-position="center">
<i slot="close-icon" class="ri-close-fill"></i>
<div slot="header" class="saved-search-modal__header">
<span class="saved-search-modal__header-img"></span>
</div>
<div slot="body" class="saved-search-modal__body">
<h1 class="saved-search-modal__heading"><?php $trans->eGet("text_heading_saved-search-modal_save-search") ?>
</h1>
<p class="saved-search-modal__subheading"><?php $trans->eGet("text_bodytext_saved-search-modal_login") ?></p>
</div>
<div slot="footer" class="saved-search-modal__footer saved-search-modal__footer-btns">
<a href="<?php echo ($urlGenerator->generate('app.legacy.pages.login', ['continue' => $request->getRequestUri()])) ?>"
class="button--large button--primary button--rounded">
<i class="ri-user-fill"></i><?php $trans->eGet("text_label_saved-search-modal_login") ?>
</a>
<a href="<?php echo ($urlGenerator->generate('app.legacy.pages.register')) ?>"
class="button--large button--rounded button--secondary">
<i class="ri-user-add-line"></i><?php $trans->eGet("text_label_saved-search-modal_create-account") ?>
</a>
</div>
</k-modal>
<k-modal id="saved-object-modal" data-position="center">
<i slot="close-icon" class="ri-close-fill"></i>
<div slot="header" class="saved-object-modal__header">
<span class="saved-object-modal__header-img"></span>
</div>
<div slot="body" class="saved-object-modal__body">
<h1 class="saved-object-modal__heading"><?php $trans->eGet("text_heading_saved-object-modal_save-object") ?>
</h1>
<p class="saved-object-modal__subheading"><?php $trans->eGet("text_bodytext_saved-object-modal_login") ?></p>
</div>
<div slot="footer" class="saved-search-modal__footer saved-object-modal__footer-btns">
<a href="<?php echo ($urlGenerator->generate('app.legacy.pages.login', ['continue' => $request->getRequestUri()])) ?>"
class="button--large button--primary button--rounded" saved-object-cta="login">
<i class="ri-user-fill"></i><?php $trans->eGet("text_label_saved-object-modal_login") ?>
</a>
<a href="<?php echo ($urlGenerator->generate('app.legacy.pages.register')) ?>"
class="button--large button--rounded button--secondary" saved-object-cta="create-account">
<i class="ri-user-add-line"></i><?php $trans->eGet("text_label_saved-object-modal_create-account") ?>
</a>
</div>
</k-modal>
<?php
}
?>
<script>
const prodObjects = <?php echo json_encode($prodObjects) ?>;
const watchProdIds = [<?php echo implode(",", $productIds); ?>];
const notifierUrl = "<?php echo $parameters->get('app.notifier.url'); ?>";
const ajaxTimeout = <?php echo isset($ajaxtimeout) ? $ajaxtimeout : "false"; ?>;
</script>
<?php
$manifestAssets->add('bundle-pages-redisSearchFilter');