Skip to content
wiki.fftac.org

Governancemaintenance - Source Excerpt 03

Back to Governancemaintenance

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');
    }
}