CategoryID; } if(!$primaryCategoryID) $primaryCategoryID = (isset($_GET['primaryCategory']) && is_numeric($_GET['primaryCategory']) && ((int)$_GET['primaryCategory']) > 0 ? ((int)$_GET['primaryCategory']) : NULL); $primaryCategoryName = NULL; if($primaryCategoryID) { $cat = Category::FromPKWithName($primaryCategoryID, SITE_COUNTRY); if($cat) $primaryCategoryName = $cat->Name; else $primaryCategoryID = NULL; } if($primaryCategoryID) $googleShoppingEcommPageType = 'category'; else $googleShoppingEcommPageType = 'searchresults'; $useSlave = true; $brandName = isset($_GET['brand']) ? str_replace('_', '-', str_replace('-', ' ', Utilities::CleanUTF8($_GET['brand']))) : ''; if(strtolower($brandName) === 'thierry mugler') $brandName = 'Mugler'; $collectionName = isset($_GET['collection']) ? str_replace('_', '-', str_replace('-', ' ', Utilities::CleanUTF8($_GET['collection']))) : ''; $sex = $_GET['sex'] ?? ''; if($brandName && $collectionName && $sex && in_array($sex, array('F','M'))) { $fragranceCategory = Category::SearchWithNames("IndustryID = ".INDUSTRY_ID." AND Name = 'Fragrance'", 'Name', 1); $sql = "select osc.OptionID from skudetailoptionsitecountry osc inner join skudetailoption o on o.ID = osc.OptionID inner join skudetailoptionsitecountry posc on posc.OptionID = o.ParentID AND posc.SiteCountryID = osc.SiteCountryID and posc.Name = '".RealEscapeString($brandName)."' inner join skudetail d on d.OptionID = o.ID inner join sku s on s.ID = d.SkuID inner join skudetail gd on gd.SkuID = s.ID and gd.OptionID IN (".($sex === 'M' ? SkuDetailOption::GENDER_M : SkuDetailOption::GENDER_F).", ".SkuDetailOption::GENDER_U.") where osc.SiteCountryID = 1 and osc.Name = '".RealEscapeString($collectionName)."' group by o.ID order by count(*) DESC LIMIT 1;"; $primaryDetailID = FetchSqlAsScalar($sql, false, $useSlave); } if(!$primaryDetailID) { $brandName = $collectionName = $sex = ''; } if(isset($_GET['primaryDetailName'])) { $detailName = str_replace('_', '-', str_replace('-', ' ', urldecode($_GET['primaryDetailName']))); $detail = SkuDetailOptionSiteCountry::Search("SiteCountryID = ".SITE_COUNTRY." AND Name = '".RealEscapeString($detailName)."'", false, array('OptionID'), NULL, NULL, NULL, NULL, false, $useSlave); if($detail) $primaryDetailID = $detail[0]->OptionID; } if(!$primaryDetailID) $primaryDetailID = (isset($_GET['primaryDetail']) && is_numeric($_GET['primaryDetail']) && ((int)$_GET['primaryDetail']) > 0 ? ((int)$_GET['primaryDetail']) : NULL); $detailsStr = (isset($_GET['details']) ? trim($_GET['details']) : ''); $detailOptionIDs = array(); if($primaryDetailID) $detailOptionIDs[$primaryDetailID] = $primaryDetailID; if($detailsStr) { $detailsStrExplode = explode(',', $detailsStr); foreach($detailsStrExplode as $d) { $d = trim($d); if($d && is_numeric($d) && ((int)$d) > 0) $detailOptionIDs[((int)$d)] = ((int)$d); } unset($detailsStrExplode); } if(!$primaryDetailID && count($detailOptionIDs) === 1) { $arrKeys = array_keys($detailOptionIDs); $primaryDetailID = $arrKeys[0]; } $primaryDetailName = NULL; if($primaryDetailID) { $opt = SkuDetailOption::FromPKWithName($primaryDetailID, SITE_COUNTRY); if($opt) $primaryDetailName = $opt->Name; else $primaryDetailID = NULL; } $breadcrumbTrail = array(); if(SiteTypeDetect::ShowMobileSite()) $numPerPageDefault = 16; $query = (isset($_GET['q']) ? trim(($_GET['q'])) : ''); while($query !== strip_tags($query)) { $query = strip_tags($query); } $pageNum = (isset($_GET['p']) && is_numeric($_GET['p']) && ((int)$_GET['p']) > 0 ? ((int)$_GET['p']) : 1); $numPerPage = (isset($_GET['l']) && is_numeric($_GET['l']) && ((int)$_GET['l']) > 0 ? ((int)$_GET['l']) : $numPerPageDefault); if($numPerPage > 144) $numPerPage = 144; //If the mobile page wants to start from a certain page, load everything and let the javascript scroll to where they were before using the anchor tag. $initialNumberToGet = null; if(SiteTypeDetect::ShowMobileSite() && $pageNum > 1) { $initialNumberToGet = $numPerPage * $pageNum; if($initialNumberToGet > 12000) $initialNumberToGet = 12000; $pageNum = 1; } $isGiftSets = isset($_GET['giftSets']) && $_GET['giftSets'] == '1'; $isSpecialOffers = isset($_GET['specialOffers']) && $_GET['specialOffers'] == '1'; $skuListID = (isset($_GET['skulistid']) ? ((int)$_GET['skulistid']) : NULL); $skuList = NULL; $skuListPageName = NULL; $onlySkuIDs = NULL; if($skuListID) { $skuList = SkuList::FromPK($skuListID); if($skuList) { //$onlySkuIDs = $skuList->GetSkuIDs(); $skuListPageName = '/'.$skuList->PageName.'/'; } } $sort = (isset($_GET['s']) && !is_array($_GET['s']) ? trim($_GET['s']) : ''); if(!$sort || ($sort !== 'PriceA' && $sort !== 'PriceD' && $sort !== 'TitleA' && $sort !== 'TitleD' && $sort !== 'Popularity')) $sort = $sortDefault; $categoriesStr = (isset($_GET['categories']) ? trim($_GET['categories']) : ''); $categoryIDs = array(); if($primaryCategoryID) $categoryIDs[$primaryCategoryID] = $primaryCategoryID; if($categoriesStr) { $categoriesStrExplode = explode(',', $categoriesStr); foreach($categoriesStrExplode as $c) { $c = trim($c); if($c && is_numeric($c) && ((int)$c) > 0) $categoryIDs[(int)$c] = (int)$c; } unset($categoriesStrExplode); } $maxPriceLimit = Setting::Get('MaxSkuPrice-'.SITE_COUNTRY, false, $useSlave); //is cached every 15 minutes by update-header-footer.php if(!$maxPriceLimit) $maxPriceLimit = 150; $priceStr = (isset($_GET['price']) ? trim($_GET['price']) : ''); $minPrice = $maxPrice = NULL; if($priceStr) { $priceStrExplode = explode('-', $priceStr); if(count($priceStrExplode) === 2) { if(is_numeric($priceStrExplode[0]) && is_numeric($priceStrExplode[1])) { $minPrice = ((int)$priceStrExplode[0]); $maxPrice = ((int)$priceStrExplode[1]); if($minPrice > $maxPrice) { $m = $minPrice; $minPrice = $maxPrice; $maxPrice = $m; } } } unset($priceStrExplode); if($maxPrice == 999999) $maxPrice = NULL; } if($minPrice === 0) $minPrice = NULL; if($maxPrice == $maxPriceLimit) $maxPrice = NULL; if($maxPrice >= $maxPriceLimit) $maxPrice = NULL; $onlyOurAvailableStock = NULL; if(in_array(SITE_COUNTRY, $useOnlyOurStockForSites)) $onlyOurAvailableStock = true; $onlyTotalStockAvailableQuickly = NULL; if(in_array(SITE_COUNTRY, $useOnlyQuickStockForSites)) $onlyTotalStockAvailableQuickly = true; $includeSkusInChildCategories = true; $variantGroupID = NULL; $totalNumResults = 0; $orderByString = ''; if($sort === 'Popularity') $orderByString = 'SalesRank DESC, FullName'; elseif($sort === 'PriceD') $orderByString = 'Price DESC, FullName DESC'; elseif($sort === 'PriceA') $orderByString = 'Price, FullName'; elseif($sort === 'TitleD') $orderByString = 'FullName DESC, Price DESC'; else $orderByString = 'FullName, Price'; $orderByDateAdded = $onlySpecialOffers = false; $onlyAddedSinceDate = $booleanOptionFieldName = $booleanOptionValue = NULL; if($isGiftSets) { $booleanOptionFieldName = 'Gift Set'; $booleanOptionValue = true; } elseif($isSpecialOffers) { $onlySpecialOffers = true; } if($onlyAddedSinceDate && !Validation::IsMySQLDate($onlyAddedSinceDate)) { $onlyAddedSinceDate = NULL; } if((count($detailOptionIDs) > 1 || $maxPrice || $minPrice || $sort !== $sortDefault || $numPerPageDefault !== $numPerPage || ($isGiftSets && count($detailOptionIDs)) || ($isSpecialOffers && count($detailOptionIDs)) || ($isGiftSets && count($categoryIDs)) || ($isSpecialOffers && count($categoryIDs))) && isset($_SERVER['HTTP_USER_AGENT']) && ( stripos($_SERVER['HTTP_USER_AGENT'], 'gptbot') !== false || stripos($_SERVER['HTTP_USER_AGENT'], 'pinterestbot') !== false || stripos($_SERVER['HTTP_USER_AGENT'], 'meta-externalagent') !== false ) ) { header('HTTP/1.0 403 Forbidden', true, 403); exit(); } $detailFilterOptions = NULL; $advancedSearchOptions = array( 'keyword' => $query, 'siteCountryID' => SITE_COUNTRY, 'active' => true, 'totalStock' => true, 'numberPerPage' => (is_null($initialNumberToGet) ? $numPerPage : $initialNumberToGet), 'pageNumber' => $pageNum, 'totalFoundRows' => &$totalNumResults, 'onlySpecialOffers' => $onlySpecialOffers, 'categoryID' => $categoryIDs, 'optionID' => $detailOptionIDs, 'variantGroupID' => $variantGroupID, 'booleanOptionFieldName' => $booleanOptionFieldName, 'booleanOptionValue' => $booleanOptionValue, 'includeSkusInChildCategories' => $includeSkusInChildCategories, 'orderByDateAdded' => $orderByDateAdded, 'ourAvailableStock' => $onlyOurAvailableStock, 'orderByString' => $orderByString, 'minPrice' => $minPrice, 'maxPrice' => $maxPrice, 'onlyAddedSinceDate' => $onlyAddedSinceDate, 'onlySkuIDs' => $onlySkuIDs, 'skuListID' => ($skuList ? $skuList->ID : NULL) ); //when the filter counts are hidden there is no point doing the extra searches that keep them accurate $esResult = Sku::AdvancedSearchUsingElasticSearch($advancedSearchOptions, true, $useSlave, false, !CatalogueUI::HideSkuFilterCounts()); $skus = $esResult['Skus']; $detailFilterOptions = $esResult['Aggregations']; if (!is_null($skuListID) && SkuListSku::Search("SkuListID=" . $skuListID . " AND SkuOrder > 0", "", "", "SkuOrder ASC", 1, 1, NULL, false, $useSlave)) { $skuListSkusInOrder = SkuListSku::Search("SkuListID=" . $skuListID, "", "", "SkuOrder ASC", NULL, NULL, NULL, false, $useSlave); $skuListSkusInOrderWithIDIndex = array(); foreach ($skuListSkusInOrder as $sku) $skuListSkusInOrderWithIDIndex[$sku->SkuID] = $sku; $skuListSkusInOrder = Null; unset($skuListSkusInOrder); foreach ($skus as $sku) $sku->SkuOrder = $skuListSkusInOrderWithIDIndex[$sku->ID]->SkuOrder; $skuListSkusInOrderWithIDIndex = Null; unset($skuListSkusInOrderWithIDIndex); function compareSkuOrder($skuListSku1, $skuListSku2) { return (int)$skuListSku1->SkuOrder > (int)$skuListSku2->SkuOrder; } usort($skus, "compareSkuOrder"); } $primaryCategory = NULL; if($primaryCategoryID) $primaryCategory = Category::FromPKWithName($primaryCategoryID, SITE_COUNTRY, true, true, true); $primaryDetailOption = NULL; if($primaryDetailID) $primaryDetailOption = SkuDetailOption::FromPKWithName($primaryDetailID, SITE_COUNTRY, true, true, true); ///get the canonical url and if it should be indexed by robots if($brandName && $collectionName && $sex) { $canonical = SITE_URL_SECURE.CatalogueUI::GenerateProductUrl($sex, $brandName, $collectionName); $noIndexPage = false; } else { $canonical = SITE_URL_SECURE.CatalogueUI::GenerateSearchPageUrl($primaryCategoryID, $primaryCategoryName, $primaryDetailID, $primaryDetailName, $query, $detailOptionIDs, $categoryIDs, $minPrice, $maxPrice, $sort, $numPerPage, $pageNum, $sortDefault, $numPerPageDefault, NULL, NULL, $isGiftSets, $isSpecialOffers, $skuListPageName); $noIndexPage = CatalogueUI::$lastSearchPageUrlNoFollow; if(!$noIndexPage && $primaryCategoryName && ($primaryCategoryID == 41 || $primaryCategoryID == 42) && $primaryDetailOption && $primaryDetailOption->TypeID == 5 && $pageNum == 1) { $canonical = SITE_URL_SECURE.CatalogueUI::GenerateBrandUrl(($primaryCategoryID == 41 ? 'M' : 'F'), $primaryDetailOption->Name); } } //block chaptgpt from access pages it should not be indexing if($noIndexPage && isset($_SERVER['HTTP_USER_AGENT']) && ( stripos($_SERVER['HTTP_USER_AGENT'], 'gptbot') !== false || stripos($_SERVER['HTTP_USER_AGENT'], 'pinterestbot') !== false || stripos($_SERVER['HTTP_USER_AGENT'], 'meta-externalagent') !== false ) ) { header('HTTP/1.0 403 Forbidden'); exit(); } if($primaryCategory) { if($primaryCategory->ParentName) { $crumbUrl = CatalogueUI::GenerateCategoryUrl($primaryCategory->ParentName); $breadcrumbTrail[$crumbUrl] = $primaryCategory->ParentName; } $crumbUrl = CatalogueUI::GenerateCategoryUrl($primaryCategory->Name); $breadcrumbTrail[$crumbUrl] = $primaryCategory->Name; } $blogPosts = []; if($primaryDetailOption) { $blogPosts = BlogPostLink::GetBlogPostsForSkuDetailOption($primaryDetailOption->ID, SITE_COUNTRY, 3); } if($primaryDetailOption && $primaryCategory) { $crumbUrl = CatalogueUI::GenerateSearchPageUrl($primaryCategory->ID, $primaryCategory->Name, $primaryDetailOption->ID, $primaryDetailOption->Name, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, false, NULL); $breadcrumbTrail[$crumbUrl] = $primaryDetailOption->Name; } elseif($brandName && $collectionName && $sex) { $crumbUrl = CatalogueUI::GenerateSexUrl($sex); $breadcrumbTrail[$crumbUrl] = ($sex === 'F' ? $translations['Perfume'] : $translations['Aftershave']); $crumbUrl = CatalogueUI::GenerateBrandUrl($sex, $brandName); $breadcrumbTrail[$crumbUrl] = $brandName; $crumbUrl = CatalogueUI::GenerateProductUrl($sex, $brandName, $collectionName); $breadcrumbTrail[$crumbUrl] = $collectionName; } elseif($primaryDetailOption) { $crumbUrl = CatalogueUI::GenerateDetailUrl($primaryDetailOption->Name, $primaryDetailOption->ID); $breadcrumbTrail[$crumbUrl] = $primaryDetailOption->Name; } if(!$primaryCategoryName && $primaryDetailOption && $primaryDetailOption->TypeID == 6 && $primaryDetailOption->ParentID && $pageNum == 1 && !$query && !$minPrice && !$maxPrice && count($detailOptionIDs) <= 1 && $sort == $sortDefault && $numPerPageDefault == $numPerPage && !$isGiftSets && !$isSpecialOffers && !$collectionName) { $mostPopularGenderForCollection = FetchSqlAsScalar("select s.Code from skudetail d inner join skudetail dGender on dGender.SkuID = d.SkuID and dGender.TypeID = 9 inner join skudetailoption s ON dGender.OptionID = s.ID where d.OptionID = ".$primaryDetailOption->ID." group by s.Code order by count(*) desc limit 1;", false, $useSlave); $primaryDetailOptionParent = SkuDetailOption::FromPKWithName($primaryDetailOption->ParentID, SITE_COUNTRY, false, false, false); Utilities::Redirect(CatalogueUI::GenerateProductUrl(($mostPopularGenderForCollection === 'M' ? 'M': 'F'), $primaryDetailOptionParent->Name, $primaryDetailOption->Name), 301); exit(); } $pageContent = NULL; if($skuList) { $pageTitle = $skuList->PageMetaTitle; $pageDesc = $skuList->PageMetaDescription; } elseif($isGiftSets) { $pageContent = PageContent::FromPK(array('SiteCountryID' => SITE_COUNTRY, 'PageName' => 'GiftSets')); $pageTitle = $pageContent->PageTitle; $pageDesc = $pageContent->MetaDesc; if(isset($translations['GIFT_SETS_TITLE']) && $translations['GIFT_SETS_TITLE']) $pageTitle = htmlspecialchars(str_replace('{0}', $translations['Perfume Click'], $translations['GIFT_SETS_TITLE']), ENT_QUOTES); if(isset($translations['GIFT_SETS_META_DESCRIPTION']) && $translations['GIFT_SETS_META_DESCRIPTION']) $pageDesc = htmlspecialchars($translations['GIFT_SETS_META_DESCRIPTION'].Utilities::GetTrustpilotMetaDescription(), ENT_QUOTES); } elseif($isSpecialOffers) { $pageContent = PageContent::FromPK(array('SiteCountryID' => SITE_COUNTRY, 'PageName' => 'SpecialOffers')); $pageTitle = $pageContent->PageTitle; $pageDesc = $pageContent->MetaDesc; if(isset($translations['SPECIAL_OFFERS_TITLE']) && $translations['SPECIAL_OFFERS_TITLE']) $pageTitle = htmlspecialchars(str_replace('{0}', $translations['Perfume Click'], $translations['SPECIAL_OFFERS_TITLE']), ENT_QUOTES); if(isset($translations['SPECIAL_OFFERS_META_DESCRIPTION']) && $translations['SPECIAL_OFFERS_META_DESCRIPTION']) $pageDesc = htmlspecialchars($translations['SPECIAL_OFFERS_META_DESCRIPTION'].Utilities::GetTrustpilotMetaDescription(), ENT_QUOTES); } elseif($primaryCategory && $primaryDetailOption) { if(strlen($primaryCategory->PageTitle) > 10) $pageTitle = $primaryCategory->PageTitle; elseif($primaryDetailOption->TypeID == 5 && $primaryCategory->MetaDescriptionDynamicText1 && isset($translations['CATEGORY_BRAND_PAGE_TITLE'])) $pageTitle = htmlspecialchars(str_replace(array('{0}', '{1}', '{2}'), array($primaryDetailOption->Name, $primaryCategory->MetaDescriptionDynamicText1, $translations['Perfume Click']), $translations['CATEGORY_BRAND_PAGE_TITLE'])); else $pageTitle = htmlspecialchars($primaryCategory->Name.' - '.str_replace(array('{0}', '{1}'), array($primaryDetailOption->Name, $primaryCategory->Name), $translations['Cheap {0} {1}']).' - '.$translations['Buy Cheap']); if(strlen($primaryCategory->MetaDescription) > 10) $pageDesc = $primaryCategory->MetaDescription; elseif($primaryDetailOption->TypeID == 5 && $primaryCategory->MetaDescriptionDynamicText2 && $primaryCategory->MetaDescriptionDynamicText3 && isset($translations['CATEGORY_BRAND_META_DESCRIPTION']) && $translations['CATEGORY_BRAND_META_DESCRIPTION']) $pageDesc = htmlspecialchars(str_replace(array('{0}', '{1}', '{2}', '{3}'), array($translations['Perfume Click'], $primaryCategory->MetaDescriptionDynamicText2, $primaryCategory->MetaDescriptionDynamicText3, $primaryDetailOption->Name), $translations['CATEGORY_BRAND_META_DESCRIPTION'])).(SITE_COUNTRY == 8 ? '' : Utilities::GetTrustpilotMetaDescription()); else $pageDesc = htmlspecialchars(str_replace(array('{0}', '{1}', '{2}'), array($primaryCategory->Name, $primaryDetailOption->Name, SITE_NAME), $translations['Buy cheap {0} by {1} online from {2}.'])).' '.$translations['The home of discount fragrance & beauty products']; } elseif($primaryCategory) { if(strlen($primaryCategory->PageTitle) > 10) $pageTitle = $primaryCategory->PageTitle; else { if($detailOptionIDs) { $detailIDsArrKeys = array_keys($detailOptionIDs); $firstDetailID = $detailIDsArrKeys[0]; $firstdetail = SkuDetailOptionSiteCountry::Search("SiteCountryID = ".SITE_COUNTRY." AND OptionID = '".RealEscapeString($firstDetailID)."'", false, array('Name'), NULL, NULL, NULL, NULL, false, $useSlave); if($firstdetail) { $firstdetail = $firstdetail[0]; $pageTitle = htmlspecialchars($primaryCategory->Name.' - '.$firstdetail->Name.' - '.$translations['Buy Cheap']); } else { $pageTitle = htmlspecialchars($primaryCategory->Name.' - '.str_replace('{0}', $primaryCategory->Name, $translations['Discount Branded {0}']).' - '.$translations['Buy Cheap']); } } elseif($primaryCategory->MetaDescriptionDynamicText1 && isset($translations['CATEGORY_PAGE_TITLE']) && $translations['CATEGORY_PAGE_TITLE']) $pageTitle = htmlspecialchars(str_replace(array('{0}', '{1}'), array($primaryCategory->MetaDescriptionDynamicText1, $translations['Perfume Click']), $translations['CATEGORY_PAGE_TITLE'])); else $pageTitle = htmlspecialchars($primaryCategory->Name.' - '.str_replace('{0}', $primaryCategory->Name, $translations['Discount Branded {0}']).' - '.$translations['Buy Cheap']); } if(strlen($primaryCategory->MetaDescription) > 10) $pageDesc = $primaryCategory->MetaDescription; elseif($primaryCategory->MetaDescriptionDynamicText2 && $primaryCategory->MetaDescriptionDynamicText3 && isset($translations['CATEGORY_META_DESCRIPTION']) && $translations['CATEGORY_META_DESCRIPTION']) $pageDesc = htmlspecialchars(str_replace(array('{0}', '{1}', '{2}'), array($translations['Perfume Click'], $primaryCategory->MetaDescriptionDynamicText2, $primaryCategory->MetaDescriptionDynamicText3), $translations['CATEGORY_META_DESCRIPTION'])).(SITE_COUNTRY == 8 ? '' : Utilities::GetTrustpilotMetaDescription()); else $pageDesc = htmlspecialchars(str_replace(array('{0}', '{1}'), array($primaryCategory->Name, $translations['Perfume Click']), $translations['Buy cheap {0} online from {1}.'])).' '.$translations['The home of discount fragrance & beauty products']; } elseif($primaryDetailOption) { if($primaryDetailOption->TypeID == 5 && isset($translations['BRAND_DETAILS_PAGE_TITLE']) && $translations['BRAND_DETAILS_PAGE_TITLE']) $pageTitle = htmlspecialchars(str_replace(array('{0}', '{1}'), array($translations['Perfume Click'], $primaryDetailOption->Name), $translations['BRAND_DETAILS_PAGE_TITLE']), ENT_QUOTES); elseif($sex === 'M' && $primaryDetailOption->TypeID == 6 && isset($translations['COLLECTION_PAGE_TITLE_FOR_HIM']) && $translations['COLLECTION_PAGE_TITLE_FOR_HIM']) $pageTitle = htmlspecialchars(str_replace(array('{0}', '{1}', '{2}'), array($translations['Perfume Click'], $primaryDetailOption->Name, $primaryDetailOption->ParentName), $translations['COLLECTION_PAGE_TITLE_FOR_HIM']), ENT_QUOTES); elseif($sex === 'F' && $primaryDetailOption->TypeID == 6 && isset($translations['COLLECTION_PAGE_TITLE_FOR_HER']) && $translations['COLLECTION_PAGE_TITLE_FOR_HER']) $pageTitle = htmlspecialchars(str_replace(array('{0}', '{1}', '{2}'), array($translations['Perfume Click'], $primaryDetailOption->Name, $primaryDetailOption->ParentName), $translations['COLLECTION_PAGE_TITLE_FOR_HER']), ENT_QUOTES); elseif($primaryDetailOption->TypeID == 6 && isset($translations['COLLECTION_PAGE_TITLE']) && $translations['COLLECTION_PAGE_TITLE']) $pageTitle = htmlspecialchars(str_replace(array('{0}', '{1}', '{2}'), array($translations['Perfume Click'], $primaryDetailOption->Name, $primaryDetailOption->ParentName), $translations['COLLECTION_PAGE_TITLE']), ENT_QUOTES); else $pageTitle = htmlspecialchars($primaryDetailOption->Name.' - '.str_replace('{0}', ($primaryDetailOption->ParentName ? $primaryDetailOption->ParentName.' ' : '').$primaryDetailOption->Name, $translations['Cheap {0} products']).' - '.str_replace('{0}', '', $translations['Buy Online'])); if($primaryDetailOption->TypeID == 5 && isset($translations['BRAND_DETAILS_META_DESCRIPTION']) && $translations['BRAND_DETAILS_META_DESCRIPTION']) $pageDesc = htmlspecialchars(str_replace('{0}', $primaryDetailOption->Name, $translations['BRAND_DETAILS_META_DESCRIPTION']), ENT_QUOTES).(SITE_COUNTRY == 8 ? '' : Utilities::GetTrustpilotMetaDescription()); elseif($primaryDetailOption->TypeID == 6 && isset($translations['COLLECTION_META_DESCRIPTION']) && $translations['COLLECTION_META_DESCRIPTION']) $pageDesc = htmlspecialchars(str_replace(array('{0}', '{1}', '{2}'), array($translations['Perfume Click'], $primaryDetailOption->Name, $primaryDetailOption->ParentName), $translations['COLLECTION_META_DESCRIPTION']), ENT_QUOTES).Utilities::GetTrustpilotMetaDescription(); else $pageDesc = htmlspecialchars(str_replace(array('{0}', '{1}'), array($primaryDetailOption->Name, SITE_NAME), $translations['Buy cheap {0} products online from {1}.'])).' '.$translations['The home of discount fragrance & beauty products']; } else { if($query) $pageTitle = $query.' - '.$translations['Discount online fragrance & beauty store']; else $pageTitle = $translations['Discount online fragrance & beauty store'].' - '.SITE_NAME; $pageContent = PageContent::FromPK(array('SiteCountryID' => SITE_COUNTRY, 'PageName' => 'Search'), false, $useSlave); $pageDesc = $pageContent->MetaDesc; } if($pageNum > 1) { $pageTitle = $translations['Page'].' '.$pageNum.' - '.$pageTitle; } $skuIDs = array_column($skus, 'ID'); SkuList::CacheForSkuIDs($skuIDs, SITE_COUNTRY, (isset($_GET['previewSkuListID']) ? ((int)$_GET['previewSkuListID']) : NULL)); if(($isGiftSets || $isSpecialOffers) && $pageNum == 1 && !SiteTypeDetect::ShowMobileSite()) { if($isSpecialOffers) { $topBoxSkus = Sku::AdvancedSearch('', SITE_COUNTRY, 1, NULL, true, false, false, false, 6, 1, $soCount, true, false, INDUSTRY_ID, NULL, $detailOptionIDs, NULL, NULL, NULL, false, true, false, false, (in_array(SITE_COUNTRY, $useOnlyOurStockForSites) ? true : NULL), 'SalesRank DESC, FullName DESC', $minPrice, $maxPrice, NULL, NULL, false, NULL, false, false, true, false, NULL, true, true, true, true, true, true, true, false, (in_array(SITE_COUNTRY, $useOnlyQuickStockForSites) ? true : NULL), true, false, false, NULL, $useSlave); } else { $topBoxSkus = Sku::AdvancedSearch('', SITE_COUNTRY, 1, NULL, true, false, false, false, 6, 1, $giftSetCount, false, false, INDUSTRY_ID, NULL, $detailOptionIDs, NULL, 'Gift Set', true, false, true, false, false, (in_array(SITE_COUNTRY, $useOnlyOurStockForSites) ? true : NULL), 'SalesRank DESC, FullName DESC', $minPrice, $maxPrice, NULL, NULL, false, NULL, false, false, true, false, NULL, true, true, true, true, true, true, true, false, (in_array(SITE_COUNTRY, $useOnlyQuickStockForSites) ? true : NULL), true, false, false, NULL, $useSlave); } foreach($topBoxSkus as $s) $skuIDs[] = $s->ID; } $skuSearchCSS = !SiteTypeDetect::ShowMobileSite(); $loadJQueryUI = !SiteTypeDetect::ShowMobileSite(); $totalNumPages = 0; if($totalNumResults > 0) $totalNumPages = ceil($totalNumResults / $numPerPage); if($pageNum > 1) { $prevPageUrl = CatalogueUI::GenerateSearchPageUrl($primaryCategoryID, $primaryCategoryName, $primaryDetailID, $primaryDetailName, $query, $detailOptionIDs, $categoryIDs, $minPrice, $maxPrice, $sort, $numPerPage, $pageNum - 1, $sortDefault, $numPerPageDefault, NULL, NULL, $isGiftSets, $isSpecialOffers, $skuListPageName); } if($pageNum < $totalNumPages) { $nextPageUrl = CatalogueUI::GenerateSearchPageUrl($primaryCategoryID, $primaryCategoryName, $primaryDetailID, $primaryDetailName, $query, $detailOptionIDs, $categoryIDs, $minPrice, $maxPrice, $sort, $numPerPage, $pageNum + 1, $sortDefault, $numPerPageDefault, NULL, NULL, $isGiftSets, $isSpecialOffers, $skuListPageName); } $skuDetailOptionText = NULL; if($primaryDetailOption && ($primaryDetailOption->TypeID == 5 || $primaryDetailOption->TypeID == 6 || $primaryDetailOption->TypeID == 7) && $pageNum == 1 && !$noIndexPage && !$minPrice && !$maxPrice) { if($primaryDetailOption->TypeID == 5) { if($primaryCategory) //is it also a primary category page? Maybe there is text specific to that category { $detailTypeID = NULL; if($primaryCategory->ID == 22) $detailTypeID = 5; elseif($primaryCategory->ID == 18) $detailTypeID = 4; elseif($primaryCategory->ID == 21) $detailTypeID = 7; elseif($primaryCategory->ID == 19) $detailTypeID = 3; elseif($primaryCategory->ID == 20) $detailTypeID = 6; if($detailTypeID) $skuDetailOptionText = SkuDetailOptionSiteCountryText::FromPK(array('OptionID' => $primaryDetailOption->ID, 'SiteCountryID' => SITE_COUNTRY, 'TextTypeID' => $detailTypeID)); } if(!$skuDetailOptionText && (!$primaryCategory || in_array($primaryCategory->ID, array(18, 19, 20, 21, 22)))) { $skuDetailOptionText = SkuDetailOptionSiteCountryText::FromPK(array('OptionID' => $primaryDetailOption->ID, 'SiteCountryID' => SITE_COUNTRY, 'TextTypeID' => 8)); } } elseif(!$primaryCategory) { $skuDetailOptionText = new StdClass(); $skuDetailOptionText->Text = $primaryDetailOption->Description; } } elseif($primaryCategory && !$primaryDetailOption && $pageNum == 1 && !$noIndexPage && !$minPrice && !$maxPrice && !$detailOptionIDs) { $skuDetailOptionText = new StdClass(); $skuDetailOptionText->Text = $primaryCategory->Description; } //If primary brand or collection page $textToShow = ''; $textToShowWithoutTags = ''; if($skuDetailOptionText && trim($skuDetailOptionText->Text)) { $textToShow = str_replace("\n", '
', htmlspecialchars($skuDetailOptionText->Text)); $textToShowWithoutTags = $skuDetailOptionText->Text; } elseif(isset($skuList) && $skuList && $skuList->TextBody) { $textToShow = $skuList->TextBody; $textToShowWithoutTags = strip_tags($skuList->TextBody); } $mobile_ShowSearch = (!$isGiftSets && !$isSpecialOffers && !$primaryCategory && !$primaryDetailOption) || (isset($query) && trim($query) != ''); $mobile_SearchUrl = ''; if(count($skus) == 0) { //maybe do not do this if there is text content to show at tope of page??? if($textToShow == '' && !$query) { header("HTTP/1.0 404 Not Found"); } if($query && !$primaryCategory && !$primaryDetailOption && !$categoryIDs && !$detailOptionIDs && !$maxPrice && !$minPrice && (!isset($_SERVER['HTTP_USER_AGENT']) || (stripos($_SERVER['HTTP_USER_AGENT'], 'Googlebot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'msnbot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'bingbot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'www.thefind.com') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'twengabot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'MJ12bot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'YandexBot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'Baiduspider') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'TurnitinBot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'BLEXBot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'Jyxobot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'wise-guys') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'Ezooms') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'www.80legs.com') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'AhrefsBot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'NING') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'BingPreview') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'SeznamBot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'AdsBot-Google') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'Alexa') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'BeetleBot') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'SISTRIX Crawler') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'AdsBot-Google') === false))) { //Error_Error::Log(Error_Severity::Information, Error_Category::Frontend, 'No Search Results', 'No search results', ''); SkuSearchLog::Log(SITE_COUNTRY, $query, print_r($_REQUEST, true)); } } require_once('includes/header.php'); if(SiteTypeDetect::ShowMobileSite()) { require_once('ui/mobile/sku-search.php'); } else { require_once('ui/desktop/sku-search.php'); } require_once('includes/footer.php');