settings = $settings;
}
public static function extract_error_message( string $markup ): string {
preg_match( '/(.*)$/', $markup, $error_message );
$error_message = $error_message[1] ?? '';
$error_message = str_replace( '', '', $error_message );
$error_message = trim( $error_message );
return $error_message;
}
protected static function print_error_message( string $unique_view_id, string $error_message ): void {
printf(
'
Advanced Views (%s) template: %s
',
esc_html( $unique_view_id ),
esc_html( $error_message )
);
}
/**
* @param array $args
*/
protected function handle_error(
Throwable $error,
string $template,
array $args,
string $unique_id,
bool $is_validation
): void {
$is_debug_mode = Avf_User::can_manage() &&
$this->settings->is_dev_mode();
$error_message = $error->getMessage();
// the right line number is available only for unminified template (for validation during saving).
if ( $is_validation ) {
$error_message .= ' Line ' . $error->getLine();
} else {
// only real render error should be logged
// (we don't need to log the validation attempts).
$this->logger->warning(
"can't render the template, as it contains an error",
array(
'unique_id' => $unique_id,
'error' => $error_message,
)
);
}
self::print_error_message( $unique_id, $error_message );
// do not include in case of the validation, it doesn't have sense + breaks the error grep regex.
if ( $is_debug_mode &&
! $is_validation ) {
echo '' . esc_html(
// @phpcs:ignore WordPress.PHP.DevelopmentFunctions
print_r(
array(
'template' => $template,
'args' => $args,
),
true
)
) . '
';
}
}
}