/**
  * 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;
 }