/home/techb158/public_html/wp-content/plugins/kirki/libraries/framework/Managers
NameSizeModeActions
CookieManager.php114880644editdlrm
EventManager.php33000644editdlrm
LogManager.php34820644editdlrm
OptionManager.php90060644editdlrm
PolicyManager.php66980644editdlrm
VersionUpdateManager.php52820644editdlrm
Edit: /home/techb158/public_html/wp-content/plugins/kirki/libraries/framework/Managers/CookieManager.php (11488B)
> * * @since 1.0.0 */ protected array $queued = []; /** * The resolved default cookie attributes. * * @var array|null * * @since 1.0.0 */ protected $defaults = null; /** * Create a new cookie instance without queueing it. * * @param string $name The name of the cookie. * @param string $value The value of the cookie. * @param int $minutes The number of minutes the cookie lives, zero for a session cookie. * @param string|null $path The path the cookie is scoped to. * @param string|null $domain The domain the cookie is scoped to. * @param bool|null $secure Whether the cookie is restricted to secure connections. * @param bool $http_only Whether the cookie is hidden from client side scripts. * @param bool $raw Whether the value is sent without URL encoding. * @param string|null $same_site The same site policy of the cookie. * * @return Cookie * * @since 1.0.0 */ public function make(string $name, string $value = '', int $minutes = 0, ?string $path = null, ?string $domain = null, ?bool $secure = null, bool $http_only = \true, bool $raw = \false, ?string $same_site = null) { $defaults = $this->get_defaults(); $expire = $minutes === 0 ? 0 : \time() + $minutes * 60; return new Cookie($name, $value, $expire, $path ?? $defaults['path'], $domain ?? $defaults['domain'], $secure ?? $defaults['secure'], $http_only, $raw, $same_site ?? $defaults['same_site']); } /** * Create a cookie that lives for a long time. * * @param string $name The name of the cookie. * @param string $value The value of the cookie. * @param string|null $path The path the cookie is scoped to. * @param string|null $domain The domain the cookie is scoped to. * @param bool|null $secure Whether the cookie is restricted to secure connections. * @param bool $http_only Whether the cookie is hidden from client side scripts. * @param bool $raw Whether the value is sent without URL encoding. * @param string|null $same_site The same site policy of the cookie. * * @return Cookie * * @since 1.0.0 */ public function forever(string $name, string $value = '', ?string $path = null, ?string $domain = null, ?bool $secure = null, bool $http_only = \true, bool $raw = \false, ?string $same_site = null) { return $this->make($name, $value, static::FOREVER, $path, $domain, $secure, $http_only, $raw, $same_site); } /** * Create a cookie that instructs the browser to delete an existing cookie. * * @param string $name The name of the cookie. * @param string|null $path The path the cookie was scoped to. * @param string|null $domain The domain the cookie was scoped to. * * @return Cookie * * @since 1.0.0 */ public function forget(string $name, ?string $path = null, ?string $domain = null) { return $this->make($name, '', -static::FOREVER, $path, $domain); } /** * Queue a cookie that deletes an existing cookie. * * @param string $name The name of the cookie. * @param string|null $path The path the cookie was scoped to. * @param string|null $domain The domain the cookie was scoped to. * * @return void * * @since 1.0.0 */ public function expire(string $name, ?string $path = null, ?string $domain = null) { $this->queue($this->forget($name, $path, $domain)); } /** * Queue a cookie for emission at the next flush. * * Accepts either a Cookie instance or the arguments accepted by the make method. * * @param mixed $parameters The cookie instance or the make arguments. * * @return void * * @throws \InvalidArgumentException When no arguments are given. * * @since 1.0.0 */ public function queue(...$parameters) { if (empty($parameters)) { throw new InvalidArgumentException('A cookie instance or a cookie name is required to queue a cookie.'); } $cookie = $parameters[0] instanceof Cookie ? $parameters[0] : $this->make(...$parameters); $this->queued[$cookie->get_name()][$cookie->get_path()] = $cookie; } /** * Remove a cookie from the queue before it is emitted. * * @param string $name The name of the cookie. * @param string|null $path The path of the cookie, or null to remove every path. * * @return void * * @since 1.0.0 */ public function unqueue(string $name, ?string $path = null) { if ($path === null) { unset($this->queued[$name]); return; } unset($this->queued[$name][$path]); if (empty($this->queued[$name])) { unset($this->queued[$name]); } } /** * Determine whether a cookie is queued. * * @param string $name The name of the cookie. * @param string|null $path The path of the cookie, or null to match any path. * * @return bool * * @since 1.0.0 */ public function has_queued(string $name, ?string $path = null) { return !\is_null($this->queued($name, null, $path)); } /** * Get a queued cookie instance. * * @param string $name The name of the cookie. * @param mixed $default The default value when the cookie is not queued. * @param string|null $path The path of the cookie, or null to match any path. * * @return Cookie|mixed * * @since 1.0.0 */ public function queued(string $name, $default = null, ?string $path = null) { $queued = $this->queued[$name] ?? []; if ($path === null) { return empty($queued) ? $default : \reset($queued); } return $queued[$path] ?? $default; } /** * Get every queued cookie instance. * * @return array * * @since 1.0.0 */ public function get_queued_cookies() { $cookies = []; foreach ($this->queued as $paths) { foreach ($paths as $cookie) { $cookies[] = $cookie; } } return $cookies; } /** * Emit every queued cookie and clear the queue. * * @return void * * @since 1.0.0 */ public function flush_queued_cookies() { $cookies = $this->get_queued_cookies(); $this->queued = []; foreach ($cookies as $cookie) { $this->write($cookie); } } /** * Set the default path and domain applied to new cookies. * * @param string|null $path The default path. * @param string|null $domain The default domain. * @param bool $secure Whether cookies default to secure connections only. * @param string|null $same_site The default same site policy. * * @return $this * * @since 1.0.0 */ public function set_default_path_and_domain(?string $path, ?string $domain, bool $secure = \false, ?string $same_site = null) { $this->defaults = ['path' => $path ?? '/', 'domain' => $domain, 'secure' => $secure, 'same_site' => $same_site]; return $this; } /** * Get the default cookie attributes, resolving them on first use. * * @return array * * @since 1.0.0 */ public function get_defaults() { if ($this->defaults === null) { $this->defaults = $this->resolve_defaults(); } return $this->defaults; } /** * Resolve the default attributes from config, the WordPress environment, then framework fallbacks. * * @return array * * @since 1.0.0 */ protected function resolve_defaults() { return ['path' => config('cookie.path', $this->environment_path()), 'domain' => config('cookie.domain', $this->environment_domain()), 'secure' => (bool) config('cookie.secure', $this->environment_secure()), 'same_site' => config('cookie.same_site', Cookie::SAME_SITE_LAX)]; } /** * Get the cookie path defined by the WordPress installation. * * @return string * * @since 1.0.0 */ protected function environment_path() { if (\defined('COOKIEPATH') && COOKIEPATH !== '') { return COOKIEPATH; } return '/'; } /** * Get the cookie domain defined by the WordPress installation. * * @return string|null * * @since 1.0.0 */ protected function environment_domain() { if (\defined('COOKIE_DOMAIN') && COOKIE_DOMAIN !== '' && COOKIE_DOMAIN !== \false) { return COOKIE_DOMAIN; } return null; } /** * Determine whether the current request is served over TLS. * * @return bool * * @since 1.0.0 */ protected function environment_secure() { return \function_exists('is_ssl') ? (bool) is_ssl() : \false; } /** * Write a cookie unless the response headers have already been sent. * * @param Cookie $cookie The cookie to write. * * @return bool Whether the cookie was written. * * @since 1.0.0 */ protected function write(Cookie $cookie) { if ($this->headers_already_sent()) { $this->log_warning(\sprintf('Cookie "%s" was not sent because the headers were already sent.', $cookie->get_name())); return \false; } return $this->send_cookie($cookie); } /** * Send a cookie to the browser. * * @param Cookie $cookie The cookie to send. * * @return bool * * @since 1.0.0 */ protected function send_cookie(Cookie $cookie) { if ($cookie->is_raw()) { return \setrawcookie($cookie->get_name(), $cookie->get_value(), $cookie->to_options()); } return \setcookie($cookie->get_name(), $cookie->get_value(), $cookie->to_options()); } /** * Determine whether the response headers have already been sent. * * @return bool * * @since 1.0.0 */ protected function headers_already_sent() { return \headers_sent(); } /** * Log a warning message. * * @param string $message The message to log. * * @return void * * @since 1.0.0 */ protected function log_warning(string $message) { app(LogManager::class)->warning($message); } }