PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.8.8
Independent Analytics – WordPress Analytics Plugin v2.8.8
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 All 120 releases
independent-analytics / freemius / includes / class-fs-user-lock.php
class-fs-user-lock.php
90 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package Freemius
4 * @copyright Copyright (c) 2015, Freemius, Inc.
5 * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6 * @since 2.1.0
7 */
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 require_once WP_FS__DIR_INCLUDES . '/class-fs-lock.php';
14
15 /**
16 * Class FS_User_Lock
17 */
18 class FS_User_Lock {
19 /**
20 * @var FS_Lock
21 */
22 private $_lock;
23
24 #--------------------------------------------------------------------------------
25 #region Singleton
26 #--------------------------------------------------------------------------------
27
28 /**
29 * @var FS_User_Lock
30 */
31 private static $_instance;
32
33 /**
34 * @author Vova Feldman (@svovaf)
35 * @since 2.1.0
36 *
37 * @return FS_User_Lock
38 */
39 static function instance() {
40 if ( ! isset( self::$_instance ) ) {
41 self::$_instance = new self();
42 }
43
44 return self::$_instance;
45 }
46
47 #endregion
48
49 private function __construct() {
50 $current_user_id = Freemius::get_current_wp_user_id();
51
52 $this->_lock = new FS_Lock( "locked_{$current_user_id}" );
53 }
54
55 /**
56 * Try to acquire lock. If the lock is already set or is being acquired by another locker, don't do anything.
57 *
58 * @author Vova Feldman (@svovaf)
59 * @since 2.1.0
60 *
61 * @param int $expiration
62 *
63 * @return bool TRUE if successfully acquired lock.
64 */
65 function try_lock( $expiration = 0 ) {
66 return $this->_lock->try_lock( $expiration );
67 }
68
69 /**
70 * Acquire lock regardless if it's already acquired by another locker or not.
71 *
72 * @author Vova Feldman (@svovaf)
73 * @since 2.1.0
74 *
75 * @param int $expiration
76 */
77 function lock( $expiration = 0 ) {
78 $this->_lock->lock( $expiration );
79 }
80
81 /**
82 * Unlock the lock.
83 *
84 * @author Vova Feldman (@svovaf)
85 * @since 2.1.0
86 */
87 function unlock() {
88 $this->_lock->unlock();
89 }
90 }