$valueParams * @return int */ public function getStatsCount($query, array $valueParams); /** * @param int $sinceTimestamp * @param string $notFoundDest * @return array{ * disp404:int, * distinct404:int, * visitors404:int, * refer404:int, * redirected:int, * distinctredirected:int, * distinctvisitors:int, * distinctrefer:int * } */ public function getPeriodicStatsSummary($sinceTimestamp, $notFoundDest = '404'); /** * @param string $notFoundDest * @return array{ * today:array, * month:array, * year:array, * all:array * } */ public function getPeriodicStatsSummariesCached($notFoundDest = '404'); // ========================================================================= // Dashboard snapshot // ========================================================================= /** * @param bool $allowStale * @return array{refreshed_at:int,hash:string,data:array} */ public function getStatsDashboardSnapshot($allowStale = true); /** * @param bool $force * @return array{refreshed_at:int,hash:string,data:array} */ public function refreshStatsDashboardSnapshot($force = false); // ========================================================================= // Log timestamp // ========================================================================= /** @return int */ public function getEarliestLogTimestamp(); // ========================================================================= // Email digest // ========================================================================= /** * @param int $limit * @return array> */ public function getTopCapturedForDigest(int $limit): array; /** * @param int $limit * @return string */ public function buildTopCapturedForDigestQuery(int $limit): string; /** * @return array{total_captured: int, total_manual: int, total_auto: int} */ public function getDigestSummaryStats(): array; /** @return int */ public function getCapturedCountForNotification(): int; // ========================================================================= // Content keywords (permalink cache) // ========================================================================= /** * @param int $limit * @return array */ public function getPostsNeedingContentKeywords(int $limit = 500): array; /** * @param array $idToKeywords * @return void */ public function bulkUpdateContentKeywords(array $idToKeywords): void; }