diff --git a/lib/Alchemy/Phrasea/Application/Lightbox.php b/lib/Alchemy/Phrasea/Application/Lightbox.php index caf0a34e6d..fd67182353 100644 --- a/lib/Alchemy/Phrasea/Application/Lightbox.php +++ b/lib/Alchemy/Phrasea/Application/Lightbox.php @@ -232,7 +232,7 @@ return call_user_func( $repository = $em->getRepository('\Entities\Basket'); /* @var $repository \Repositories\BasketRepository */ - $basket_collection = $repository->findActiveByUser( + $basket_collection = $repository->findActiveValidationAndBasketByUser( $app['Core']->getAuthenticatedUser() ); @@ -290,10 +290,10 @@ return call_user_func( $repository = $em->getRepository('\Entities\Basket'); /* @var $repository \Repositories\BasketRepository */ - $basket_collection = $repository->findActiveByUser( + $basket_collection = $repository->findActiveValidationAndBasketByUser( $app['Core']->getAuthenticatedUser() ); - + $basket = $repository->findUserBasket( $ssel_id , $app['Core']->getAuthenticatedUser() diff --git a/lib/Doctrine/Repositories/BasketRepository.php b/lib/Doctrine/Repositories/BasketRepository.php index 0ff9227019..b634c76f23 100644 --- a/lib/Doctrine/Repositories/BasketRepository.php +++ b/lib/Doctrine/Repositories/BasketRepository.php @@ -301,5 +301,37 @@ class BasketRepository extends EntityRepository return array('count' => $count, 'result' => $result); } + + /** + * Return all actives validation where current user is involved and user basket + * @param \User_Adapter $user + * @param type $sort + * @return Array + */ + public function findActiveValidationAndBasketByUser(\User_Adapter $user, $sort = null) + { + $dql = 'SELECT b, e, s, p + FROM Entities\Basket b + LEFT JOIN b.elements e + LEFT JOIN b.validation s + LEFT JOIN s.participants p + WHERE (b.usr_id = :usr_id + AND b.archived = false) OR (b.usr_id != :usr_id AND p.usr_id = :usr_id + AND (s.expires IS NULL OR s.expires > CURRENT_TIMESTAMP()))'; + + if ($sort == 'date') + { + $dql .= ' ORDER BY b.created DESC, e.ord ASC'; + } + elseif ($sort == 'name') + { + $dql .= ' ORDER BY b.name ASC, e.ord ASC'; + } + + $query = $this->_em->createQuery($dql); + $query->setParameters(array('usr_id' => $user->get_id())); + + return $query->getResult(); + } }