Registry::int_param( $params, 'limit', 25, 1, 100 ), 'offset' => Registry::int_param( $params, 'offset', 0, 0, 10000 ), 'since_minutes' => Registry::int_param( $params, 'since_minutes', 10080, 1, 43200 ), ); } public function execute( array $params, float $deadline ): array { $list = get_option( ChangeHooks::OPTION_LOCAL_CHANGES, array() ); $list = is_array( $list ) ? $list : array(); $since = time() - $params['since_minutes'] * 60; $items = array_values( array_filter( $list, static fn( mixed $e ): bool => is_array( $e ) && (int) ( $e['at'] ?? 0 ) >= $since ) ); usort( $items, static fn( array $a, array $b ): int => (int) $b['at'] <=> (int) $a['at'] ); $page = array_slice( $items, $params['offset'], $params['limit'] ); foreach ( $page as &$e ) { $e['at'] = gmdate( 'Y-m-d\TH:i:s\Z', (int) $e['at'] ); } return array( 'items' => $page, 'total' => count( $items ) ); } }