wp/wp-includes/js/heartbeat.js
changeset 22 8c2e4d02f4ef
parent 21 48c4eec2b7e6
--- a/wp/wp-includes/js/heartbeat.js	Fri Sep 05 18:40:08 2025 +0200
+++ b/wp/wp-includes/js/heartbeat.js	Fri Sep 05 18:52:52 2025 +0200
@@ -132,16 +132,17 @@
 				}
 
 				/*
-				 * The interval can be from 15 to 120 seconds and can be set temporarily to 5 seconds.
-				 * It can be set in the initial options or changed later through JS and/or through PHP.
+				 * Logic check: the interval can be from 1 to 3600 seconds and can be set temporarily
+				 * to 5 seconds. It can be set in the initial options or changed later from JS
+				 * or from PHP through the AJAX responses.
 				 */
 				if ( options.interval ) {
 					settings.mainInterval = options.interval;
 
-					if ( settings.mainInterval < 15 ) {
-						settings.mainInterval = 15;
-					} else if ( settings.mainInterval > 120 ) {
-						settings.mainInterval = 120;
+					if ( settings.mainInterval < 1 ) {
+						settings.mainInterval = 1;
+					} else if ( settings.mainInterval > 3600 ) {
+						settings.mainInterval = 3600;
 					}
 				}
 
@@ -721,10 +722,10 @@
 		 *
 		 * @memberOf wp.heartbeat.prototype
 		 *
-		 * @param {string|number} speed Interval: 'fast' or 5, 15, 30, 60, 120.
+		 * @param {string|number} speed Interval: 'fast' or integer between 1 and 3600 (seconds).
 		 *                              Fast equals 5.
-		 * @param {string}        ticks Tells how many ticks before the interval reverts
-		 *                              back. Used with speed = 'fast' or 5.
+		 * @param {number}        ticks Tells how many ticks before the interval reverts back.
+		 *                              Value must be between 1 and 30. Used with speed = 'fast' or 5.
 		 *
 		 * @return {number} Current interval in seconds.
 		 */
@@ -733,35 +734,28 @@
 				oldInterval = settings.tempInterval ? settings.tempInterval : settings.mainInterval;
 
 			if ( speed ) {
-				switch ( speed ) {
-					case 'fast':
-					case 5:
-						newInterval = 5000;
-						break;
-					case 15:
-						newInterval = 15000;
-						break;
-					case 30:
-						newInterval = 30000;
-						break;
-					case 60:
-						newInterval = 60000;
-						break;
-					case 120:
-						newInterval = 120000;
-						break;
-					case 'long-polling':
-						// Allow long polling (experimental).
-						settings.mainInterval = 0;
-						return 0;
-					default:
+				if ( 'fast' === speed ) {
+					// Special case, see below.
+					newInterval = 5000;
+				} else if ( 'long-polling' === speed ) {
+					// Allow long polling (experimental).
+					settings.mainInterval = 0;
+					return 0;
+				} else {
+					speed = parseInt( speed, 10 );
+
+					if ( speed >= 1 && speed <= 3600 ) {
+						newInterval = speed * 1000;
+					} else {
 						newInterval = settings.originalInterval;
+					}
 				}
 
 				if ( settings.minimalInterval && newInterval < settings.minimalInterval ) {
 					newInterval = settings.minimalInterval;
 				}
 
+				// Special case, runs for a number of ticks then reverts to the previous interval.
 				if ( 5000 === newInterval ) {
 					ticks = parseInt( ticks, 10 ) || 30;
 					ticks = ticks < 1 || ticks > 30 ? 30 : ticks;