<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
<?php
namespace Elementor\Data\V2\Base\Exceptions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Data_Exception extends \Exception {
	protected $custom_data = [
		'code' => '',
		'data' => [],
	];

	public function get_code() {
		return 'reset-http-error';
	}

	public function get_message() {
		return '501 Not Implemented';
	}

	public function get_data() {
		return [
			'status' => $this->get_http_error_code(), // 'status' is used by WP to pass the http error code.
		];
	}

	public function to_wp_error() {
		return new \WP_Error( $this->custom_data['code'], $this->message, $this->custom_data['data'] );
	}

	protected function get_http_error_code() {
		return 501; // 501 Not Implemented
	}

	protected function apply() {}

	public function __construct( $message = '', $code = '', $data = [] ) {
		$this->message = empty( $message ) ? $this->get_message() : $message;
		$this->custom_data['code'] = empty( $code ) ? $this->get_code() : $code;
		$this->custom_data['data'] = empty( $data ) ? $this->get_data() : $data;

		parent::__construct( $this->message, 0, null );

		$this->apply();
	}
}
