src/Repository/ArticleRepository.php line 91

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Article;
  4. use App\Entity\WebsiteLanguage;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use App\Repository\WebsiteLanguageRepository;
  7. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  8. /**
  9.  * @method Article|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method Article|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method Article[]    findAll()
  12.  * @method Article[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class ArticleRepository extends ServiceEntityRepository
  15. {
  16.     public function __construct(ManagerRegistry $registry)
  17.     {
  18.         parent::__construct($registryArticle::class);
  19.     }
  20.     public function getArticles($published)
  21.     {
  22.         return $this->createQueryBuilder('a')
  23.             ->where('a.published = :published')
  24.             ->setParameter('published'$published)
  25.             ->getQuery();
  26.     }
  27.     public function getArticlesByLanguage($locale)
  28.     {
  29.         return $this->createQueryBuilder('a')
  30.             ->join('a.websiteLanguage''w')
  31.             ->andWhere('w.slug = :locale')
  32.             ->setParameter('locale'$locale)
  33.             ->orderBy('a.featuredAt' 'DESC')
  34.             ->getQuery()
  35.             ->getResult();
  36.     }
  37.     public function getArticleOriginal($published$original true)
  38.     {
  39.         return $this->createQueryBuilder('a')
  40.             ->where('a.published = :published')
  41.             ->setParameter('published'$published)
  42.             ->andWhere('a.original = :original')
  43.             ->setParameter('original'$original)
  44.             ->orderBy('a.id''DESC')
  45.             ->getQuery()
  46.             ->getResult();
  47.     }
  48.     public function getArticleTranslate($unit)
  49.     {
  50.         return $this->createQueryBuilder('a')
  51.             ->where('a.unit = :unit')
  52.             ->setParameter('unit'$unit)
  53.             ->getQuery()
  54.             ->getResult();
  55.     }
  56.     public function getMyArticles($published$user)
  57.     {
  58.         return $this->createQueryBuilder('a')
  59.             ->where('a.published = :published')
  60.             ->setParameter('published'$published)
  61.             ->andWhere('a.author = :author')
  62.             ->setParameter('author'$user)
  63.             ->andWhere('a.original = :true')
  64.             ->setParameter('true'true)
  65.             ->orWhere('a.reviewer = :reviewer')
  66.             ->setParameter('reviewer'$user)
  67.             ->getQuery()
  68.             ->getResult();
  69.     }
  70.     public function getFourFeaturedArticles($locale)
  71.     {
  72.         return $this->createQueryBuilder('a')
  73.             ->where('a.published = :published')
  74.             ->setParameter('published'true)
  75.             ->andWhere('a.featured = true')
  76.             ->join('a.websiteLanguage''w')
  77.             ->andWhere('w.slug = :locale')
  78.             ->setParameter('locale'$locale)
  79.             ->orderBy('a.featuredAt' 'DESC')
  80.             ->setMaxResults(4)
  81.             ->getQuery()
  82.             ->getResult();
  83.     }
  84.     public function getLatestArticles($locale$limit)
  85.     {
  86.         return $this->createQueryBuilder('a')
  87.             ->where('a.published = :published')
  88.             ->setParameter('published'true)
  89.             ->join('a.websiteLanguage''w')
  90.             ->andWhere('w.slug = :locale')
  91.             ->setParameter('locale'$locale)
  92.             ->orderBy('a.createdDate' 'DESC')
  93.             ->setMaxResults($limit)
  94.             ->getQuery()
  95.             ->getResult();
  96.     }
  97.     public function getNumberOfCategorizedArticles($locale$category$number 4,  $slug '')
  98.     {
  99.         $query $this->createQueryBuilder('a');
  100.         if ($category || count($category) > 0) {
  101.             $query->orWhere(':category MEMBER OF a.categories')
  102.                   ->setParameter('category'$category);
  103.         }
  104.         return $query
  105.                     ->join('a.websiteLanguage''w')
  106.                     ->andWhere('w.slug = :locale')
  107.                     ->setParameter('locale'$locale)
  108.                     ->andWhere('a.slug NOT LIKE :slug')
  109.                     ->setParameter('slug'$slug)
  110.                     ->andWhere('a.published = :published')
  111.                     ->setParameter('published'true)
  112.                     ->orderBy('a.createdDate' 'DESC')
  113.                     ->setMaxResults($number)
  114.                     ->getQuery()->getResult();
  115.     }
  116.     public function getLatestNews($locale)
  117.     {
  118.         return $this->createQueryBuilder('a')
  119.             ->where('a.published = :published')
  120.             ->setParameter('published'true)
  121.             ->join('a.websiteLanguage''w')
  122.             ->andWhere('w.slug = :locale')
  123.             ->setParameter('locale'$locale)
  124.             ->orderBy('a.createdDate' 'DESC')
  125.             ->getQuery();
  126.     }
  127.     public function getTopDeals($locale$category)
  128.     {
  129.         return $this->createQueryBuilder('a')
  130.             ->where('a.published = :published')
  131.             ->setParameter('published'true)
  132.             ->andWhere(':category MEMBER OF a.categories')
  133.             ->setParameter('category'$category)
  134.             ->join('a.websiteLanguage''w')
  135.             ->andWhere('w.slug = :locale')
  136.             ->setParameter('locale'$locale)
  137.             ->orderBy('a.createdDate' 'DESC')
  138.             ->getQuery();
  139.     }
  140.     public function getSearchedArticles($locale$search)
  141.     {
  142.         return $this->createQueryBuilder('a')
  143.             ->where('a.published = :published')
  144.             ->setParameter('published'true)
  145.             ->andWhere('a.title LIKE :search')
  146.             ->setParameter('search''%' $search->getTitle() . '%')
  147.             ->join('a.websiteLanguage''w')
  148.             ->andWhere('w.slug = :locale')
  149.             ->setParameter('locale'$locale)
  150.             ->orderBy('a.createdDate' 'DESC')
  151.             ->getQuery();
  152.     }
  153.     public function findCategoryArticles($locale$category)
  154.     {
  155.         return $this->createQueryBuilder('a')
  156.             ->where('a.published = :published')
  157.             ->setParameter('published'true)
  158.             ->join('a.websiteLanguage''w')
  159.             ->andWhere('w.slug = :locale')
  160.             ->setParameter('locale'$locale)
  161.             ->andWhere(':category MEMBER OF a.categories')
  162.             ->setParameter('category'$category)
  163.             ->orderBy('a.createdDate' 'DESC')
  164.             ->getQuery();
  165.     }
  166.     public function getSearchedCategoryArticles($locale$search$category)
  167.     {
  168.         return $this->createQueryBuilder('a')
  169.             ->where('a.published = :published')
  170.             ->setParameter('published'true)
  171.             ->andWhere('a.title LIKE :search')
  172.             ->setParameter('search''%' $search->getTitle() . '%')
  173.             ->join('a.websiteLanguage''w')
  174.             ->andWhere('w.slug = :locale')
  175.             ->setParameter('locale'$locale)
  176.             ->andWhere(':category MEMBER OF a.categories')
  177.             ->setParameter('category'$category)
  178.             ->orderBy('a.createdDate' 'DESC')
  179.             ->getQuery();
  180.     }
  181.     public function getReviewCount()
  182.     {
  183.         return $this->createQueryBuilder('a')
  184.                     ->where('a.status = :review')
  185.                     ->setParameter('review''review')
  186.                     ->select('count(a.id)')
  187.                     ->getQuery()
  188.                     ->getSingleScalarResult();
  189.     }
  190.     public function getArticleToTranslate()
  191.     {
  192.         return $this->createQueryBuilder('a')
  193.             ->where('a.status = :translate')
  194.             ->setParameter('translate''translate')
  195.             ->orderBy('a.id''DESC')
  196.             ->getQuery()
  197.             ->getResult();
  198.     }
  199.     public function getLocaleArticleByUnit($unit$locale) {
  200.         return $this->createQueryBuilder('a')
  201.             ->where('a.unit = :unit')
  202.             ->setParameter('unit'$unit)
  203.             ->join('a.websiteLanguage''w')
  204.             ->andWhere('w.slug = :locale')
  205.             ->setParameter('locale'$locale)
  206.             ->getQuery()
  207.             ->getOneOrNullResult();
  208.     }
  209. }