Code Duplication    Length = 32-37 lines in 4 locations

class/oledrion_products.php 4 locations

@@ 634-665 (lines=32) @@
631
     * @internal param int $limit Nombre maximum d'enregistrements à renvoyer
632
     * @internal param int $category Identifiant de la catégorie (évenutellement)
633
     */
634
    public function getRecentRecommended(Oledrion_parameters $parameters)
635
    {
636
        $parameters = $parameters->extend(new Oledrion_parameters(array(
637
                                                                      'start'    => 0,
638
                                                                      'limit'    => 0,
639
                                                                      'category' => 0,
640
                                                                      'sort'     => 'product_recommended',
641
                                                                      'order'    => 'DESC'
642
                                                                  )));
643
        $data       = array();
644
        $criteria   = new CriteriaCompo();
645
        $criteria->add(new Criteria('product_online', 1, '='));
646
        $criteria->add(new Criteria('product_recommended', '0000-00-00', '<>'));
647
        if (Oledrion_utils::getModuleOption('show_unpublished') == 0) { // Ne pas afficher les produits qui ne sont pas publiés
648
            $criteria->add(new Criteria('product_submitted', time(), '<='));
649
        }
650
        if (Oledrion_utils::getModuleOption('nostock_display') == 0) { // Se limiter aux seuls produits encore en stock
651
            $criteria->add(new Criteria('product_stock', 0, '>'));
652
        }
653
        if (is_array($parameters['category'])) {
654
            $criteria->add(new Criteria('product_cid', '(' . implode(',', $parameters['category']) . ')', 'IN'));
655
        } elseif ($parameters['category'] != 0) {
656
            $criteria->add(new Criteria('product_cid', (int)$parameters['category'], '='));
657
        }
658
        $criteria->setLimit($parameters['limit']);
659
        $criteria->setStart($parameters['start']);
660
        $criteria->setSort($parameters['sort']);
661
        $criteria->setOrder($parameters['order']);
662
        $data = $this->getObjects($criteria, true);
663
664
        return $data;
665
    }
666
667
    /**
668
     * Retourne le nombre total de produits recommandés
@@ 784-815 (lines=32) @@
781
     * @internal param int $start Position de départ
782
     * @internal param int $limit Nombre d'enregistrements à retourner
783
     */
784
    public function getProductsForNewsletter(Oledrion_parameters $parameters)
785
    {
786
        $parameters = $parameters->extend(new Oledrion_parameters(array(
787
                                                                      'startingDate' => 0,
788
                                                                      'endingDate'   => 0,
789
                                                                      'category'     => 0,
790
                                                                      'start'        => 0,
791
                                                                      'limit'        => 0
792
                                                                  )));
793
        $data       = array();
794
        $criteria   = new CriteriaCompo();
795
        $criteria->add(new Criteria('product_online', 1, '='));
796
        $criteria->add(new Criteria('product_submitted', $parameters['startingDate'], '>='));
797
        $criteria->add(new Criteria('product_submitted', $parameters['endingDate'], '<='));
798
        if (Oledrion_utils::getModuleOption('show_unpublished') == 0) { // Ne pas afficher les produits qui ne sont pas publiés
799
            $criteria->add(new Criteria('product_submitted', time(), '<='));
800
        }
801
        if (Oledrion_utils::getModuleOption('nostock_display') == 0) { // Se limiter aux seuls produits encore en stock
802
            $criteria->add(new Criteria('product_stock', 0, '>'));
803
        }
804
        if (is_array($parameters['category'])) {
805
            $criteria->add(new Criteria('product_cid', '(' . implode(',', $parameters['category']) . ')', 'IN'));
806
        } elseif ($parameters['category'] > 0) {
807
            $criteria->add(new Criteria('product_cid', (int)$parameters['category'], '='));
808
        }
809
        $criteria->setLimit($parameters['limit']);
810
        $criteria->setStart($parameters['start']);
811
        $criteria->setSort('product_title');
812
        $data = $this->getObjects($criteria, true);
813
814
        return $data;
815
    }
