/** * All products of this group * * @param int $numberOfProducts The number of products to return * @param string $addFilter Optional filter to add * * @return DataList all products of this group or FALSE * * @author Roland Lehmann <*****@*****.**>, * Sebastian Diel <*****@*****.**> * @since 12.10.2013 */ public function getRandomProducts($numberOfProducts, $addFilter = null) { $listFilters = array(); $filter = ''; // ---------------------------------------------------------------- // Get products that have this group set as mirror group // ---------------------------------------------------------------- $mirroredProductIdList = ''; $mirroredProductIDs = $this->getMirroredProductIDs(); foreach ($mirroredProductIDs as $mirroredProductID) { $mirroredProductIdList .= sprintf("'%s',", $mirroredProductID); } if (!empty($mirroredProductIdList)) { $mirroredProductIdList = substr($mirroredProductIdList, 0, -1); } // ---------------------------------------------------------------- // Get products that have this group set as main group // ---------------------------------------------------------------- if ($this->isFilteredByManufacturer()) { $manufacturer = SilvercartManufacturer::getByUrlSegment($this->urlParams['ID']); if ($manufacturer) { $this->addListFilter('SilvercartManufacturerID', $manufacturer->ID); } } if (empty($mirroredProductIdList)) { $listFilters['original'] = sprintf("SilvercartProductGroupID = '%s'", $this->ID); } else { $listFilters['original'] = sprintf("(SilvercartProductGroupID = '%s' OR\n \"SilvercartProduct\".\"ID\" IN (%s))", $this->ID, $mirroredProductIdList); } foreach ($listFilters as $listFilterIdentifier => $listFilter) { $filter .= ' ' . $listFilter; } if (!is_null($addFilter)) { $filter .= ' AND ' . $addFilter; } $sort = 'RAND()'; $products = SilvercartProduct::getProducts($filter, $sort, null, $numberOfProducts); return $products; }