PluginProbe
Depicter — Popup & Slider Builder / 1.2.0
Depicter — Popup & Slider Builder v1.2.0
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / modules / GuzzleHttp / Cookie / SessionCookieJar.php

SessionCookieJar.php in Depicter — Popup & Slider Builder 1.2.0, at modules/GuzzleHttp/Cookie/SessionCookieJar.php

78 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Depicter\GuzzleHttp\Cookie;
4
5 /**
6 * Persists cookies in the client session
7 */
8 class SessionCookieJar extends CookieJar
9 {
10 /**
11 * @var string session key
12 */
13 private $sessionKey;
14
15 /**
16 * @var bool Control whether to persist session cookies or not.
17 */
18 private $storeSessionCookies;
19
20 /**
21 * Create a new SessionCookieJar object
22 *
23 * @param string $sessionKey Session key name to store the cookie
24 * data in session
25 * @param bool $storeSessionCookies Set to true to store session cookies
26 * in the cookie jar.
27 */
28 public function __construct(string $sessionKey, bool $storeSessionCookies = false)
29 {
30 parent::__construct();
31 $this->sessionKey = $sessionKey;
32 $this->storeSessionCookies = $storeSessionCookies;
33 $this->load();
34 }
35
36 /**
37 * Saves cookies to session when shutting down
38 */
39 public function __destruct()
40 {
41 $this->save();
42 }
43
44 /**
45 * Save cookies to the client session
46 */
47 public function save(): void
48 {
49 $json = [];
50 /** @var SetCookie $cookie */
51 foreach ($this as $cookie) {
52 if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
53 $json[] = $cookie->toArray();
54 }
55 }
56
57 $_SESSION[$this->sessionKey] = \json_encode($json);
58 }
59
60 /**
61 * Load the contents of the client session into the data array
62 */
63 protected function load(): void
64 {
65 if (!isset($_SESSION[$this->sessionKey])) {
66 return;
67 }
68 $data = \json_decode($_SESSION[$this->sessionKey], true);
69 if (\is_array($data)) {
70 foreach ($data as $cookie) {
71 $this->setCookie(new SetCookie($cookie));
72 }
73 } elseif (\strlen($data)) {
74 throw new \RuntimeException("Invalid cookie data");
75 }
76 }
77 }
78