1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/* |
4
|
|
|
* This file is part of the FOSHttpCacheBundle package. |
5
|
|
|
* |
6
|
|
|
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/> |
7
|
|
|
* |
8
|
|
|
* For the full copyright and license information, please view the LICENSE |
9
|
|
|
* file that was distributed with this source code. |
10
|
|
|
*/ |
11
|
|
|
|
12
|
|
|
namespace FOS\HttpCacheBundle; |
13
|
|
|
|
14
|
|
|
use FOS\HttpCache\CacheInvalidator; |
15
|
|
|
use FOS\HttpCache\ProxyClient\ProxyClientInterface; |
16
|
|
|
use Symfony\Component\HttpFoundation\Response; |
17
|
|
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface; |
18
|
|
|
|
19
|
|
|
/** |
20
|
|
|
* The CacheManager is a CacheInvalidator but adds symfony Route support and |
21
|
|
|
* response tagging to the framework agnostic FOS\HttpCache\CacheInvalidator. |
22
|
|
|
* |
23
|
|
|
* @author David de Boer <[email protected]> |
24
|
|
|
*/ |
25
|
|
|
class CacheManager extends CacheInvalidator |
26
|
|
|
{ |
27
|
|
|
/** |
28
|
|
|
* @var UrlGeneratorInterface |
29
|
|
|
*/ |
30
|
|
|
private $urlGenerator; |
31
|
|
|
|
32
|
|
|
/** |
33
|
|
|
* What type of urls to generate. |
34
|
|
|
* |
35
|
|
|
* @var bool|string |
36
|
|
|
*/ |
37
|
|
|
private $generateUrlType = UrlGeneratorInterface::ABSOLUTE_PATH; |
38
|
|
|
|
39
|
|
|
/** |
40
|
|
|
* Constructor |
41
|
|
|
* |
42
|
|
|
* @param ProxyClientInterface $cache HTTP cache proxy client |
43
|
|
|
* @param UrlGeneratorInterface $urlGenerator Symfony route generator |
44
|
|
|
*/ |
45
|
11 |
|
public function __construct(ProxyClientInterface $cache, UrlGeneratorInterface $urlGenerator) |
46
|
|
|
{ |
47
|
11 |
|
parent::__construct($cache); |
48
|
11 |
|
$this->urlGenerator = $urlGenerator; |
49
|
11 |
|
} |
50
|
|
|
|
51
|
|
|
/** |
52
|
|
|
* Set what type of URLs to generate. |
53
|
|
|
* |
54
|
|
|
* @param bool|string $generateUrlType One of the constants in UrlGeneratorInterface |
55
|
|
|
*/ |
56
|
8 |
|
public function setGenerateUrlType($generateUrlType) |
57
|
|
|
{ |
58
|
8 |
|
$this->generateUrlType = $generateUrlType; |
59
|
8 |
|
} |
60
|
|
|
|
61
|
|
|
/** |
62
|
|
|
* Assign cache tags to a response |
63
|
|
|
* |
64
|
|
|
* @param Response $response |
65
|
|
|
* @param array $tags |
66
|
|
|
* @param bool $replace Whether to replace the current tags on the |
67
|
|
|
* response |
68
|
|
|
* |
69
|
|
|
* @return $this |
70
|
|
|
* |
71
|
|
|
* @deprecated Add tags with TagHandler::addTags and then use TagHandler::tagResponse |
72
|
|
|
*/ |
73
|
1 |
|
public function tagResponse(Response $response, array $tags, $replace = false) |
74
|
|
|
{ |
75
|
1 |
View Code Duplication |
if (!$replace && $response->headers->has($this->getTagsHeader())) { |
|
|
|
|
76
|
1 |
|
$header = $response->headers->get($this->getTagsHeader()); |
|
|
|
|
77
|
1 |
|
if ('' !== $header) { |
78
|
1 |
|
$tags = array_merge( |
79
|
1 |
|
explode(',', $response->headers->get($this->getTagsHeader())), |
|
|
|
|
80
|
|
|
$tags |
81
|
1 |
|
); |
82
|
1 |
|
} |
83
|
1 |
|
} |
84
|
|
|
|
85
|
1 |
|
$uniqueTags = array_unique($tags); |
86
|
1 |
|
$response->headers->set($this->getTagsHeader(), implode(',', $uniqueTags)); |
|
|
|
|
87
|
|
|
|
88
|
1 |
|
return $this; |
89
|
|
|
} |
90
|
|
|
|
91
|
|
|
/** |
92
|
|
|
* Invalidate a route |
93
|
|
|
* |
94
|
|
|
* @param string $name Route name |
95
|
|
|
* @param array $parameters Route parameters (optional) |
96
|
|
|
* @param array $headers Extra HTTP headers to send to the caching proxy (optional) |
97
|
|
|
* |
98
|
|
|
* @return $this |
99
|
|
|
*/ |
100
|
1 |
|
public function invalidateRoute($name, array $parameters = array(), array $headers = array()) |
101
|
|
|
{ |
102
|
1 |
|
$this->invalidatePath($this->urlGenerator->generate($name, $parameters, $this->generateUrlType), $headers); |
|
|
|
|
103
|
|
|
|
104
|
1 |
|
return $this; |
105
|
|
|
} |
106
|
|
|
|
107
|
|
|
/** |
108
|
|
|
* Refresh a route |
109
|
|
|
* |
110
|
|
|
* @param string $route Route name |
111
|
|
|
* @param array $parameters Route parameters (optional) |
112
|
|
|
* @param array $headers Extra HTTP headers to send to the caching proxy (optional) |
113
|
|
|
* |
114
|
|
|
* @return $this |
115
|
|
|
*/ |
116
|
1 |
|
public function refreshRoute($route, array $parameters = array(), array $headers = array()) |
117
|
|
|
{ |
118
|
1 |
|
$this->refreshPath($this->urlGenerator->generate($route, $parameters, $this->generateUrlType), $headers); |
|
|
|
|
119
|
|
|
|
120
|
1 |
|
return $this; |
121
|
|
|
} |
122
|
|
|
} |
123
|
|
|
|
This method has been deprecated. The supplier of the class has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.