/var/www/html_uk/wp-content/plugins/automatewoo/includes/Language.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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?php
// phpcs:ignoreFile

namespace AutomateWoo;

/**
 * Multi-lingual helper class
 * @class Language
 */
class Language {


    
/**
     * @return bool
     */
    
static function is_multilingual() {
        return 
Integrations::is_wpml();
    }


    
/**
     * @return string
     */
    
static function get_default() {
        if ( 
Integrations::is_wpml() ) {
            return 
wpml_get_default_language();
        }

        return 
'';
    }


    
/**
     * Returns empty string if multi-lingual is not enabled
     * @return string
     */
    
static function get_current() {
        if ( 
Integrations::is_wpml() ) {
            return 
wpml_get_current_language();
        }

        return 
'';
    }


    
/**
     * Set language back to original
     */
    
static function set_original() {
        if ( 
Integrations::is_wpml() ) {
            
Language::set_currentICL_LANGUAGE_CODE );
        }
    }


    
/**
     * @param $language
     */
    
static function set_current$language ) {

        if ( ! 
Language::is_multilingual() || ! $language ) {
            return;
        }

        if ( 
$language == Language::get_current() ) {
            return; 
// no change required
        
}

        if ( 
Integrations::is_wpml() ) {
            global 
$sitepress;
            
$sitepress->switch_lang$languagefalse );
        }
    }


    
/**
     * Make language choice for guests and users persist
     */
    
static function make_language_persistent() {

        if ( 
is_admin() || ! Language::is_multilingual() ) {
            return;
        }

        
$current_lang Language::get_current();

        if ( 
is_user_logged_in() ) {
            
$user_lang get_user_metaget_current_user_id(), '_aw_persistent_language'true );

            if ( 
$user_lang != $current_lang ) {
                
self::set_user_languageget_current_user_id(), $current_lang );
            }
        }
        else {
            
// Save language for guest if they have been stored
            
$guest Session_Tracker::get_current_guest();

            if ( 
$guest ) {
                if ( 
$guest->get_language() != $current_lang ) {
                    
$guest->set_language$current_lang );
                    
$guest->save();
                }
            }
        }
    }


    
/**
     * @param $user Order_Guest|\WP_User
     * @return string|false
     */
    
static function get_user_language$user ) {

        if ( ! 
Language::is_multilingual() )
            return 
false;

        if ( 
$user instanceof \WP_User ) {
            if ( 
$persisted get_user_meta$user->ID'_aw_persistent_language'true ) ) {
                return 
Clean::string$persisted );
            }
        }

        
// guest orders, fetch the language from their order
        
if ( is_a$user'AutomateWoo\Order_Guest' ) && $user->order ) {
            if ( 
$order_lang $user->order->get_meta'wpml_language' ) ) {
                return 
Clean::string$order_lang );
            }
        }

        return 
wpml_get_default_language();
    }


    
/**
     * @param $user_id
     * @param $language
     */
    
static function set_user_language$user_id$language ) {
        
update_user_meta$user_id'_aw_persistent_language'$language );
    }


    
/**
     * @param Guest $guest
     * @return string
     */
    
static function get_guest_language$guest ) {

        if ( ! 
Language::is_multilingual() ) {
            return 
'';
        }

        if ( 
$guest && $guest->get_language() ) {
            return 
$guest->get_language();
        }
        return 
wpml_get_default_language();
    }


}