/** * Retourne x produits au hasard * * @param integer $start Début des données * @param integer $limit Nombre maximum d'enregistrements à renvoyer * @param integer $category Identifiant de la catégorie (évenutellement) * @param string $sort Zone sur laquelle faire le tri * @param string $order Ordre de tri * @param boolean $thisMonthOnly Uniquement les produits du mois en cours ? * @return array Tableau de produits (sous la forme d'objets) */ public function getRandomProducts(oledrion_parameters $parameters) { $parameters = $parameters->extend(new oledrion_parameters(array('start' => 0, 'limit' => 0, 'category' => 0, 'sort' => 'RAND()', 'order' => 'ASC', 'thisMonthOnly' => false))); $data = array(); $criteria = new CriteriaCompo(); $criteria->add(new Criteria('product_online', 1, '=')); if (oledrion_utils::getModuleOption('show_unpublished') == 0) { // Ne pas afficher les produits qui ne sont pas publiés $criteria->add(new Criteria('product_submitted', time(), '<=')); } if (oledrion_utils::getModuleOption('nostock_display') == 0) { // Se limiter aux seuls produits encore en stock $criteria->add(new Criteria('product_stock', 0, '>')); } if (is_array($parameters['category'])) { $criteria->add(new Criteria('product_cid', '(' . implode(',', $parameters['category']) . ')', 'IN')); } elseif ($parameters['category'] != 0) { $criteria->add(new Criteria('product_cid', intval($parameters['category']), '=')); } if ($parameters['thisMonthOnly']) { $criteria->add(oledrion_utils::getThisMonthCriteria()); } $criteria->setLimit($parameters['limit']); $criteria->setStart($parameters['start']); $criteria->setSort($parameters['sort']); $criteria->setOrder($parameters['order']); $data = $this->getObjects($criteria, true); return $data; }