PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / sitemaps / sitemap-state.php
jetpack / modules / sitemaps Last commit date
abilities 1 month ago sitemap-buffer-factory.php 7 months ago sitemap-buffer-fallback.php 7 months ago sitemap-buffer-image-fallback.php 7 months ago sitemap-buffer-image-xmlwriter.php 7 months ago sitemap-buffer-image.php 7 months ago sitemap-buffer-master-fallback.php 7 months ago sitemap-buffer-master-xmlwriter.php 7 months ago sitemap-buffer-master.php 7 months ago sitemap-buffer-news-fallback.php 7 months ago sitemap-buffer-news-xmlwriter.php 7 months ago sitemap-buffer-news.php 7 months ago sitemap-buffer-page-fallback.php 7 months ago sitemap-buffer-page-xmlwriter.php 7 months ago sitemap-buffer-page.php 7 months ago sitemap-buffer-video-fallback.php 7 months ago sitemap-buffer-video-xmlwriter.php 7 months ago sitemap-buffer-video.php 7 months ago sitemap-buffer-xmlwriter.php 7 months ago sitemap-buffer.php 7 months ago sitemap-builder.php 1 month ago sitemap-constants.php 7 months ago sitemap-finder.php 7 months ago sitemap-librarian.php 7 months ago sitemap-logger.php 7 months ago sitemap-state.php 7 months ago sitemap-stylist.php 7 months ago sitemaps.php 1 month ago
sitemap-state.php
148 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Abstract sitemap generation state class.
4 *
5 * @package automattic/jetpack
6 * @since 4.8.0
7 * @author Automattic
8 */
9
10 if ( ! defined( 'ABSPATH' ) ) {
11 exit( 0 );
12 }
13
14 /* Include standard constants and librarian. */
15 require_once __DIR__ . '/sitemap-constants.php';
16 require_once __DIR__ . '/sitemap-librarian.php';
17
18 if ( defined( 'WP_DEBUG' ) && ( true === WP_DEBUG ) ) {
19 require_once __DIR__ . '/sitemap-logger.php';
20 }
21
22 /**
23 * This class provides an interface for storing and retrieving
24 * the state of a sitemap generation phase. Whenever the builder
25 * wants to build a new sitemap page, it uses this class to see
26 * what the current state of the sitemap is. The lock is stored
27 * as a transient with max lifetime of 15 minutes; this way if our
28 * builder times out before unlocking the state, the lock will expire
29 * before the builder tries again.
30 *
31 * @since 4.8.0
32 */
33 class Jetpack_Sitemap_State {
34
35 /**
36 * Initial state for the sitemap generator.
37 *
38 * @access public
39 * @since 4.8.0
40 *
41 * @param string $type The initial sitemap type.
42 *
43 * @return array $args {
44 * @type string sitemap-type The type of sitemap to be generated.
45 * @type int last-added The largest index to be added to a generated sitemap page.
46 * @type int number The index of the last sitemap to be generated.
47 * @type string last-modified The latest timestamp seen.
48 * @type array max The latest index of each sitemap type seen.
49 * }
50 */
51 private static function initial( $type = JP_PAGE_SITEMAP_TYPE ) {
52 return array(
53 'sitemap-type' => $type,
54 'last-added' => 0,
55 'number' => 0,
56 'last-modified' => '1970-01-01 00:00:00',
57 'max' => array(),
58 );
59 }
60
61 /**
62 * Reset the sitemap state.
63 *
64 * @param string $type The initial sitemap type.
65 *
66 * @access public
67 * @since 4.8.0
68 */
69 public static function reset( $type ) {
70 delete_transient( 'jetpack-sitemap-state-lock' );
71 update_option(
72 'jetpack-sitemap-state',
73 self::initial( $type )
74 );
75 }
76
77 /**
78 * Store a sitemap state, and unlock it.
79 *
80 * @access public
81 * @since 4.8.0
82 *
83 * @param array $state Array of the Sitemap state details.
84 * @type string sitemap-type The type of sitemap to be generated.
85 * @type int last-added The largest index to be added to a generated sitemap page.
86 * @type int number The index of the last sitemap to be generated.
87 * @type string last-modified The latest timestamp seen.
88 */
89 public static function check_in( $state ) {
90 // Get the old max value.
91 $sitemap_old = get_option( 'jetpack-sitemap-state', self::initial() );
92 $state['max'] = $sitemap_old['max'];
93
94 // Update the max value of the current type.
95 $state['max'][ $state['sitemap-type'] ]['number'] = $state['number'];
96 $state['max'][ $state['sitemap-type'] ]['lastmod'] = $state['last-modified'];
97
98 update_option( 'jetpack-sitemap-state', $state );
99 }
100
101 /**
102 * Unlock the sitemap state.
103 *
104 * @access public
105 * @since 4.8.0
106 */
107 public static function unlock() {
108 delete_transient( 'jetpack-sitemap-state-lock' );
109 }
110
111 /**
112 * Read the stored sitemap state. Returns false if the state is locked.
113 *
114 * @access public
115 * @since 4.8.0
116 *
117 * @return bool|array $args {
118 * @type string sitemap-type The type of sitemap to be generated.
119 * @type int last-added The largest index to be added to a generated sitemap page.
120 * @type int number The index of the last sitemap to be generated.
121 * @type string last-modified The latest timestamp seen.
122 * @type array max The latest index of each sitemap type seen.
123 * }
124 */
125 public static function check_out() {
126 // See if the state is locked.
127 if ( true === get_transient( 'jetpack-sitemap-state-lock' ) ) {
128 // If it is, return false.
129 return false;
130 } else {
131 // Otherwise, lock the state for 15 minutes and then return it.
132 set_transient( 'jetpack-sitemap-state-lock', true, JP_SITEMAP_LOCK_INTERVAL );
133 return get_option( 'jetpack-sitemap-state', self::initial() );
134 }
135 }
136
137 /**
138 * Delete the stored state and lock.
139 *
140 * @access public
141 * @since 4.8.0
142 */
143 public static function delete() {
144 delete_transient( 'jetpack-sitemap-state-lock' );
145 delete_option( 'jetpack-sitemap-state' );
146 }
147 }
148