PluginProbe
Media Cloud Sync / 1.3.0
Media Cloud Sync v1.3.0
1.4.1 1.4.0 1.3.12 1.3.11 1.3.10 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.2.0 1.2.10 1.2.11 1.2.12 1.2.13 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 All 35 releases
media-cloud-sync / includes / sdk / s3 / GuzzleHttp / Cookie / SessionCookieJar.php

SessionCookieJar.php in Media Cloud Sync 1.3.0, at includes/sdk/s3/GuzzleHttp/Cookie/SessionCookieJar.php

72 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 Dudlewebs\WPMCS\s3\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 * @var bool Control whether to persist session cookies or not.
16 */
17 private $storeSessionCookies;
18 /**
19 * Create a new SessionCookieJar object
20 *
21 * @param string $sessionKey Session key name to store the cookie
22 * data in session
23 * @param bool $storeSessionCookies Set to true to store session cookies
24 * in the cookie jar.
25 */
26 public function __construct(string $sessionKey, bool $storeSessionCookies = \false)
27 {
28 parent::__construct();
29 $this->sessionKey = $sessionKey;
30 $this->storeSessionCookies = $storeSessionCookies;
31 $this->load();
32 }
33 /**
34 * Saves cookies to session when shutting down
35 */
36 public function __destruct()
37 {
38 $this->save();
39 }
40 /**
41 * Save cookies to the client session
42 */
43 public function save() : void
44 {
45 $json = [];
46 /** @var SetCookie $cookie */
47 foreach ($this as $cookie) {
48 if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
49 $json[] = $cookie->toArray();
50 }
51 }
52 $_SESSION[$this->sessionKey] = \json_encode($json);
53 }
54 /**
55 * Load the contents of the client session into the data array
56 */
57 protected function load() : void
58 {
59 if (!isset($_SESSION[$this->sessionKey])) {
60 return;
61 }
62 $data = \json_decode($_SESSION[$this->sessionKey], \true);
63 if (\is_array($data)) {
64 foreach ($data as $cookie) {
65 $this->setCookie(new SetCookie($cookie));
66 }
67 } elseif (\strlen($data)) {
68 throw new \RuntimeException('Invalid cookie data');
69 }
70 }
71 }
72