@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3/**
4 * Triggers an event repeatedly, delaying a fixed number of seconds between
5 * triggers.
6 *
7 * For example, this clock can trigger an event every 30 seconds.
8 */
9final class PhabricatorMetronomicTriggerClock extends PhabricatorTriggerClock {
10
11 public function validateProperties(array $properties) {
12 PhutilTypeSpec::checkMap(
13 $properties,
14 array(
15 'period' => 'int',
16 ));
17 }
18
19 public function getNextEventEpoch($last_epoch, $is_reschedule) {
20 $period = $this->getProperty('period');
21
22 if ($last_epoch) {
23 $next = $last_epoch + $period;
24 $next = max($next, $last_epoch + 1);
25 } else {
26 $next = PhabricatorTime::getNow() + $period;
27 }
28
29 return $next;
30 }
31
32}