> $rows * @return array> */ public function populateLogsData($rows); /** * Distinct recently-requested URLs from the 404 log table. * * @param int $recentLogWindow Max rows scanned from logsv2 before deduplication. * @param int $distinctUrlCap Max distinct URLs returned. * @return array */ public function getDistinctLoggedUrls( int $recentLogWindow = self::DEFAULT_DISTINCT_RECENT_LOG_WINDOW, int $distinctUrlCap = self::DEFAULT_DISTINCT_URL_CAP ): array; /** * @param string $specificURL * @param array $tableOptions Internal timeout options. * @return array> * @throws ABJ_404_Solution_ViewQueryFailureException When the read is unavailable. */ public function getLogsIDandURL($specificURL = '', array $tableOptions = array()); /** * @param string $specificURL * @param string|int $limitResults * @param array $tableOptions Internal timeout options. * @return array> * @throws ABJ_404_Solution_ViewQueryFailureException When the read is unavailable. */ public function getLogsIDandURLLike($specificURL, $limitResults, array $tableOptions = array()); /** * @param array $tableOptions orderby, paged, perpage, etc. * @return array> */ public function getLogRecords($tableOptions); /** Whether the latest getLogRecords() call returned a compatibility fallback after a failed read. */ public function lastLogRecordsReadWasIncomplete(): bool; /** * @param int $days Number of days (default 30, clamped to 1-90) * @return array> */ public function getDailyActivityTrend(int $days = 30): array; }