Files
nextcloud-workflow-deck-aut…/lib/Service/TriggerDate.php
T
Patrick Niebeling 8268f1068d
Build package / xml-lint (push) Successful in 3m32s
Build package / unit-tests (push) Successful in 4m49s
Build package / php-lint (8.5) (push) Successful in 4m52s
Build package / php-lint (8.4) (push) Successful in 4m56s
Build package / package (push) Successful in 2m28s
Let workflows move cards by start date instead of due date
Each workflow now has a trigger date (due or start): the runner compares
either the card's due date or its start date against now, read straight
from Deck's Card entity. Mails and Nextcloud notifications say whether
the card was overdue or reached its start date. Cards without the chosen
date stay put.

Deck only has a start date since 1.18 and Entity getters are magic, so
DeckIntegrationService::supportsStartdate() checks the property; without
it the form rejects start-date workflows and the runner skips them
without disabling them.

WorkflowRunner::isOverdue() becomes hasPassed(), as it now covers both
dates. Existing workflows keep the due date (migration Version1005).
Bumps to 35.4.0 so the migration runs.
2026-10-01 13:19:32 +02:00

35 lines
1.0 KiB
PHP

<?php
declare(strict_types=1);
namespace OCA\WorkflowDeckAutomation\Service;
/**
* Which of a card's dates moves it — pure logic, no Nextcloud or Deck
* dependencies, so it is unit-testable like NotificationPolicy.
*/
class TriggerDate {
/** Deck's `duedate`: the card is moved once it is overdue. */
public const DUE = 'due';
/** Deck's `startdate`: the card is moved once its start date is reached. */
public const START = 'start';
public const ALL = [self::DUE, self::START];
public static function isValid(string $trigger): bool {
return in_array($trigger, self::ALL, true);
}
/**
* Completes "„<card>“ … %s und wurde … verschoben" — shared by
* NotificationMailer and Notification\Notifier so mail and notification
* give the same reason. An unknown value counts as `due`, the column
* default — the due date was the only trigger before the column existed.
*/
public static function describeReason(string $trigger): string {
return $trigger === self::START
? 'hat ihr Startdatum erreicht'
: 'ist überfällig';
}
}