/var/www/html_de/wp-content/plugins/woocommerce/includes/abstracts/abstract-wc-session.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
/**
 * Handle data for the current customers session
 *
 * @class       WC_Session
 * @version     2.0.0
 * @package     WooCommerce\Abstracts
 */

declare(strict_types=1);

if ( ! 
defined'ABSPATH' ) ) {
    exit;
}

/**
 * WC_Session
 */
abstract class WC_Session {

    
/**
     * Customer ID.
     *
     * @var ?string $_customer_id Customer ID.
     */
    
protected $_customer_id// phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore

    /**
     * Session Data.
     *
     * @var array $_data Data array.
     */
    
protected $_data = array(); // phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore

    /**
     * Dirty when the session needs saving.
     *
     * @var bool $_dirty When something changes
     */
    
protected $_dirty false// phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore

    /**
     * Init hooks and session data. Extended by child classes.
     *
     * @since 3.3.0
     */
    
public function init() {}

    
/**
     * Cleanup session data. Extended by child classes.
     */
    
public function cleanup_sessions() {}

    
/**
     * Magic get method.
     *
     * @param string $key Key to get.
     * @return mixed
     */
    
public function __get$key ) {
        return 
$this->get$key );
    }

    
/**
     * Magic set method.
     *
     * @param string $key Key to set.
     * @param mixed  $value Value to set.
     */
    
public function __set$key$value ) {
        
$this->set$key$value );
    }

    
/**
     * Magic isset method.
     *
     * @param string $key Key to check.
     * @return bool
     */
    
public function __isset$key ) {
        return isset( 
$this->_datasanitize_key$key ) ] );
    }

    
/**
     * Magic unset method.
     *
     * @param string $key Key to unset.
     */
    
public function __unset$key ) {
        
$key sanitize_key$key );
        if ( isset( 
$this->_data$key ] ) ) {
            unset( 
$this->_data$key ] );
            
$this->_dirty true;
        }
    }

    
/**
     * Get a session variable.
     *
     * @param string $key Key to get.
     * @param mixed  $default_value used if the session variable isn't set.
     * @return mixed value of session variable
     */
    
public function get$key$default_value null ) {
        
$key sanitize_key$key );
        return isset( 
$this->_data$key ] ) ? maybe_unserialize$this->_data$key ] ) : $default_value;
    }

    
/**
     * Set a session variable.
     *
     * @param string $key Key to set.
     * @param mixed  $value Value to set.
     */
    
public function set$key$value ) {
        if ( 
null === $value ) {
            
$this->__unset$key );

            return;
        }

        
$key                       sanitize_key$key );
        
$serialized_original_value $this->_data$key ] ?? null;
        
$serialized_value          maybe_serialize$value );

        if ( 
$serialized_original_value === $serialized_value || maybe_unserialize$serialized_original_value ) === $value ) {
            return;
        }

        
$this->_dirty        true;
        
$this->_data$key ] = $serialized_value;
    }

    
/**
     * Get customer ID. If the session is not initialized, returns an empty string.
     *
     * @return string
     */
    
public function get_customer_id() {
        return 
$this->_customer_id ?? '';
    }
}