Completed
Push — add/sync-health ( 7e368d...184033 )
by
unknown
18:31 queued 12:03
created

Status   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 103
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 103
rs 10
c 0
b 0
f 0
wmc 9
lcom 0
cbo 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A get_status() 0 16 6
A update_status() 0 18 3
1
<?php
2
/**
3
 * Status class.
4
 *
5
 * @package automattic/jetpack-sync
6
 */
7
8
namespace Automattic\Jetpack\Sync;
9
10
/**
11
 * Status class
12
 */
13
class Status {
14
15
	/**
16
	 * Prefix of the blog lock transient.
17
	 *
18
	 * @access public
19
	 *
20
	 * @var string
21
	 */
22
	const STATUS_OPTION = 'sync_health_status';
23
24
	/**
25
	 * Status key in option array.
26
	 *
27
	 * @access public
28
	 *
29
	 * @var string
30
	 */
31
	const OPTION_STATUS_KEY = 'status';
32
33
	/**
34
	 * Timestamp key in option array.
35
	 *
36
	 * @access public
37
	 *
38
	 * @var string
39
	 */
40
	const OPTION_TIMESTAMP_KEY = 'timestamp';
41
42
	/**
43
	 * Unknown status code.
44
	 *
45
	 * @access public
46
	 *
47
	 * @var string
48
	 */
49
	const STATUS_UNKNOWN = 'unknown';
50
51
	/**
52
	 * Out of sync status code.
53
	 *
54
	 * @access public
55
	 *
56
	 * @var string
57
	 */
58
	const STATUS_OUT_OF_SYNC = 'out_of_sync';
59
60
	/**
61
	 * In sync status code.
62
	 *
63
	 * @access public
64
	 *
65
	 * @var string
66
	 */
67
	const STATUS_IN_SYNC = 'in_sync';
68
69
	/**
70
	 * Get a human-readable Sync Health Status.
71
	 *
72
	 * @return string Sync Health Status
73
	 */
74
	public static function get_status() {
75
		$status = \Jetpack_Options::get_option( self::STATUS_OPTION );
76
77
		if ( false === $status || ! is_array( $status ) || empty( $status[ self::OPTION_STATUS_KEY ] ) ) {
78
			return self::STATUS_UNKNOWN;
79
		}
80
81
		switch ( $status[ self::OPTION_STATUS_KEY ] ) {
82
			case self::STATUS_OUT_OF_SYNC:
83
			case self::STATUS_IN_SYNC:
84
				return $status[ self::OPTION_STATUS_KEY ];
85
			default:
86
				return self::STATUS_UNKNOWN;
87
		}
88
89
	}
90
91
	/**
92
	 * Update Sync Health Status.
93
	 *
94
	 * @param string $status Sync Status.
95
	 */
96
	public static function update_status( $status ) {
97
		// Default Status Option.
98
		$new_status = array(
99
			self::OPTION_STATUS_KEY    => STATUS_UNKNOWN,
100
			self::OPTION_TIMESTAMP_KEY => microtime( true ),
101
		);
102
103
		switch ( $status ) {
104
105
			case self::STATUS_OUT_OF_SYNC:
106
			case self::STATUS_IN_SYNC:
107
				$new_status[ self::OPTION_STATUS_KEY ] = $status;
108
				break;
109
110
		}
111
112
		\Jetpack_Options::update_option( self::STATUS_OPTION, $new_status );
113
	}
114
115
}
116