$data * * @return array */ protected function get_array_arg( string $arg_name, array $data ): array { return key_exists( $arg_name, $data ) && is_array( $data[ $arg_name ] ) ? $data[ $arg_name ] : array(); } /** * @param array $data */ protected function get_int_arg( string $arg_name, array $data ): int { return key_exists( $arg_name, $data ) && is_numeric( $data[ $arg_name ] ) ? (int) $data[ $arg_name ] : 0; } /** * @param array $data */ protected function get_bool_arg( string $arg_name, array $data ): bool { return key_exists( $arg_name, $data ) && // [1] and '1' are allowed values for [true] if we talk about boolean, // e.g. ACF uses [1] it for the 'multiple' attribute of the select field. in_array( $data[ $arg_name ], array( true, 1, '1' ), true ); } /** * @param array $data */ protected function get_int_arg_if_present( string $arg_name, array $data ): ?int { return key_exists( $arg_name, $data ) && is_numeric( $data[ $arg_name ] ) ? (int) $data[ $arg_name ] : null; } /** * @param array $data */ protected function get_string_arg( string $arg_name, array $data ): string { return key_exists( $arg_name, $data ) && ( is_string( $data[ $arg_name ] ) || is_numeric( $data[ $arg_name ] ) ) ? (string) $data[ $arg_name ] : ''; } /** * @param array $data */ protected function get_string_arg_if_present( string $arg_name, array $data ): ?string { return key_exists( $arg_name, $data ) && ( is_string( $data[ $arg_name ] ) || is_numeric( $data[ $arg_name ] ) ) ? (string) $data[ $arg_name ] : null; } /** * @param array $data * * @return array */ protected function get_array_arg_if_present( string $arg_name, array $data ): ?array { return key_exists( $arg_name, $data ) && is_array( $data[ $arg_name ] ) ? $data[ $arg_name ] : null; } /** * @param array $full_array * * @return array */ public static function apply_array_pagination( array $full_array, int $per_page, int $page_number ): array { $count_of_items = count( $full_array ); $from_index = ( $page_number - 1 ) * $per_page; if ( $from_index >= $count_of_items ) { return array(); } $length = $per_page; $to_index = $from_index + $length; $to_index = $to_index > $count_of_items ? $count_of_items : $to_index; return array_slice( $full_array, $from_index, $to_index - $from_index ); } }