<?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; }}