> $rows * @return array> */ public function populateLogsData($rows); /** * @return array */ public function getDistinctLoggedUrls(): array; /** * @param string $specificURL * @return array> */ public function getLogsIDandURL($specificURL = ''); /** * @param string $specificURL * @param string|int $limitResults * @return array> */ public function getLogsIDandURLLike($specificURL, $limitResults); /** * @param array $tableOptions orderby, paged, perpage, etc. * @return array> */ public function getLogRecords($tableOptions); /** * @param int $days Number of days (default 30, clamped to 1-90) * @return array> */ public function getDailyActivityTrend(int $days = 30): array; // ========================================================================= // GDPR / privacy (from DataAccessTrait_Logs) // ========================================================================= /** * @param string $lkupValue * @param int $page * @param int $perPage * @return int[] */ public function getLogsv2IdsForLookupValue($lkupValue, $page = 1, $perPage = 100); /** * @param string $lkupValue * @param int $page * @param int $perPage * @return array> */ public function getLogsv2RowsForLookupValue($lkupValue, $page = 1, $perPage = 50); /** * @param int[] $ids * @return bool */ public function anonymizeLogsv2RowsByIds($ids); // ========================================================================= // Log insertion and queue (from DataAccessTrait_Logs) // ========================================================================= /** * @param string $requested_url * @param string $action * @param string $matchReason * @param string|null $requestedURLDetail * @param list|null $pipelineTrace * @return void */ public function logRedirectHit(string $requested_url, string $action, string $matchReason, ?string $requestedURLDetail = null, ?array $pipelineTrace = null): void; /** * @param array $entry * @return void */ public function queueLogEntry(array $entry): void; /** @return void */ public function flushLogQueue(): void; // ========================================================================= // Lookup table (from DataAccessTrait_Logs) // ========================================================================= /** * @param string $valueToInsert * @return int */ public function insertLookupValueAndGetID($valueToInsert); /** * @param string $userName * @return int */ public function getLookupIDForUser($userName); /** @return void */ public function correctDuplicateLookupValues(): void; // ========================================================================= // Pipeline trace (from DataAccessTrait_Logs, static) // ========================================================================= /** * @param string|null $raw * @return array|null */ public static function decompressPipelineTrace(?string $raw): ?array; // ========================================================================= // Hits table rebuild (from DataAccessTrait_LogsHitsRebuild) // ========================================================================= /** @return void */ public function recordLogsHitsRollupStalenessSignal(): void; /** @return bool */ public function hitsTableNeedsRebuild(); /** * @return int|null Unix timestamp of last update, or null if table doesn't exist */ public function getLogsHitsTableLastUpdated(); /** @return string */ public function getLogsHitsTableLastUpdatedHuman(); /** @return bool */ public function createRedirectsForViewHitsTable(): bool; // ========================================================================= // Hits table lifecycle (from DataAccessTrait_ViewQueriesHitsLifecycle) // ========================================================================= /** @return bool */ public function logsHitsTableExists(); /** @return void */ public function scheduleHitsTableRebuild(): void; /** @return int */ public function getMaxLogId(); /** @return int */ public function getMinLogId(); /** @return int */ public function getStoredMaxLogId(); /** @return int|null */ public function getLogsHitsTableLastCheckedAt(); /** @return int|null */ public function getLogsHitsTableLastScheduledAt(); /** @return string */ public function getLogsHitsTableLastDecision(): string; }