Governancemaintenance - Source Excerpt 03
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/spiralist-workspace/includes/Services/GovernanceMaintenance.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/spiralist-workspace/includes/Services/GovernanceMaintenance.php
* Returns the active review summary after appeal-based governance resets.
*
* @param array<string,mixed> $appeal_summary
* @return array<string,mixed>
*/
private function current_review_summary(int $prompt_id, array $appeal_summary): array
{
$since_utc = (string) ($appeal_summary['governance_reset_utc'] ?? '');
return $this->reviews->summary_for_prompt($prompt_id, $since_utc);
}
/**
* Returns a compact stale-review item for maintenance summaries.
*
* @param array<string,mixed> $prompt
* @param array<string,mixed> $governance_summary
* @return array<string,mixed>
*/
private function review_queue_item(array $prompt, array $governance_summary): array
{
$queue_age = is_array($governance_summary['queue_age'] ?? null) ? (array) $governance_summary['queue_age'] : [];
return [
'prompt_id' => (int) ($prompt['id'] ?? 0),
'prompt_title' => (string) ($prompt['title'] ?? ''),
'prompt_slug' => (string) ($prompt['slug'] ?? ''),
'moderation_status' => (string) ($governance_summary['status'] ?? ($prompt['moderation_status'] ?? '')),
'hours_since_activity' => (int) ($queue_age['hours_since_activity'] ?? 0),
'duration_label' => (string) ($queue_age['duration_label'] ?? ''),
'next_action' => (string) ($governance_summary['next_action'] ?? ''),
'next_action_label' => (string) ($governance_summary['next_action_label'] ?? ''),
];
}
/**
* Returns elapsed whole hours from a UTC timestamp string.
*/
private function hours_since(string $utc): int
{
$timestamp = strtotime($utc);
if ($timestamp === false || $timestamp <= 0) {
return 0;
}
return max(0, (int) floor((time() - $timestamp) / HOUR_IN_SECONDS));
}
/**
* Returns a compact duration label.
*/
private function duration_label(int $hours): string
{
if ($hours >= 48) {
$days = (int) floor($hours / 24);
return $days . ' ' . ($days === 1 ? 'day' : 'days');
}
return $hours . ' ' . ($hours === 1 ? 'hour' : 'hours');
}
}