--- 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;