UsersElementsFavoritesRepository.php 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace Muzich\CoreBundle\Repository;
  3. use Doctrine\ORM\EntityRepository;
  4. class UsersElementsFavoritesRepository extends EntityRepository
  5. {
  6. /**
  7. * Retourne tous les tags des favoris de l'utilisateur
  8. *
  9. * @return doctrine_collection
  10. */
  11. public function getTags($user_id, $current_user_id)
  12. {
  13. return $this->getEntityManager()
  14. ->createQuery('
  15. SELECT t FROM MuzichCoreBundle:Tag t
  16. LEFT JOIN t.elements e
  17. LEFT JOIN e.elements_favorites f
  18. WHERE f.user = :uid
  19. AND (t.tomoderate = \'FALSE\' OR t.tomoderate IS NULL
  20. OR t.privateids LIKE :uidt)
  21. ORDER BY t.name ASC'
  22. )
  23. ->setParameters(array('uid' => $user_id, 'uidt' => '%"'.$current_user_id.'"%'))
  24. ->getResult()
  25. ;
  26. }
  27. public function countFavoritedForUserElements($user_id, $ids)
  28. {
  29. if (count($ids))
  30. {
  31. if ($user_id)
  32. {
  33. return count($this->getEntityManager()
  34. ->createQuery('SELECT COUNT(f.id) FROM MuzichCoreBundle:UsersElementsFavorites f
  35. WHERE f.user != :uid AND f.element IN (:eids)
  36. GROUP BY f.element')
  37. ->setParameters(array('uid'=> $user_id, 'eids' => $ids))
  38. ->getScalarResult())
  39. ;
  40. }
  41. else
  42. {
  43. return count($this->getEntityManager()
  44. ->createQuery('SELECT COUNT(f.id) FROM MuzichCoreBundle:UsersElementsFavorites f
  45. WHERE f.element IN (:eids)
  46. GROUP BY f.element')
  47. ->setParameter('eids', $ids)
  48. ->getScalarResult())
  49. ;
  50. }
  51. }
  52. return array();
  53. }
  54. public function countFavoritedUsersForUserElements($user_id, $ids)
  55. {
  56. if (count($ids))
  57. {
  58. if ($user_id)
  59. {
  60. return count($this->getEntityManager()
  61. ->createQuery('SELECT COUNT(f.id) FROM MuzichCoreBundle:UsersElementsFavorites f
  62. WHERE f.user != :uid AND f.element IN (:eids)
  63. GROUP BY f.user')
  64. ->setParameters(array('uid'=> $user_id, 'eids' => $ids))
  65. ->getScalarResult())
  66. ;
  67. }
  68. else
  69. {
  70. return count($this->getEntityManager()
  71. ->createQuery('SELECT COUNT(f.id) FROM MuzichCoreBundle:UsersElementsFavorites f
  72. WHERE f.element IN (:eids)
  73. GROUP BY f.user')
  74. ->setParameter('eids', $ids)
  75. ->getScalarResult())
  76. ;
  77. }
  78. }
  79. return null;
  80. }
  81. }