HEX
Server: Apache
System: Linux server11 5.10.0-33-amd64 #1 SMP Debian 5.10.226-1 (2024-10-03) x86_64
User: web78 (5081)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/clients/client1/web78/web/wp-content/plugins/loco-translate/src/data/Cookie.php
<?php
/**
 * Basic abstraction of cookie setting.
 * - Provides loco_setcookie filter for tests.
 * - Provides multiple values as url-encoded pairs. Not using JSON, because stripslashes
 * 
 * Not currently used anywhere - replaced with usermeta-based session
 * @codeCoverageIgnore
 */
class Loco_data_Cookie extends ArrayObject {
    
    private $name = 'loco';

    private $expires = 0;


    /**
     * Get and deserialize cookie sent to server
     * @return Loco_data_Cookie
     */
    public static function get( $name ){
        if( isset($_COOKIE[$name]) ){
            parse_str( $_COOKIE[$name], $data );
            if( $data ){
                $cookie = new Loco_data_Cookie( $data );
                return $cookie->setName( $name );
            }
        }
    }

    
    /**
     * @internal
     */
    public function __toString(){
        $data = $this->getArrayCopy();
        return http_build_query( $data, null, '&' );
    }

    
    /**
     * @return Loco_data_Cookie
     */
    public function setName( $name ){
        $this->name = $name;
        return $this;
    }


    /**
     * @return string
     */
    public function getName(){
        return $this->name;
    }


    /**
     * Send cookie to the browser, unless filtered out.
     * @return bool|null
     */
    public function send(){
        if( false !== apply_filters( 'loco_setcookie', $this ) ){
            $value = (string) $this;
            // @codeCoverageIgnoreStart
            return setcookie( $this->name, $value, $this->expires, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true );
        }
    }


    /**
     * Empty values such that sending cookie would remove it from browser
     * @return Loco_data_Cookie
     */
    public function kill(){
        $this->exchangeArray( [] );
        $this->expires = time() - 86400;
        return $this;
    }

    
    
}