diff --git a/lib/Alchemy/Phrasea/Application/Lightbox.php b/lib/Alchemy/Phrasea/Application/Lightbox.php index 1059a6b682..33abff732c 100644 --- a/lib/Alchemy/Phrasea/Application/Lightbox.php +++ b/lib/Alchemy/Phrasea/Application/Lightbox.php @@ -78,8 +78,9 @@ return call_user_func( $browser = \Browser::getInstance(); if (!$browser->isMobile()) - + { return new Response(''); + } $em = $app['Core']->getEntityManager(); @@ -241,6 +242,21 @@ return call_user_func( , false ); + + if ($basket->getIsRead() === false) + { + $basket = $em->merge($basket); + $basket->setIsRead(true); + $em->flush(); + } + + if ($basket->getValidation() && $basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->getIsAware() === false) + { + $basket = $em->merge($basket); + $basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->setIsAware(true); + $em->flush(); + } + /* @var $twig \Twig_Environment */ $twig = $app['Core']->getTwig(); @@ -284,6 +300,21 @@ return call_user_func( , false ); + + if ($basket->getIsRead() === false) + { + $basket = $em->merge($basket); + $basket->setIsRead(true); + $em->flush(); + } + + if ($basket->getValidation() && $basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->getIsAware() === false) + { + $basket = $em->merge($basket); + $basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->setIsAware(true); + $em->flush(); + } + /* @var $twig \Twig_Environment */ $twig = $app['Core']->getTwig(); @@ -449,16 +480,16 @@ return call_user_func( $repository = $em->getRepository('\Entities\BasketElement'); /* @var $repository \Repositories\BasketElementRepository */ - $basket_element = $repository->findUserElement( + $basket_element = $repository->findUserElement( $sselcont_id , $user ); /* @var $basket_element \Entities\BasketElement */ $validationDatas = $basket_element->getUserValidationDatas($user); - if(!$basket_element->getBasket() - ->getValidation() - ->getParticipant($user)->getCanAgree()) + if (!$basket_element->getBasket() + ->getValidation() + ->getParticipant($user)->getCanAgree()) { throw new ControllerException('You can not agree on this'); } @@ -474,7 +505,7 @@ return call_user_func( $em->flush(); $releasable = false; - if($participant->isReleasable() === true) + if ($participant->isReleasable() === true) { $releasable = _('Do you want to send your report ?'); } @@ -484,13 +515,12 @@ return call_user_func( , 'datas' => '' , 'releasable' => $releasable ); - } - catch(ControllerException $e) + catch (ControllerException $e) { $ret['datas'] = $e->getMessage(); } - $Serializer = $app['Core']['Serializer']; + $Serializer = $app['Core']['Serializer']; return new Response( $Serializer->serialize($ret, 'json') @@ -541,7 +571,7 @@ return call_user_func( $datas = array('error' => false, 'datas' => _('Envoie avec succes')); } - catch(ControllerException $e) + catch (ControllerException $e) { $datas = array('error' => true, 'datas' => $e->getMessage()); } diff --git a/lib/Alchemy/Phrasea/Controller/Prod/Basket.php b/lib/Alchemy/Phrasea/Controller/Prod/Basket.php index c219388b52..b383dcce20 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/Basket.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/Basket.php @@ -486,6 +486,13 @@ class Basket implements ControllerProviderInterface $em->flush(); } + if ($basket->getValidation() && $basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->getIsAware() === false) + { + $basket = $em->merge($basket); + $basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->setIsAware(true); + $em->flush(); + } + /* @var $twig \Twig_Environment */ $twig = $app['Core']->getTwig(); diff --git a/lib/Alchemy/Phrasea/Controller/Prod/Push.php b/lib/Alchemy/Phrasea/Controller/Prod/Push.php index 5567c22d9c..0d0f7e94b1 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/Push.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/Push.php @@ -221,6 +221,7 @@ class Push implements ControllerProviderInterface $Basket->setDescription($push_description); $Basket->setOwner($user_receiver); $Basket->setPusher($user); + $Basket->setIsRead(false); $em->persist($Basket); @@ -350,6 +351,7 @@ class Push implements ControllerProviderInterface $Basket->setName($validation_name); $Basket->setDescription($validation_description); $Basket->setOwner($user); + $Basket->setIsRead(false); $em->persist($Basket); diff --git a/lib/Doctrine/Repositories/BasketRepository.php b/lib/Doctrine/Repositories/BasketRepository.php index a0b0413f1f..6c0dd44b71 100644 --- a/lib/Doctrine/Repositories/BasketRepository.php +++ b/lib/Doctrine/Repositories/BasketRepository.php @@ -76,11 +76,21 @@ class BasketRepository extends EntityRepository JOIN b.elements e LEFT JOIN b.validation s LEFT JOIN s.participants p - WHERE b.usr_id = :usr_id - AND b.archived = false AND b.is_read = false'; + WHERE b.archived = false + AND ( + (b.usr_id = :usr_id_owner AND b.is_read = false) + OR (b.usr_id != :usr_id_ownertwo AND p.usr_id = :usr_id_participant + AND p.is_aware = false) + )'; + + $params = array( + 'usr_id_owner' => $user->get_id(), + 'usr_id_ownertwo' => $user->get_id(), + 'usr_id_participant' => $user->get_id() + ); $query = $this->_em->createQuery($dql); - $query->setParameters(array('usr_id' => $user->get_id())); + $query->setParameters($params); $idCache = "findUnreadActiveByUser" . $user->get_id() . Entities\Basket::CACHE_SUFFIX; diff --git a/templates/web/prod/WorkZone/Macros.twig b/templates/web/prod/WorkZone/Macros.twig index f5d626045d..38e88e0fa1 100644 --- a/templates/web/prod/WorkZone/Macros.twig +++ b/templates/web/prod/WorkZone/Macros.twig @@ -19,15 +19,8 @@