public static function init()
    {
        global $wpdb;
        if (!self::$initiated) {
            self::init_hooks();
        }
        if (isset($_GET['news'])) {
            self::ajax_ecalypse_news();
            die;
        }
        // Demo data
        if (isset($_POST['import_demo_data'])) {
            self::import_demo_data();
            self::set_flash_msg('success', __('Demo data was successfully imported.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental'));
            exit;
        }
        $update_db = get_option('carrental_do_database_update');
        if ($update_db && $update_db == 1) {
            CarRental::plugin_activation('carrental_do_database_update');
            update_option('carrental_do_database_update', 0);
            self::set_flash_msg('success', __('Plugin was successfully updated.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-settings'));
            exit;
        }
        //////////
        // AJAX //
        //////////
        if (isset($_GET['get_day_ranges']) && (int) $_GET['get_day_ranges'] > 0) {
            print self::print_pricing_ranges((int) $_GET['get_day_ranges']);
            exit;
        }
        if (isset($_GET['get_onetime_price']) && (int) $_GET['get_onetime_price'] > 0) {
            print self::print_onetime_price((int) $_GET['get_onetime_price']);
            exit;
        }
        if (isset($_GET['get_extras_price_schemes']) && (int) $_GET['get_extras_price_schemes'] > 0) {
            print self::print_price_schemes('extras', (int) $_GET['get_extras_price_schemes']);
            // id_extras
            exit;
        }
        if (isset($_GET['get_fleet_price_schemes']) && (int) $_GET['get_fleet_price_schemes'] > 0) {
            print self::print_price_schemes('fleet', (int) $_GET['get_fleet_price_schemes']);
            // id_extras
            exit;
        }
        if (isset($_POST['send_test_email'])) {
            print self::send_test_email();
            exit;
        }
        ////////////////
        // NEWSLETTER //
        ////////////////
        // BULK DELETE
        if (isset($_POST['batch_delete_newsletter']) && !empty($_POST['batch_processing_values'])) {
            $bookings = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($bookings as $id_booking) {
                $ret = self::remove_newsletter((int) $id_booking);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_booking . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_booking . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Emails was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-newsletter'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Emails was not deleted due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-newsletter'));
                exit;
            }
        }
        if (isset($_GET['carrental-newsletter-export'])) {
            self::newsletter_export($_GET['carrental-newsletter-export']);
        }
        //////////////
        // SETTINGS //
        //////////////
        if (isset($_POST['edit_settings'])) {
            $msg = self::update_settings();
            if ($msg === true) {
                self::set_flash_msg('success', __('Settings was successfully saved.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Settings was not saved due to error  (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            }
        }
        if (isset($_POST['edit_company_info'])) {
            $msg = self::update_company_info();
            if ($msg === true) {
                self::set_flash_msg('success', __('Company info was successfully saved.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Company info was not saved due to error  (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            }
        }
        if (isset($_POST['update_vehicle_categories'])) {
            $msg = self::update_vehicle_categories();
            if ($msg === true) {
                self::set_flash_msg('success', __('Vehicle Categories was successfully saved.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings') . '#vehicle-categories');
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Vehicle Categories was not saved due to error  (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings') . '#vehicle-categories');
                exit;
            }
        }
        if (isset($_POST['add_vehicle_category'])) {
            $msg = self::add_vehicle_category();
            if ($msg === true) {
                self::set_flash_msg('success', __('Vehicle Category was successfully added.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings') . '#vehicle-categories');
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Vehicle Category was not added due to error  (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings') . '#vehicle-categories');
                exit;
            }
        }
        if (isset($_POST['save_reservation_inputs'])) {
            $inputs = array();
            $inputs_list = array('company' => 'Company', 'vat' => 'VAT', 'flight' => 'Flight number', 'license' => 'License number', 'id_card' => 'ID / Passport number', 'partner_code' => 'Partner code');
            foreach ($inputs_list as $k => $v) {
                if (!isset($_POST['carrental_inputs'][$k])) {
                    $inputs[$k] = 1;
                }
            }
            update_option('carrental_reservation_inputs', serialize($inputs));
            $msg = true;
            if ($msg === true) {
                self::set_flash_msg('success', __('Reservation inputs was successfully updated.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings') . '#reservation-inputs');
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Reservation inputs was not updated due to error  (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings') . '#reservation-inputs');
                exit;
            }
        }
        if (isset($_POST['save_holidays'])) {
            $holidays = array();
            if (isset($_POST['carrental_holidays'])) {
                foreach ($_POST['carrental_holidays'] as $date) {
                    $holidays[$date] = $date;
                }
            }
            $msg = true;
            update_option('carrental_holidays', serialize($holidays));
            if ($msg === true) {
                self::set_flash_msg('success', __('Holidays was successfully updated.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings') . '#holidays');
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Holidays was not updated due to error  (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings') . '#holidays');
                exit;
            }
        }
        if (isset($_POST['save_min_booking_time'])) {
            $min_rent_times = array();
            if (isset($_POST['minimum_rental_time']) && is_array($_POST['minimum_rental_time'])) {
                foreach ($_POST['minimum_rental_time'] as $month => $value) {
                    $min_rent_times[$month] = (int) $value > 31 ? 31 : ((int) $value < 0 ? 0 : (int) $value);
                }
            }
            update_option('carrental_minimum_rental_time', serialize($min_rent_times));
            self::set_flash_msg('success', __('Minimum booking time per month successfully saved.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-settings') . '#min-booking-time');
            exit;
        }
        if (isset($_POST['replace_price_scheme']) && (int) $_POST['price_scheme_original'] > 0 && (int) $_POST['price_scheme_new'] > 0) {
            $msg = self::replace_price_scheme((int) $_POST['price_scheme_original'], (int) $_POST['price_scheme_new']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Price scheme was successfully replaced.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Price scheme was not replaced due to error  (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            }
        }
        if (isset($_POST['save_smtp_settings'])) {
            $msg = self::update_smtp_settings();
            if ($msg === true) {
                self::set_flash_msg('success', __('SMTP Settings was successfully replaced.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('SMTP Settings was not replaced due to error  (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            }
        }
        if (isset($_POST['save_api_key']) && !empty($_POST['api_key'])) {
            $msg = self::update_api_key();
            if ($msg === true) {
                self::set_flash_msg('success', __('API key was successfully updated.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('API key was not updated due to error  (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            }
        }
        if (isset($_POST['check_plugin_update'])) {
            $msg = self::check_plugin_update();
            if ($msg === true) {
                self::set_flash_msg('success', __('Plugin updates was successfully checked.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Plugin updates was not checked due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            }
        }
        if (isset($_POST['export_database'])) {
            $sql = self::export_database();
            $fileName = 'car_rental_plugin_db_' . Date('Y-m-d') . '.sql';
            header('Content-Type: application/octet-stream');
            header("Content-Transfer-Encoding: Binary");
            header("Content-disposition: attachment; filename=\"" . $fileName . "\"");
            echo $sql;
            exit;
        }
        if (isset($_POST['plugin_update'])) {
            $msg = self::process_plugin_update();
            if ($msg === true) {
                self::set_flash_msg('success', __('Plugin was successfully updated.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Plugin was not updated due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-settings'));
                exit;
            }
        }
        //////////////
        // BRANCHES //
        //////////////
        // ADD / MODIFY
        if (isset($_POST['add_branch'])) {
            $msg = self::add_branch();
            if ($msg === true) {
                self::set_flash_msg('success', isset($_POST['id_branch']) ? __('Branch was successfully modified.', 'carrental') : __('New branch was successfully added.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            } else {
                self::set_flash_msg('danger', isset($_POST['id_branch']) ? sprintf(__('Branch was not modified due to error (%s).', 'carrental'), $msg) : sprintf(__('New branch was not added due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            }
        }
        // COPY
        if (isset($_POST['copy_branch']) && !empty($_POST['id_branch'])) {
            $msg = self::copy_branch((int) $_POST['id_branch']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Branch was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Branch was not copied due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            }
        }
        // BULK COPY
        if (isset($_POST['batch_copy_branch']) && !empty($_POST['batch_processing_values'])) {
            $branches = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($branches as $id_branch) {
                $ret = self::copy_branch((int) $id_branch);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_branch . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_branch . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Branches was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Branches was not copied due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            }
        }
        // DELETE
        if (isset($_POST['delete_branch']) && !empty($_POST['id_branch'])) {
            $msg = self::delete_branch((int) $_POST['id_branch']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Branch was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Branch was not deleted due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            }
        }
        // BULK DELETE
        if (isset($_POST['batch_delete_branch']) && !empty($_POST['batch_processing_values'])) {
            $branches = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($branches as $id_branch) {
                $ret = self::delete_branch((int) $id_branch);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_branch . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_branch . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Branches was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Branches was not deleted due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            }
        }
        // RESTORE
        if (isset($_POST['restore_branch']) && !empty($_POST['id_branch'])) {
            $msg = self::restore_branch((int) $_POST['id_branch']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Branch was successfully restored.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Branch was not restored due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-branches'));
                exit;
            }
        }
        ////////////
        // EXTRAS //
        ////////////
        // ADD / MODIFY
        if (isset($_POST['add_extras'])) {
            $msg = self::add_extras();
            if ($msg === true) {
                self::set_flash_msg('success', isset($_POST['id_extras']) ? __('Item was successfully modified.', 'carrental') : __('New item was successfully added.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            } else {
                self::set_flash_msg('danger', isset($_POST['id_extras']) ? sprintf(__('Item was not modified due to error (%s).', 'carrental'), $msg) : sprintf(__('New item was not added due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            }
        }
        // COPY
        if (isset($_POST['copy_extras']) && !empty($_POST['id_extras'])) {
            $msg = self::copy_extras((int) $_POST['id_extras']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Item was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Item was not copied due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            }
        }
        // BULK COPY
        if (isset($_POST['batch_copy_extras']) && !empty($_POST['batch_processing_values'])) {
            $extras = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($extras as $id_extras) {
                $ret = self::copy_extras((int) $id_extras);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_extras . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_extras . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Items was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Items was not copied due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            }
        }
        // DELETE
        if (isset($_POST['delete_extras']) && !empty($_POST['id_extras'])) {
            $msg = self::delete_extras((int) $_POST['id_extras']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Item was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Item was not deleted due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            }
        }
        // BULK DELETE
        if (isset($_POST['batch_delete_extras']) && !empty($_POST['batch_processing_values'])) {
            $extras = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($extras as $id_extras) {
                $ret = self::delete_extras((int) $id_extras);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_extras . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_extras . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Items was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Items was not deleted due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            }
        }
        // RESTORE
        if (isset($_POST['restore_extras']) && !empty($_POST['id_extras'])) {
            $msg = self::restore_extras((int) $_POST['id_extras']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Item was successfully restored.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Item was not restored due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-extras'));
                exit;
            }
        }
        ///////////
        // FLEET //
        ///////////
        // ADD / MODIFY
        if (isset($_POST['add_fleet'])) {
            $msg = self::add_fleet();
            if ($msg === true) {
                self::set_flash_msg('success', isset($_POST['id_fleet']) ? __('Vehicle was successfully modified.', 'carrental') : __('New vehicle was successfully added.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            } else {
                self::set_flash_msg('danger', isset($_POST['id_fleet']) ? sprintf(__('Vehicle was not modified due to error (%s).', 'carrental'), $msg) : sprintf(__('New vehicle was not added due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            }
        }
        // COPY
        if (isset($_POST['copy_fleet']) && !empty($_POST['id_fleet'])) {
            $msg = self::copy_fleet((int) $_POST['id_fleet']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Vehicle was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Vehicle was not copied due to error (%s).", 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            }
        }
        // RESTORE
        if (isset($_POST['restore_fleet']) && !empty($_POST['id_fleet'])) {
            $msg = self::restore_fleet((int) $_POST['id_fleet']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Vehicle was successfully restored.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Vehicle was not restored due to error (%s).", 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            }
        }
        // BULK COPY
        if (isset($_POST['batch_copy_fleet']) && !empty($_POST['batch_processing_values'])) {
            $vehicles = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($vehicles as $id_fleet) {
                $ret = self::copy_fleet((int) $id_fleet);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_fleet . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_fleet . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Vehicles was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Vehicles was not copied due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            }
        }
        // DELETE
        if (isset($_POST['delete_fleet']) && !empty($_POST['id_fleet'])) {
            $msg = self::delete_fleet((int) $_POST['id_fleet']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Vehicle was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Vehicle was not deleted due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            }
        }
        // BULK DELETE
        if (isset($_POST['batch_delete_fleet']) && !empty($_POST['batch_processing_values'])) {
            $vehicles = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($vehicles as $id_fleet) {
                $ret = self::delete_fleet((int) $id_fleet);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_fleet . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_fleet . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Vehicles was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Vehicles was not deleted due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-fleet'));
                exit;
            }
        }
        // DELETE FROM DATABASE
        if (isset($_POST['batch_delete_db_fleet']) && !empty($_POST['batch_processing_values'])) {
            $vehicles = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($vehicles as $id_fleet) {
                $ret = self::delete_fleet_from_db((int) $id_fleet);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_fleet . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_fleet . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Vehicles was successfully deleted from database.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet') . '&deleted');
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Vehicles was not deleted from database due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-fleet') . '&deleted');
                exit;
            }
        }
        ///////////
        // FLEET PARAMETERS //
        ///////////
        // ADD / MODIFY
        if (isset($_POST['add_fleet_parameter'])) {
            $msg = self::add_fleet_parameter();
            if ($msg === true) {
                self::set_flash_msg('success', isset($_POST['id_fleet_parameter']) ? __('Parameter was successfully modified.', 'carrental') : __('New parameter was successfully added.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet-parameters'));
                exit;
            } else {
                self::set_flash_msg('danger', isset($_POST['id_fleet_parameter']) ? sprintf(__('Parameter was not modified due to error (%s).', 'carrental'), $msg) : sprintf(__('New parameter was not added due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-fleet-parameters'));
                exit;
            }
        }
        // COPY
        if (isset($_POST['copy_fleet_parameter']) && !empty($_POST['id_fleet_parameter'])) {
            $msg = self::copy_fleet_parameter((int) $_POST['id_fleet_parameter']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Parameter was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet-parameters'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Parameter was not copied due to error (%s).", 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-fleet-parameters'));
                exit;
            }
        }
        // DELETE
        if (isset($_POST['delete_fleet_parameter']) && !empty($_POST['id_fleet_parameter'])) {
            $msg = self::delete_fleet_parameter((int) $_POST['id_fleet_parameter']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Parameter was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-fleet-parameters'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Parameter was not deleted due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-fleet-parameters'));
                exit;
            }
        }
        /////////////
        // PRICING //
        /////////////
        // ADD / MODIFY
        if (isset($_POST['add_pricing'])) {
            $msg = self::add_pricing();
            if ($msg === true) {
                self::set_flash_msg('success', isset($_POST['id_pricing']) ? __('Price scheme was successfully modified.', 'carrental') : __('New price scheme was successfully added.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            } else {
                self::set_flash_msg('danger', isset($_POST['id_pricing']) ? sprintf(__('Price scheme was not modified due to error (%s).', 'carrental'), $msg) : sprintf(__('New price scheme was not added due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            }
        }
        // COPY
        if (isset($_POST['copy_pricing']) && !empty($_POST['id_pricing'])) {
            $msg = self::copy_pricing((int) $_POST['id_pricing']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Price scheme was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Price scheme was not copied due to error (%s).", 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            }
        }
        // BULK COPY
        if (isset($_POST['batch_copy_pricing']) && !empty($_POST['batch_processing_values'])) {
            $pricing = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($pricing as $id_pricing) {
                $ret = self::copy_pricing((int) $id_pricing);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_pricing . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_pricing . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Pricing schemes was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Pricing schemes was not copied due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            }
        }
        // DELETE
        if (isset($_POST['delete_pricing']) && !empty($_POST['id_pricing'])) {
            $msg = self::delete_pricing((int) $_POST['id_pricing']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Price scheme was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Price scheme was not deleted due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            }
        }
        // BULK DELETE
        if (isset($_POST['batch_delete_pricing']) && !empty($_POST['batch_processing_values_delete'])) {
            $pricing = explode(',', $_POST['batch_processing_values_delete']);
            $report = $msg = array();
            foreach ($pricing as $id_pricing) {
                $ret = self::delete_pricing((int) $id_pricing);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_pricing . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_pricing . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Pricing schemes was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Pricing schemes was not deleted due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            }
        }
        // RESTORE
        if (isset($_POST['restore_pricing']) && !empty($_POST['id_pricing'])) {
            $msg = self::restore_pricing((int) $_POST['id_pricing']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Price scheme was successfully restored.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Price scheme was not restored due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-pricing'));
                exit;
            }
        }
        /////////////
        // BOOKING //
        /////////////
        // ADD / MODIFY
        if (isset($_POST['add_booking']) || isset($_POST['add_booking_emails'])) {
            $msg = self::add_booking();
            if ($msg === true) {
                self::set_flash_msg('success', isset($_POST['id_booking']) ? __('Booking was successfully modified.', 'carrental') : __('New booking was successfully added.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            } else {
                self::set_flash_msg('danger', isset($_POST['id_booking']) ? sprintf(__('Booking was not modified due to error (%s).', 'carrental'), $msg) : sprintf(__('New booking was not added due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            }
        }
        // COPY
        if (isset($_POST['copy_booking']) && !empty($_POST['id_booking'])) {
            $msg = self::copy_booking((int) $_POST['id_booking']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Booking was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Booking was not copied due to error (%s).", 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            }
        }
        // RESEND CONFIRMATION EMAIL
        if (isset($_POST['resend_email']) && !empty($_POST['id_booking'])) {
            $msg = self::resend_email((int) $_POST['id_booking']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Email was successfully sent.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Email was not sent due to error (%s).", 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            }
        }
        // BULK COPY
        if (isset($_POST['batch_copy_booking']) && !empty($_POST['batch_processing_values'])) {
            $booking = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($booking as $id_booking) {
                $ret = self::copy_booking((int) $id_booking);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_booking . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_booking . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Bookings was successfully copied.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Bookings was not copied due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            }
        }
        // DELETE
        if (isset($_POST['delete_booking']) && !empty($_POST['id_booking'])) {
            $msg = self::delete_booking((int) $_POST['id_booking']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Booking was successfully archived.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Booking was not archived due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            }
        }
        // BULK DELETE
        if (isset($_POST['batch_delete_booking']) && !empty($_POST['batch_processing_values'])) {
            $booking = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($booking as $id_booking) {
                $ret = self::delete_booking_total((int) $id_booking);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_booking . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_booking . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Bookings was successfully deleted.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Bookings was not deleted due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            }
        }
        // BULK ARCHIVE
        if (isset($_POST['batch_archive_booking']) && !empty($_POST['batch_processing_values'])) {
            $booking = explode(',', $_POST['batch_processing_values']);
            $report = $msg = array();
            foreach ($booking as $id_booking) {
                $ret = self::delete_booking((int) $id_booking);
                if ($ret === true) {
                    $report[] = 'ok';
                    $msg[] = (int) $id_booking . ' - ok';
                } else {
                    $report[] = 'error';
                    $msg[] = (int) $id_booking . ' - error';
                }
            }
            if (!in_array('error', $report)) {
                self::set_flash_msg('success', __('Bookings was successfully archived.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__("Bookings was not archived due to error (%s).", 'carrental'), implode(', ', $msg)));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            }
        }
        // RESTORE
        if (isset($_POST['restore_booking']) && !empty($_POST['id_booking'])) {
            $msg = self::restore_booking((int) $_POST['id_booking']);
            if ($msg === true) {
                self::set_flash_msg('success', __('Booking was successfully restored.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            } else {
                self::set_flash_msg('danger', sprintf(__('Booking was not restored due to error (%s).', 'carrental'), $msg));
                Header('Location: ' . self::get_page_url('carrental-booking'));
                exit;
            }
        }
        //////////////
        // LANGUAGE //
        //////////////
        if (isset($_POST['add_language']) && !empty($_POST['language'])) {
            include dirname(realpath(__FILE__)) . '/languages.php';
            $available_languages = unserialize(get_option('carrental_available_languages'));
            if (empty($available_languages)) {
                $available_languages = array();
            }
            if (isset($languages[$_POST['language']])) {
                $available_languages[$_POST['language']] = $languages[$_POST['language']];
                update_option('carrental_available_languages', serialize($available_languages));
                $available_languages = unserialize(get_option('carrental_available_languages'));
                $email_body = get_option('carrental_reservation_email_' . $_POST['language']);
                if (empty($email_body)) {
                    $email_body = 'Dear [CustomerName],

thank you for your reservation. Here are your reservation details:
[ReservationDetails]
[ReservationNumber]

You can return to your reservation summary page anytime by going to this link:
[ReservationLink]

We are also sending this information to the email address you have provided.

If you would like to change the reservation details, you can do so by calling our office at:
+123 456 789 or by email example@example.org

[ReservationLinkStart]Click here[ReservationLinkEnd] to print your reservation - takes them to reservation summary print out.

Thank you for your business!';
                    update_option('carrental_reservation_email_' . $_POST['language'], $email_body);
                }
                self::set_flash_msg('success', __('Language was successfully added.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-translations'));
                exit;
            }
        }
        if (isset($_POST['primary_language']) && !empty($_POST['language'])) {
            update_option('carrental_primary_language', $_POST['language']);
            self::set_flash_msg('success', __('Primary language was successfully updated.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-translations'));
            exit;
        }
        if (isset($_POST['disable_language']) && !empty($_POST['language'])) {
            $available_languages = unserialize(get_option('carrental_available_languages'));
            if (empty($available_languages)) {
                $available_languages = array();
            }
            if (isset($available_languages[$_POST['language']])) {
                unset($available_languages[$_POST['language']]);
                update_option('carrental_available_languages', serialize($available_languages));
                self::set_flash_msg('success', __('Language was successfully disabled.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-translations'));
                exit;
            }
        }
        if (isset($_POST['deactivate_language']) && !empty($_POST['language'])) {
            $available_languages = unserialize(get_option('carrental_available_languages'));
            if (empty($available_languages)) {
                $available_languages = array();
            }
            if (isset($available_languages[$_POST['language']])) {
                $available_languages[$_POST['language']]['active'] = false;
                update_option('carrental_available_languages', serialize($available_languages));
                self::set_flash_msg('success', __('Language was successfully deactivated.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
                exit;
            }
        }
        if (isset($_POST['activate_language']) && !empty($_POST['language'])) {
            $available_languages = unserialize(get_option('carrental_available_languages'));
            if (empty($available_languages)) {
                $available_languages = array();
            }
            if (isset($available_languages[$_POST['language']])) {
                $available_languages[$_POST['language']]['active'] = true;
                update_option('carrental_available_languages', serialize($available_languages));
                self::set_flash_msg('success', __('Language was successfully activated.', 'carrental'));
                Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
                exit;
            }
        }
        if (isset($_POST['language_save_email']) && !empty($_POST['language'])) {
            update_option('carrental_reservation_email_' . $_POST['language'], $_POST['reservation_email']);
            update_option('carrental_reservation_email_subject_' . $_POST['language'], $_POST['reservation_email_subject']);
            self::set_flash_msg('success', __('E-mail was successfully updated.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
            exit;
        }
        if (isset($_POST['language_save_email_reminder']) && !empty($_POST['language'])) {
            update_option('carrental_reminder_email_' . $_POST['language'], $_POST['reminder_email']);
            update_option('carrental_reminder_subject_' . $_POST['language'], $_POST['reminder_subject']);
            self::set_flash_msg('success', __('Automatic reminder e-mail was successfully updated.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
            exit;
        }
        if (isset($_POST['language_save_email_thank_you']) && !empty($_POST['language'])) {
            update_option('carrental_thank_you_email_' . $_POST['language'], $_POST['thank_you_email']);
            update_option('carrental_thank_you_email_subject_' . $_POST['language'], $_POST['thank_you_email_subject']);
            self::set_flash_msg('success', __('Thank you email was successfully updated.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
            exit;
        }
        if (isset($_POST['language_save_email_status_pending_other']) && !empty($_POST['language'])) {
            update_option('carrental_email_status_pending_other_' . $_POST['language'], $_POST['email_status_pending_other']);
            update_option('carrental_email_status_pending_other_subject_' . $_POST['language'], $_POST['email_status_pending_other_subject']);
            self::set_flash_msg('success', __('E-mail for status "pending other" was successfully updated.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
            exit;
        }
        if (isset($_POST['language_save_email_status_pending']) && !empty($_POST['language'])) {
            update_option('carrental_email_status_pending_' . $_POST['language'], $_POST['email_status_pending']);
            update_option('carrental_email_status_pending_subject_' . $_POST['language'], $_POST['email_status_pending_subject']);
            self::set_flash_msg('success', __('E-mail for status "pending payment" was successfully updated.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
            exit;
        }
        if (isset($_POST['language_save_terms']) && !empty($_POST['language'])) {
            update_option('carrental_terms_conditions_' . $_POST['language'], $_POST['terms_conditions']);
            self::set_flash_msg('success', __('Terms and Conditions was successfully updated.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
            exit;
        }
        if (isset($_POST['language_save_theme_translations']) && !empty($_POST['language'])) {
            self::update_theme_translations($_POST['language'], $_POST['translation']);
            unset($_SESSION['carrental_translations']);
            self::set_flash_msg('success', __('Translations was successfully updated.', 'carrental'));
            Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
            exit;
        }
        // Import language
        if (isset($_POST['import_language'])) {
            $msg = self::import_language();
            if ($msg === true) {
                self::set_flash_msg('success', 'Language file successfully imported.');
                Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
                exit;
            } else {
                self::set_flash_msg('danger', sprintf('Language was not imported due to error (%s).', $msg));
                Header('Location: ' . self::get_page_url('carrental-translations') . '&language=' . $_POST['language']);
                exit;
            }
        }
        // Export language
        if (isset($_POST['export_language'])) {
            self::export_language();
            exit;
        }
    }