PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 2.19.3
GiveWP – Donation Plugin and Fundraising Platform v2.19.3
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 All 253 releases
give / vendor / symfony / http-foundation / RedirectResponse.php
RedirectResponse.php
110 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.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 Symfony\Component\HttpFoundation;
13
14 /**
15 * RedirectResponse represents an HTTP response doing a redirect.
16 *
17 * @author Fabien Potencier <fabien@symfony.com>
18 */
19 class RedirectResponse extends Response
20 {
21 protected $targetUrl;
22
23 /**
24 * Creates a redirect response so that it conforms to the rules defined for a redirect status code.
25 *
26 * @param string $url The URL to redirect to. The URL should be a full URL, with schema etc.,
27 * but practically every browser redirects on paths only as well
28 * @param int $status The status code (302 by default)
29 * @param array $headers The headers (Location is always set to the given URL)
30 *
31 * @throws \InvalidArgumentException
32 *
33 * @see https://tools.ietf.org/html/rfc2616#section-10.3
34 */
35 public function __construct($url, $status = 302, $headers = [])
36 {
37 parent::__construct('', $status, $headers);
38
39 $this->setTargetUrl($url);
40
41 if (!$this->isRedirect()) {
42 throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $status));
43 }
44
45 if (301 == $status && !\array_key_exists('cache-control', array_change_key_case($headers, \CASE_LOWER))) {
46 $this->headers->remove('cache-control');
47 }
48 }
49
50 /**
51 * Factory method for chainability.
52 *
53 * @param string $url The url to redirect to
54 * @param int $status The response status code
55 * @param array $headers An array of response headers
56 *
57 * @return static
58 */
59 public static function create($url = '', $status = 302, $headers = [])
60 {
61 return new static($url, $status, $headers);
62 }
63
64 /**
65 * Returns the target URL.
66 *
67 * @return string target URL
68 */
69 public function getTargetUrl()
70 {
71 return $this->targetUrl;
72 }
73
74 /**
75 * Sets the redirect target of this response.
76 *
77 * @param string $url The URL to redirect to
78 *
79 * @return $this
80 *
81 * @throws \InvalidArgumentException
82 */
83 public function setTargetUrl($url)
84 {
85 if (empty($url)) {
86 throw new \InvalidArgumentException('Cannot redirect to an empty URL.');
87 }
88
89 $this->targetUrl = $url;
90
91 $this->setContent(
92 sprintf('<!DOCTYPE html>
93 <html>
94 <head>
95 <meta charset="UTF-8" />
96 <meta http-equiv="refresh" content="0;url=\'%1$s\'" />
97
98 <title>Redirecting to %1$s</title>
99 </head>
100 <body>
101 Redirecting to <a href="%1$s">%1$s</a>.
102 </body>
103 </html>', htmlspecialchars($url, \ENT_QUOTES, 'UTF-8')));
104
105 $this->headers->set('Location', $url);
106
107 return $this;
108 }
109 }
110