/var/www/hkosl.com/aga/wp-content/plugins/foogallery/freemius/includes/class-fs-user-lock.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
<?php
    
/**
     * @package     Freemius
     * @copyright   Copyright (c) 2015, Freemius, Inc.
     * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
     * @since       2.1.0
     */

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

    
/**
     * Class FS_User_Lock
     */
    
class FS_User_Lock {
        
/**
         * @var int
         */
        
private $_wp_user_id;
        
/**
         * @var int
         */
        
private $_thread_id;

        
#--------------------------------------------------------------------------------
        #region Singleton
        #--------------------------------------------------------------------------------

        /**
         * @var FS_User_Lock
         */
        
private static $_instance;

        
/**
         * @author Vova Feldman (@svovaf)
         * @since  2.1.0
         *
         * @return FS_User_Lock
         */
        
static function instance() {
            if ( ! isset( 
self::$_instance ) ) {
                
self::$_instance = new self();
            }

            return 
self::$_instance;
        }

        
#endregion

        
private function __construct() {
            
$this->_wp_user_id Freemius::get_current_wp_user_id();
            
$this->_thread_id  mt_rand032000 );
        }


        
/**
         * Try to acquire lock. If the lock is already set or is being acquired by another locker, don't do anything.
         *
         * @author Vova Feldman (@svovaf)
         * @since  2.1.0
         *
         * @param int $expiration
         *
         * @return bool TRUE if successfully acquired lock.
         */
        
function try_lock$expiration ) {
            if ( 
$this->is_locked() ) {
                
// Already locked.
                
return false;
            }

            
set_site_transient"locked_{$this->_wp_user_id}"$this->_thread_id$expiration );

            if ( 
$this->has_lock() ) {
                
set_site_transient"locked_{$this->_wp_user_id}"true$expiration );

                return 
true;
            }

            return 
false;
        }

        
/**
         * Acquire lock regardless if it's already acquired by another locker or not.
         *
         * @author Vova Feldman (@svovaf)
         * @since  2.1.0
         *
         * @param int $expiration
         */
        
function lock$expiration ) {
            
set_site_transient"locked_{$this->_wp_user_id}"true$expiration );
        }

        
/**
         * Checks if lock is currently acquired.
         *
         * @author Vova Feldman (@svovaf)
         * @since  2.1.0
         *
         * @return bool
         */
        
function is_locked() {
            return ( 
false !== get_site_transient"locked_{$this->_wp_user_id}) );
        }

        
/**
         * Unlock the lock.
         *
         * @author Vova Feldman (@svovaf)
         * @since  2.1.0
         */
        
function unlock() {
            
delete_site_transient"locked_{$this->_wp_user_id});
        }

        
/**
         * Checks if lock is currently acquired by the current locker.
         *
         * @return bool
         */
        
private function has_lock() {
            return ( 
$this->_thread_id == get_site_transient"locked_{$this->_wp_user_id}) );
        }
    }