protected function _loadRandomProduct($skuPattern = null)
{
// Choose only from simple products so that no configuration has to be made
/** @var \Mage_Catalog_Model_Resource_Product_Collection $products */
$products = \Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('type_id', \Mage_Catalog_Model_Product_Type::TYPE_SIMPLE);
$products->setPageSize(1);
$products->getSelect()->order(new \Zend_Db_Expr('RAND()'));
if ($skuPattern) {
$products->getSelect()->where('sku LIKE ?', $skuPattern);
}
// Only find random products that are saleable and in stock
/** @var \Mage_Catalog_Model_Product_Status $productStatus */
$productStatus = \Mage::getModel('catalog/product_status');
$productStatus->addSaleableFilterToCollection($products);
/** @var \Mage_CatalogInventory_Model_Stock $stock */
$stock = \Mage::getModel('cataloginventory/stock');
$stock->addInStockFilterToCollection($products);
if (!$products->getSize()) {
$errorMessage = 'No products are matching the criteria';
if ($skuPattern) {
$errorMessage .= " ({$skuPattern})";
}
throw new \Exception($errorMessage);
}
/** @var \Mage_Catalog_Model_Product $firstResult */
$firstResult = $products->getFirstItem();
$product = \Mage::getModel('catalog/product')->load($firstResult->getId());
return $product;
}