816
817
    /**
818
     * Retourne le nombre total de produits publiés dans la base en tenant compte des préférences du module
@@ 927-963 (lines=37) @@
924
     * @internal param string $order Ordre de tri
925
     * @internal param bool $thisMonthOnly Uniquement les produits du mois en cours ?
926
     */
927
    public function getRandomProducts(Oledrion_parameters $parameters)
928
    {
929
        $parameters = $parameters->extend(new Oledrion_parameters(array(
930
                                                                      'start'         => 0,
931
                                                                      'limit'         => 0,
932
                                                                      'category'      => 0,
933
                                                                      'sort'          => 'RAND()',
934
                                                                      'order'         => 'ASC',
935
                                                                      'thisMonthOnly' => false
936
                                                                  )));
937
        $data       = array();
938
        $criteria   = new CriteriaCompo();
939
        $criteria->add(new Criteria('product_online', 1, '='));
940
        if (Oledrion_utils::getModuleOption('show_unpublished') == 0) { // Ne pas afficher les produits qui ne sont pas publiés
941
            $criteria->add(new Criteria('product_submitted', time(), '<='));
942
        }
943
        if (Oledrion_utils::getModuleOption('nostock_display') == 0) { // Se limiter aux seuls produits encore en stock
944
            $criteria->add(new Criteria('product_stock', 0, '>'));
945
        }
946
        if (is_array($parameters['category'])) {
947
            $criteria->add(new Criteria('product_cid', '(' . implode(',', $parameters['category']) . ')', 'IN'));
948
        } elseif ($parameters['category'] != 0) {
949
            $criteria->add(new Criteria('product_cid', (int)$parameters['category'], '='));
950
        }
951
952
        if ($parameters['thisMonthOnly']) {
953
            $criteria->add(Oledrion_utils::getThisMonthCriteria());
954
        }
955
956
        $criteria->setLimit($parameters['limit']);
957
        $criteria->setStart($parameters['start']);
958
        $criteria->setSort($parameters['sort']);
959
        $criteria->setOrder($parameters['order']);
960
        $data = $this->getObjects($criteria, true);
961
962
        return $data;
963
    }
964
965
    /**
966
     * Retourne x produits en promo
@@ 974-1005 (lines=32) @@
971
     * @internal param int $limit Nombre maximum d'enregistrements à renvoyer
972
     * @internal param int $category Identifiant de la catégorie (évenutellement)
973
     */
974
    public function getPromotionalProducts(Oledrion_parameters $parameters)
975
    {
976
        $parameters = $parameters->extend(new Oledrion_parameters(array(
977
                                                                      'start'    => 0,
978
                                                                      'limit'    => 0,
979
                                                                      'category' => 0,
980
                                                                      'sort'     => 'product_title',
981
                                                                      'order'    => 'DESC'
982
                                                                  )));
983
        $data       = array();
984
        $criteria   = new CriteriaCompo();
985
        $criteria->add(new Criteria('product_online', 1, '='));
986
        if (Oledrion_utils::getModuleOption('show_unpublished') == 0) { // Ne pas afficher les produits qui ne sont pas publiés
987
            $criteria->add(new Criteria('product_submitted', time(), '<='));
988
        }
989
        if (Oledrion_utils::getModuleOption('nostock_display') == 0) { // Se limiter aux seuls produits encore en stock
990
            $criteria->add(new Criteria('product_stock', 0, '>'));
991
        }
992
        if (is_array($parameters['category'])) {
993
            $criteria->add(new Criteria('product_cid', '(' . implode(',', $parameters['category']) . ')', 'IN'));
994
        } elseif ($parameters['category'] != 0) {
995
            $criteria->add(new Criteria('product_cid', (int)$parameters['category'], '='));
996
        }
997
        $criteria->add(new Criteria('product_discount_price', 0, '>'));
998
        $criteria->setLimit($parameters['limit']);
999
        $criteria->setStart($parameters['start']);
1000
        $criteria->setSort($parameters['sort']);
1001
        $criteria->setOrder($parameters['order']);
1002
        $data = $this->getObjects($criteria, true);
1003
1004
        return $data;
1005
    }
1006
1007
    /**
1008
     * Retourne les produits dont les stocks sont bas