|
|
@@ -13,116 +13,115 @@ use Symfony\Component\Security\Core\Security; |
|
|
|
|
|
|
|
class UserUtils |
|
|
|
{ |
|
|
|
protected $parameterBag; |
|
|
|
protected $em; |
|
|
|
protected $utils; |
|
|
|
protected $requestStack; |
|
|
|
protected $visitorRepository; |
|
|
|
protected $merchantUtils; |
|
|
|
protected $cookieChecker; |
|
|
|
protected $visitor; |
|
|
|
|
|
|
|
public function __construct(ParameterBagInterface $parameterBag, EntityManagerInterface $em, Utils $utils, |
|
|
|
RequestStack $requestStack, MerchantUtilsInterface $merchantUtils, CookieChecker $cookieChecker, |
|
|
|
Security $security) |
|
|
|
{ |
|
|
|
$this->em = $em; |
|
|
|
$this->parameterBag = $parameterBag; |
|
|
|
$this->utils = $utils; |
|
|
|
$this->requestStack = $requestStack; |
|
|
|
$this->visitorRepository = $this->em->getRepository($this->em->getClassMetadata(VisitorInterface::class)->getName()); |
|
|
|
$this->merchantUtils = $merchantUtils; |
|
|
|
$this->cookieChecker = $cookieChecker; |
|
|
|
$this->security = $security; |
|
|
|
} |
|
|
|
|
|
|
|
public function getCookieNameVisitor() |
|
|
|
{ |
|
|
|
return $this->parameterBag->get('app.cookie_name_visitor'); |
|
|
|
} |
|
|
|
|
|
|
|
public function cryptCookie($data) |
|
|
|
{ |
|
|
|
return base64_encode($data); |
|
|
|
} |
|
|
|
|
|
|
|
public function decryptCookie($data) |
|
|
|
{ |
|
|
|
return base64_decode($data); |
|
|
|
} |
|
|
|
|
|
|
|
public function setCookieVisitor($response, $cookie) |
|
|
|
{ |
|
|
|
$response->headers->setCookie(Cookie::create($this->getCookieNameVisitor(), $this->cryptCookie($cookie), new \DateTime('+2 months'), '/', $this->utils->getCookieDomain())); |
|
|
|
} |
|
|
|
|
|
|
|
public function updateVisitorCookie($response) |
|
|
|
{ |
|
|
|
$response->headers->setCookie(Cookie::create($this->getCookieNameVisitor(), $this->cryptCookie($this->getVisitorCurrent()->getCookie()), new \DateTime('+2 months'), '/', $this->utils->getCookieDomain())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public function getVisitor($cookie) |
|
|
|
{ |
|
|
|
if (!isset($this->visitor[$cookie])) { |
|
|
|
$this->visitor[$cookie] = $this->visitorRepository->findOneBy(['cookie' => $cookie]); |
|
|
|
protected $parameterBag; |
|
|
|
protected $em; |
|
|
|
protected $utils; |
|
|
|
protected $requestStack; |
|
|
|
protected $visitorRepository; |
|
|
|
protected $merchantUtils; |
|
|
|
protected $cookieChecker; |
|
|
|
protected $visitor; |
|
|
|
|
|
|
|
public function __construct(ParameterBagInterface $parameterBag, EntityManagerInterface $em, Utils $utils, |
|
|
|
RequestStack $requestStack, MerchantUtilsInterface $merchantUtils, CookieChecker $cookieChecker, |
|
|
|
Security $security) |
|
|
|
{ |
|
|
|
$this->em = $em; |
|
|
|
$this->parameterBag = $parameterBag; |
|
|
|
$this->utils = $utils; |
|
|
|
$this->requestStack = $requestStack; |
|
|
|
$this->visitorRepository = $this->em->getRepository($this->em->getClassMetadata(VisitorInterface::class)->getName()); |
|
|
|
$this->merchantUtils = $merchantUtils; |
|
|
|
$this->cookieChecker = $cookieChecker; |
|
|
|
$this->security = $security; |
|
|
|
} |
|
|
|
return $this->visitor[$cookie]; |
|
|
|
} |
|
|
|
|
|
|
|
public function getVisitorCurrent() |
|
|
|
{ |
|
|
|
$cookie = $this->requestStack->getCurrentRequest()->cookies->get($this->getCookieNameVisitor()); |
|
|
|
return $this->getVisitor($cookie); |
|
|
|
} |
|
|
|
|
|
|
|
public function addVisitor($cookie, $ip) |
|
|
|
{ |
|
|
|
$classVisitor = $this->em->getClassMetadata(VisitorInterface::class)->getName(); |
|
|
|
$visitor = new $classVisitor; |
|
|
|
|
|
|
|
$visitor->setCookie($cookie); |
|
|
|
$visitor->setIp($ip); |
|
|
|
$visitor->setTotalVisit(1); |
|
|
|
$visitor->setLastAccess(new \DateTime()); |
|
|
|
|
|
|
|
$this->em->persist($visitor); |
|
|
|
$this->em->flush(); |
|
|
|
} |
|
|
|
|
|
|
|
public function updateVisitor($visitor) |
|
|
|
{ |
|
|
|
$totalVisit = $visitor->getTotalVisit() + 1; |
|
|
|
$visitor->setTotalVisit($totalVisit); |
|
|
|
$visitor->setLastAccess(new \DateTime()); |
|
|
|
|
|
|
|
$this->em->persist($visitor); |
|
|
|
$this->em->flush(); |
|
|
|
} |
|
|
|
|
|
|
|
public function setNewsletter($user, $newsletter, $subscribeNewsletter) |
|
|
|
{ |
|
|
|
$currentMerchant = $this->merchantUtils->getMerchantCurrent() ; |
|
|
|
$newsletters = $currentMerchant->getNewsletters() ; |
|
|
|
|
|
|
|
foreach($newsletters as $newsletterMerchant) { |
|
|
|
if($newsletterMerchant->getId() == $newsletter->getId()) { |
|
|
|
if($subscribeNewsletter) { |
|
|
|
$user->addNewsletter($newsletter) ; |
|
|
|
} |
|
|
|
else { |
|
|
|
$user->removeNewsletter($newsletter) ; |
|
|
|
} |
|
|
|
|
|
|
|
public function getCookieNameVisitor() |
|
|
|
{ |
|
|
|
return $this->parameterBag->get('app.cookie_name_visitor'); |
|
|
|
} |
|
|
|
|
|
|
|
public function cryptCookie($data) |
|
|
|
{ |
|
|
|
return base64_encode($data); |
|
|
|
} |
|
|
|
|
|
|
|
public function decryptCookie($data) |
|
|
|
{ |
|
|
|
return base64_decode($data); |
|
|
|
} |
|
|
|
|
|
|
|
public function setCookieVisitor($response, $cookie) |
|
|
|
{ |
|
|
|
$response->headers->setCookie(Cookie::create($this->getCookieNameVisitor(), $this->cryptCookie($cookie), new \DateTime('+2 months'), '/', $this->utils->getCookieDomain())); |
|
|
|
} |
|
|
|
|
|
|
|
public function updateVisitorCookie($response) |
|
|
|
{ |
|
|
|
$response->headers->setCookie(Cookie::create($this->getCookieNameVisitor(), $this->cryptCookie($this->getVisitorCurrent()->getCookie()), new \DateTime('+2 months'), '/', $this->utils->getCookieDomain())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public function getVisitor($cookie) |
|
|
|
{ |
|
|
|
if (!isset($this->visitor[$cookie])) { |
|
|
|
$this->visitor[$cookie] = $this->visitorRepository->findOneBy(['cookie' => $cookie]); |
|
|
|
} |
|
|
|
return $this->visitor[$cookie]; |
|
|
|
} |
|
|
|
|
|
|
|
public function getVisitorCurrent() |
|
|
|
{ |
|
|
|
$cookie = $this->requestStack->getCurrentRequest()->cookies->get($this->getCookieNameVisitor()); |
|
|
|
return $this->getVisitor($cookie); |
|
|
|
} |
|
|
|
|
|
|
|
public function addVisitor($cookie, $ip) |
|
|
|
{ |
|
|
|
$classVisitor = $this->em->getClassMetadata(VisitorInterface::class)->getName(); |
|
|
|
$visitor = new $classVisitor; |
|
|
|
|
|
|
|
$visitor->setCookie($cookie); |
|
|
|
$visitor->setIp($ip); |
|
|
|
$visitor->setTotalVisit(1); |
|
|
|
$visitor->setLastAccess(new \DateTime()); |
|
|
|
|
|
|
|
$this->em->persist($visitor); |
|
|
|
$this->em->flush(); |
|
|
|
} |
|
|
|
|
|
|
|
public function updateVisitor($visitor) |
|
|
|
{ |
|
|
|
$totalVisit = $visitor->getTotalVisit() + 1; |
|
|
|
$visitor->setTotalVisit($totalVisit); |
|
|
|
$visitor->setLastAccess(new \DateTime()); |
|
|
|
|
|
|
|
$this->em->persist($visitor); |
|
|
|
$this->em->flush(); |
|
|
|
} |
|
|
|
|
|
|
|
public function setNewsletter($user, $newsletter, $subscribeNewsletter) |
|
|
|
{ |
|
|
|
$currentMerchant = $this->merchantUtils->getMerchantCurrent(); |
|
|
|
$newsletters = $currentMerchant->getNewsletters(); |
|
|
|
|
|
|
|
foreach ($newsletters as $newsletterMerchant) { |
|
|
|
if ($newsletterMerchant->getId() == $newsletter->getId()) { |
|
|
|
if ($subscribeNewsletter) { |
|
|
|
$user->addNewsletter($newsletter); |
|
|
|
} else { |
|
|
|
$user->removeNewsletter($newsletter); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
$this->em->persist($user) ; |
|
|
|
$this->em->flush() ; |
|
|
|
} |
|
|
|
$this->em->persist($user); |
|
|
|
$this->em->flush(); |
|
|
|
} |
|
|
|
|
|
|
|
public function isSubscribedToNewsletter($user, $newsletter) |
|
|
|
{ |
|
|
|
return $user->getNewsletters()->contains($newsletter); |
|
|
|
} |
|
|
|
public function isSubscribedToNewsletter($user, $newsletter) |
|
|
|
{ |
|
|
|
return $user->getNewsletters()->contains($newsletter); |
|
|
|
} |
|
|
|
|
|
|
|
} |