Completed
Push — add/user-tracking-option-api ( 55d15a...445566 )
by
unknown
47:20 queued 38:47
created

Jetpack_User_Event_Tracking::has_value()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 6
nc 2
nop 1
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
class Jetpack_User_Event_Tracking {
4
5
	private static $_cache = array();
6
	public static $KEY = 'jetpack_event_tracking';
7
8
	static function is_enabled( $user_id ) {
9
		if ( isset( self::$_cache[ $user_id ] ) ) {
10
			return self::$_cache[ $user_id ];
11
		}
12
		$user_tracking = get_user_meta( $user_id, self::$KEY, true );
13
		if ( ! is_numeric( $user_tracking ) ) {
14
			$user_tracking = self::default_value();
15
		}
16
		self::$_cache[ $user_id ] = (bool) $user_tracking;
17
		return (bool) $user_tracking;
18
	}
19
20
	static function has_value( $user_id ) {
21
		$user_tracking = get_user_meta( $user_id, self::$KEY, true );
22
		if ( is_numeric( $user_tracking ) ) {
23
			self::$_cache[ $user_id ] = (bool) $user_tracking;
24
			return true;
25
		}
26
		return false;
27
	}
28
29
	static function is_disabled( $user_id ) {
30
		return ! self::is_enabled( $user_id );
31
	}
32
33
	static function disable( $user_id ) {
34
		// user opted out
35
		return self::set( $user_id, 0 );
36
	}
37
38
	static function enable( $user_id ) {
39
		// user opted in
40
		return self::set( $user_id, 1 );
41
	}
42
43
	static private function set( $user_id, $value ) {
0 ignored issues
show
Coding Style introduced by
As per PSR2, the static declaration should come after the visibility declaration.
Loading history...
44
		self::$_cache[ $user_id ] = (bool) $value;
45
		return update_user_meta( $user_id, self::$KEY, $value );
46
	}
47
48
	static function default_value() {
49
		/**
50
		 * Return the default jetpack user event tracking opt out value.
51
		 *
52
		 * @since 6.0.0
53
		 *
54
		 * @param bool Default to false. (user tracking enabled)
55
		 */
56
		return apply_filters( 'jetpack_event_tracking', true );
57
	}
58
}
59