$e) { if ($e['kind'] === $kind && $e['day'] === $day) { $log[$i]['count'] = (int) $e['count'] + (int) $count; $log[$i]['ts'] = time(); $log[$i]['message'] = (string) $message; update_option(CITAMI_ACTIVITY_OPT, $log, false); return $log[$i]; } } } $entry = array('kind' => $kind, 'message' => mb_substr((string) $message, 0, 200), 'count' => max(1, (int) $count), 'ts' => time(), 'day' => $day, 'meta' => $meta); array_unshift($log, $entry); update_option(CITAMI_ACTIVITY_OPT, array_slice($log, 0, CITAMI_ACTIVITY_MAX), false); return $entry; } /** Newest first, sorted by last update. */ function citami_activity_recent($limit = 10) { $log = citami_activity_all(); usort($log, function ($a, $b) { return (int) $b['ts'] <=> (int) $a['ts']; }); return array_slice($log, 0, $limit); } /** Human line for an entry: "12 URL inviati a IndexNow". */ function citami_activity_label(array $e) { $n = (int) $e['count']; switch ($e['kind']) { case 'indexnow': return sprintf(citami_t('%d URL inviati a IndexNow', '%d URLs sent to IndexNow'), $n); case 'alt': return sprintf(citami_t('%d alt generati per le immagini', '%d image alt texts generated'), $n); case 'redirect_served': return sprintf(citami_t('%d richieste di URL inventati reindirizzate', '%d requests for invented URLs redirected'), $n); default: return (string) $e['message']; } } /** Today's counters for the Overview: what happened without anyone clicking. */ function citami_activity_today() { $day = function_exists('wp_date') ? wp_date('Y-m-d') : gmdate('Y-m-d'); $out = array('actions' => 0, 'indexnow' => 0, 'alt' => 0, 'redirect_served' => 0, 'links' => 0, 'redirects' => 0, 'fixes' => 0); foreach (citami_activity_all() as $e) { if ($e['day'] !== $day) { continue; } $out['actions'] += (int) $e['count']; if (isset($out[$e['kind']])) { $out[$e['kind']] += (int) $e['count']; } elseif ($e['kind'] === 'link') { $out['links'] += (int) $e['count']; } elseif ($e['kind'] === 'redirect') { $out['redirects'] += (int) $e['count']; } elseif ($e['kind'] === 'fix') { $out['fixes'] += (int) $e['count']; } } return $out; } // --- sources: the silent work reports here --- add_action('citami_indexnow_submitted', function ($n) { citami_activity_log('indexnow', 'IndexNow', (int) $n); }); add_action('citami_alt_generated', function ($n) { citami_activity_log('alt', 'alt', (int) $n); }); add_action('citami_ai_404_redirected', function () { citami_activity_log('redirect_served', 'redirect', 1); }); add_action('citami_fix_applied', function ($fix_type, $title) { citami_activity_log('fix', sprintf(citami_t('Fix applicato dalla piattaforma: %s', 'Fix applied from the platform: %s'), (string) $title), 1, array('fix_type' => (string) $fix_type)); }, 10, 2);