Пример #1
0
 /**
  * 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;
 }