Example #1
0
/**
 * Return delay value that is currently applicable
 *
 * @param int $delay                 default delay
 * @param array $arrOfFlexIntervals  array of intervals in format: "d/wd[-wd2],hh:mm-hh:mm"
 * @param int $now                   current timestamp
 *
 * @return int                       delay for a current timestamp
 */
function getCurrentDelay($delay, array $arrOfFlexIntervals, $now)
{
    if (empty($arrOfFlexIntervals)) {
        return $delay;
    }
    $currentDelay = -1;
    foreach ($arrOfFlexIntervals as $flexInterval) {
        if (sscanf($flexInterval, '%d/%29s', $flexDelay, $flexPeriod) != 2) {
            continue;
        }
        if (($currentDelay == -1 || $flexDelay < $currentDelay) && checkTimePeriod($flexPeriod, $now)) {
            $currentDelay = $flexDelay;
        }
    }
    if ($currentDelay == -1) {
        return $delay;
    }
    return $currentDelay;
}
Example #2
0
/**
 * Return delay value that is currently applicable
 *
 * @param int $delay					default delay
 * @param array $flexible_intervals		array of intervals in format: "d/wd[-wd2],hh:mm-hh:mm"
 * @param int $now						current timestamp
 *
 * @return int							delay for a current timestamp
 */
function getCurrentDelay($delay, array $flexible_intervals, $now)
{
    if (!$flexible_intervals) {
        return $delay;
    }
    $current_delay = -1;
    foreach ($flexible_intervals as $flexible_interval) {
        list($flexible_delay, $flexible_period) = explode('/', $flexible_interval);
        $flexible_delay = (int) $flexible_delay;
        if (($current_delay == -1 || $flexible_delay < $current_delay) && checkTimePeriod($flexible_period, $now)) {
            $current_delay = $flexible_delay;
        }
    }
    if ($current_delay == -1) {
        return $delay;
    }
    return $current_delay;
}