<?php
/*
* Copyright(c) 2019 SYSTEM FRIEND INC.
*/
namespace Plugin\CheckProduct42\Service;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
class CookieHelper
{
/**
* @var string
*/
private $cookie_name = 'plugin__check_product42__product';
/**
* @var Request
*/
private $request;
public function __construct(
RequestStack $requestStack
)
{
$this->request = $requestStack->getCurrentRequest();
}
/**
* Cookieを取得
*
* @return \Symfony\Component\HttpFoundation\ParameterBag|null
*/
public function getCookie()
{
if (!$this->request) {
return null;
}
return $this->request->cookies;
}
/**
* Cookieを取得
*
* @return array
*/
public function getProductIds(): array
{
$Cookie = $this->getCookie();
if (empty($Cookie)) {
return [];
}
$stringProductIds = explode(',', $Cookie->get($this->getCookieName()));
$product_ids = [];
foreach ($stringProductIds as $id) {
if (strlen($id) > 0) {
$product_ids[] = intval($id);
}
}
return $product_ids;
}
/**
* Cookieをセット
*
* @param Response $response
* @param Cookie $cookie
* @return Response
*/
public function setCookie(Response $response, Cookie $cookie): Response
{
$response->headers->setCookie($cookie);
return $response;
}
/**
* Cookie削除
*
* @param Response $response
* @param Cookie $cookie
* @return Response
*/
public function remove(Response $response, Cookie $cookie): Response
{
$response->headers->removeCookie($cookie->getName(), $cookie->getPath(), $cookie->getDomain());
return $response;
}
/**
* Cookie名をセット
*
* @param string $cookie_name
* @return $this
*/
public function setCookieName(string $cookie_name): self
{
$this->cookie_name = $cookie_name;
return $this;
}
/**
* Cookie名を取得
*
* @return string
*/
public function getCookieName(): string
{
return $this->cookie_name;
}
}