diff --git a/admin/class-bread-admin.php b/admin/class-bread-admin.php
index cb8ef41..a0bb4c7 100644
--- a/admin/class-bread-admin.php
+++ b/admin/class-bread-admin.php
@@ -542,4 +542,161 @@ function pwsix_process_settings_admin()
$this->bread->getConfigurationForSettingId($id);
}
}
+ function process_customize_form()
+ {
+ $this->bread->getConfigurationForSettingId($this->bread->getRequestedSetting());
+ if (!isset($_POST['bmltmeetinglistsave'])) {
+ $_POST['bmltmeetinglistsave'] = false;
+ }
+ if (!isset($_POST['bmltmeetinglistpreview'])) {
+ $_POST['bmltmeetinglistpreview'] = false;
+ }
+ if ($_POST['bmltmeetinglistsave'] || $_POST['bmltmeetinglistpreview']) {
+ if (!wp_verify_nonce($_POST['_wpnonce'], 'bmltmeetinglistupdate-options')) {
+ die('Whoops! There was a problem with the data you posted. Please go back and try again.');
+ }
+ $this->bread->setOption('bread_version', sanitize_text_field($_POST['bread_version']));
+ $this->bread->setOption('front_page_content', wp_kses_post($_POST['front_page_content']));
+ $this->bread->setOption('front_page_line_height', $_POST['front_page_line_height']);
+ $this->bread->setOption('front_page_font_size', floatval($_POST['front_page_font_size']));
+ $this->bread->setOption('content_font_size', floatval($_POST['content_font_size']));
+ $this->bread->setOption('suppress_heading', floatval($_POST['suppress_heading']));
+ $this->bread->setOption('header_font_size', floatval($_POST['header_font_size']));
+ $this->bread->setOption('header_text_color', sanitize_hex_color($_POST['header_text_color']));
+ $this->bread->setOption('header_background_color', sanitize_hex_color($_POST['header_background_color']));
+ $this->bread->setOption('header_uppercase', intval($_POST['header_uppercase']));
+ $this->bread->setOption('header_bold', intval($_POST['header_bold']));
+ $this->bread->setOption('sub_header_shown', sanitize_text_field($_POST['sub_header_shown']));
+ $this->bread->setOption('cont_header_shown', intval($_POST['cont_header_shown']));
+ $this->bread->setOption(
+ 'column_gap',
+ isset($_POST['column_gap']) ?
+ intval($_POST['column_gap']) : 5
+ );
+ $this->bread->setOption('margin_right', intval($_POST['margin_right']));
+ $this->bread->setOption('margin_left', intval($_POST['margin_left']));
+ $this->bread->setOption('margin_bottom', intval($_POST['margin_bottom']));
+ $this->bread->setOption('margin_top', intval($_POST['margin_top']));
+ $this->bread->setOption('margin_header', intval($_POST['margin_header']));
+ $this->bread->setOption(
+ 'margin_footer',
+ isset($_POST['margin_footer']) ?
+ intval($_POST['margin_footer']) : 5
+ );
+ $this->bread->setOption('pageheader_fontsize', floatval($_POST['pageheader_fontsize']));
+ $this->bread->setOption('pageheader_textcolor', sanitize_hex_color($_POST['pageheader_textcolor']));
+ $this->bread->setOption('pageheader_backgroundcolor', sanitize_hex_color($_POST['pageheader_backgroundcolor']));
+ $this->bread->setOption('pageheader_content', wp_kses_post($_POST['pageheader_content']));
+ $this->bread->setOption('watermark', sanitize_text_field($_POST['watermark']));
+ $this->bread->setOption('page_size', sanitize_text_field($_POST['page_size']));
+ $this->bread->setOption('page_orientation', sanitize_text_field($_POST['page_orientation']));
+ $this->bread->setOption('page_fold', sanitize_text_field($_POST['page_fold']));
+ $this->bread->setOption(
+ 'booklet_pages',
+ isset($_POST['booklet_pages']) ?
+ boolval($_POST['booklet_pages']) : false
+ );
+ $this->bread->setOption('meeting_sort', sanitize_text_field($_POST['meeting_sort']));
+ $this->bread->setOption('main_grouping', sanitize_text_field($_POST['main_grouping']));
+ $this->bread->setOption('subgrouping', sanitize_text_field($_POST['subgrouping']));
+ $this->bread->setOption('borough_suffix', sanitize_text_field($_POST['borough_suffix']));
+ $this->bread->setOption('county_suffix', sanitize_text_field($_POST['county_suffix']));
+ $this->bread->setOption('neighborhood_suffix', sanitize_text_field($_POST['neighborhood_suffix']));
+ $this->bread->setOption('city_suffix', sanitize_text_field($_POST['city_suffix']));
+ $this->bread->setOption('meeting_template_content', wp_kses_post($_POST['meeting_template_content']));
+ $this->bread->setOption('additional_list_template_content', wp_kses_post($_POST['additional_list_template_content']));
+ $this->bread->setOption(
+ 'column_line',
+ isset($_POST['column_line']) ?
+ boolval($_POST['column_line']) : 0
+ );
+ $this->bread->setOption(
+ 'col_color',
+ isset($_POST['col_color']) ?
+ sanitize_hex_color($_POST['col_color']) : '#bfbfbf'
+ );
+ $this->bread->setOption('custom_section_content', wp_kses_post($_POST['custom_section_content']));
+ $this->bread->setOption('custom_section_line_height', floatval($_POST['custom_section_line_height']));
+ $this->bread->setOption('custom_section_font_size', floatval($_POST['custom_section_font_size']));
+ $this->bread->setOption(
+ 'pagenumbering_font_size',
+ isset($_POST['pagenumbering_font_size']) ?
+ floatval($_POST['pagenumbering_font_size']) : '9'
+ );
+ $this->bread->setOption('used_format_1', sanitize_text_field($_POST['used_format_1']));
+ $this->bread->setOption('recurse_service_bodies', isset($_POST['recurse_service_bodies']) ? 1 : 0);
+ $this->bread->setOption('extra_meetings_enabled', isset($_POST['extra_meetings_enabled']) ? intval($_POST['extra_meetings_enabled']) : 0);
+ $this->bread->setOption('include_protection', boolval($_POST['include_protection']));
+ $this->bread->setOption('weekday_language', sanitize_text_field($_POST['weekday_language']));
+ $this->bread->setOption('additional_list_language', sanitize_text_field($_POST['additional_list_language']));
+ $this->bread->setOption('weekday_start', sanitize_text_field($_POST['weekday_start']));
+ $this->bread->setOption(
+ 'meeting1_footer',
+ isset($_POST['meeting1_footer']) ?
+ sanitize_text_field($_POST['meeting1_footer']) : ''
+ );
+ $this->bread->setOption(
+ 'meeting2_footer',
+ isset($_POST['meeting2_footer']) ?
+ sanitize_text_field($_POST['meeting2_footer']) : ''
+ );
+ $this->bread->setOption(
+ 'nonmeeting_footer',
+ isset($_POST['nonmeeting_footer']) ?
+ sanitize_text_field($_POST['nonmeeting_footer']) : ''
+ );
+ $this->bread->setOption('include_additional_list', boolval($_POST['include_additional_list']));
+ $this->bread->setOption('additional_list_format_key', sanitize_text_field($_POST['additional_list_format_key']));
+ $this->bread->setOption('additional_list_sort_order', sanitize_text_field($_POST['additional_list_sort_order']));
+ $this->bread->setOption('base_font', sanitize_text_field($_POST['base_font']));
+ $this->bread->setOption('colorspace', sanitize_text_field($_POST['colorspace']));
+ $this->bread->setOption('wheelchair_size', sanitize_text_field($_POST['wheelchair_size']));
+ $this->bread->setOption('protection_password', sanitize_text_field($_POST['protection_password']));
+ $this->bread->setOption('time_clock', sanitize_text_field($_POST['time_clock']));
+ $this->bread->setOption('time_option', intval($_POST['time_option']));
+ $this->bread->setOption('remove_space', boolval($_POST['remove_space']));
+ $this->bread->setOption('content_line_height', floatval($_POST['content_line_height']));
+ $this->bread->setOption('root_server', sanitize_url($_POST['root_server']));
+ $this->bread->setOption('service_body_1', sanitize_text_field($_POST['service_body_1']));
+ $this->bread->setOption('service_body_2', sanitize_text_field($_POST['service_body_2']));
+ $this->bread->setOption('service_body_3', sanitize_text_field($_POST['service_body_3']));
+ $this->bread->setOption('service_body_4', sanitize_text_field($_POST['service_body_4']));
+ $this->bread->setOption('service_body_5', sanitize_text_field($_POST['service_body_5']));
+ $this->bread->setOption('cache_time', intval($_POST['cache_time']));
+ $this->bread->setOption('custom_query', sanitize_text_field($_POST['custom_query']));
+ $this->bread->setOption('additional_list_custom_query', sanitize_text_field($_POST['additional_list_custom_query']));
+ $this->bread->setOption('user_agent', isset($_POST['user_agent']) ? sanitize_text_field($_POST['user_agent']) : 'None');
+ $this->bread->setOption('sslverify', isset($_POST['sslverify']) ? '1' : '0');
+ $this->bread->setOption('extra_meetings', array());
+ if (isset($_POST['extra_meetings'])) {
+ foreach ($_POST['extra_meetings'] as $extra) {
+ $this->bread->setOption('extra_meetings', wp_kses_post($extra));
+ }
+ }
+ $authors = isset($_POST['author_chosen']) ? $_POST['author_chosen'] : [];
+ $this->bread->setOption('authors', array());
+ foreach ($authors as $author) {
+ $this->bread->appendOption('authors', intval($author));
+ }
+ $user = wp_get_current_user();
+ if (!is_array($this->bread->getOption('authors'))) {
+ $this->bread->setOption('authors', array($this->bread->getOption('authors')));
+ }
+ if (!in_array($user->ID, $this->bread->getOption('authors'))) {
+ $this->bread->setOption('authors', $user->ID);
+ }
+ if ($_POST['bmltmeetinglistpreview']) {
+ session_start();
+ $_SESSION['bread_preview_settings'] = $this->bread->getOptions();
+ wp_redirect(home_url() . "?preview-meeting-list=1");
+ exit();
+ }
+ } elseif (isset($_REQUEST['pwsix_action']) && $_REQUEST['pwsix_action'] == "import_settings") {
+ echo '
Your file was successfully imported!
';
+ $num = delete_transient($this->bread->get_TransientKey($this->bread->getRequestedSetting()));
+ } elseif (isset($_REQUEST['pwsix_action']) && $_REQUEST['pwsix_action'] == "default_settings_success") {
+ echo 'Your default settings were successfully updated!
';
+ $num = delete_transient($this->bread->get_TransientKey($this->bread->getRequestedSetting()));
+ }
+ }
}
diff --git a/admin/partials/bread-admin-display.php b/admin/partials/bread-admin-display.php
index a851b38..0dffe70 100644
--- a/admin/partials/bread-admin-display.php
+++ b/admin/partials/bread-admin-display.php
@@ -82,177 +82,24 @@ private function select_service_body_options(int $i)
*/
function admin_options_page()
{
- $this->bread->getConfigurationForSettingId($this->bread->getRequestedSetting());
$this->lang = $this->bread->bmlt()->get_bmlt_server_lang();
?>
bread->setOption('bread_version', sanitize_text_field($_POST['bread_version']));
- $this->bread->setOption('front_page_content', wp_kses_post($_POST['front_page_content']));
- $this->bread->setOption('front_page_line_height', $_POST['front_page_line_height']);
- $this->bread->setOption('front_page_font_size', floatval($_POST['front_page_font_size']));
- $this->bread->setOption('content_font_size', floatval($_POST['content_font_size']));
- $this->bread->setOption('suppress_heading', floatval($_POST['suppress_heading']));
- $this->bread->setOption('header_font_size', floatval($_POST['header_font_size']));
- $this->bread->setOption('header_text_color', sanitize_hex_color($_POST['header_text_color']));
- $this->bread->setOption('header_background_color', sanitize_hex_color($_POST['header_background_color']));
- $this->bread->setOption('header_uppercase', intval($_POST['header_uppercase']));
- $this->bread->setOption('header_bold', intval($_POST['header_bold']));
- $this->bread->setOption('sub_header_shown', sanitize_text_field($_POST['sub_header_shown']));
- $this->bread->setOption('cont_header_shown', intval($_POST['cont_header_shown']));
- $this->bread->setOption(
- 'column_gap',
- isset($_POST['column_gap']) ?
- intval($_POST['column_gap']) : 5
- );
- $this->bread->setOption('margin_right', intval($_POST['margin_right']));
- $this->bread->setOption('margin_left', intval($_POST['margin_left']));
- $this->bread->setOption('margin_bottom', intval($_POST['margin_bottom']));
- $this->bread->setOption('margin_top', intval($_POST['margin_top']));
- $this->bread->setOption('margin_header', intval($_POST['margin_header']));
- $this->bread->setOption(
- 'margin_footer',
- isset($_POST['margin_footer']) ?
- intval($_POST['margin_footer']) : 5
- );
- $this->bread->setOption('pageheader_fontsize', floatval($_POST['pageheader_fontsize']));
- $this->bread->setOption('pageheader_textcolor', sanitize_hex_color($_POST['pageheader_textcolor']));
- $this->bread->setOption('pageheader_backgroundcolor', sanitize_hex_color($_POST['pageheader_backgroundcolor']));
- $this->bread->setOption('pageheader_content', wp_kses_post($_POST['pageheader_content']));
- $this->bread->setOption('watermark', sanitize_text_field($_POST['watermark']));
- $this->bread->setOption('page_size', sanitize_text_field($_POST['page_size']));
- $this->bread->setOption('page_orientation', sanitize_text_field($_POST['page_orientation']));
- $this->bread->setOption('page_fold', sanitize_text_field($_POST['page_fold']));
- $this->bread->setOption(
- 'booklet_pages',
- isset($_POST['booklet_pages']) ?
- boolval($_POST['booklet_pages']) : false
- );
- $this->bread->setOption('meeting_sort', sanitize_text_field($_POST['meeting_sort']));
- $this->bread->setOption('main_grouping', sanitize_text_field($_POST['main_grouping']));
- $this->bread->setOption('subgrouping', sanitize_text_field($_POST['subgrouping']));
- $this->bread->setOption('borough_suffix', sanitize_text_field($_POST['borough_suffix']));
- $this->bread->setOption('county_suffix', sanitize_text_field($_POST['county_suffix']));
- $this->bread->setOption('neighborhood_suffix', sanitize_text_field($_POST['neighborhood_suffix']));
- $this->bread->setOption('city_suffix', sanitize_text_field($_POST['city_suffix']));
- $this->bread->setOption('meeting_template_content', wp_kses_post($_POST['meeting_template_content']));
- $this->bread->setOption('additional_list_template_content', wp_kses_post($_POST['additional_list_template_content']));
- $this->bread->setOption(
- 'column_line',
- isset($_POST['column_line']) ?
- boolval($_POST['column_line']) : 0
- );
- $this->bread->setOption(
- 'col_color',
- isset($_POST['col_color']) ?
- sanitize_hex_color($_POST['col_color']) : '#bfbfbf'
- );
- $this->bread->setOption('custom_section_content', wp_kses_post($_POST['custom_section_content']));
- $this->bread->setOption('custom_section_line_height', floatval($_POST['custom_section_line_height']));
- $this->bread->setOption('custom_section_font_size', floatval($_POST['custom_section_font_size']));
- $this->bread->setOption(
- 'pagenumbering_font_size',
- isset($_POST['pagenumbering_font_size']) ?
- floatval($_POST['pagenumbering_font_size']) : '9'
- );
- $this->bread->setOption('used_format_1', sanitize_text_field($_POST['used_format_1']));
- $this->bread->setOption('recurse_service_bodies', isset($_POST['recurse_service_bodies']) ? 1 : 0);
- $this->bread->setOption('extra_meetings_enabled', isset($_POST['extra_meetings_enabled']) ? intval($_POST['extra_meetings_enabled']) : 0);
- $this->bread->setOption('include_protection', boolval($_POST['include_protection']));
- $this->bread->setOption('weekday_language', sanitize_text_field($_POST['weekday_language']));
- $this->bread->setOption('additional_list_language', sanitize_text_field($_POST['additional_list_language']));
- $this->bread->setOption('weekday_start', sanitize_text_field($_POST['weekday_start']));
- $this->bread->setOption(
- 'meeting1_footer',
- isset($_POST['meeting1_footer']) ?
- sanitize_text_field($_POST['meeting1_footer']) : ''
- );
- $this->bread->setOption(
- 'meeting2_footer',
- isset($_POST['meeting2_footer']) ?
- sanitize_text_field($_POST['meeting2_footer']) : ''
- );
- $this->bread->setOption(
- 'nonmeeting_footer',
- isset($_POST['nonmeeting_footer']) ?
- sanitize_text_field($_POST['nonmeeting_footer']) : ''
- );
- $this->bread->setOption('include_additional_list', boolval($_POST['include_additional_list']));
- $this->bread->setOption('additional_list_format_key', sanitize_text_field($_POST['additional_list_format_key']));
- $this->bread->setOption('additional_list_sort_order', sanitize_text_field($_POST['additional_list_sort_order']));
- $this->bread->setOption('base_font', sanitize_text_field($_POST['base_font']));
- $this->bread->setOption('colorspace', sanitize_text_field($_POST['colorspace']));
- $this->bread->setOption('wheelchair_size', sanitize_text_field($_POST['wheelchair_size']));
- $this->bread->setOption('protection_password', sanitize_text_field($_POST['protection_password']));
- $this->bread->setOption('time_clock', sanitize_text_field($_POST['time_clock']));
- $this->bread->setOption('time_option', intval($_POST['time_option']));
- $this->bread->setOption('remove_space', boolval($_POST['remove_space']));
- $this->bread->setOption('content_line_height', floatval($_POST['content_line_height']));
- $this->bread->setOption('root_server', sanitize_url($_POST['root_server']));
- $this->bread->setOption('service_body_1', sanitize_text_field($_POST['service_body_1']));
- $this->bread->setOption('service_body_2', sanitize_text_field($_POST['service_body_2']));
- $this->bread->setOption('service_body_3', sanitize_text_field($_POST['service_body_3']));
- $this->bread->setOption('service_body_4', sanitize_text_field($_POST['service_body_4']));
- $this->bread->setOption('service_body_5', sanitize_text_field($_POST['service_body_5']));
- $this->bread->setOption('cache_time', intval($_POST['cache_time']));
- $this->bread->setOption('custom_query', sanitize_text_field($_POST['custom_query']));
- $this->bread->setOption('additional_list_custom_query', sanitize_text_field($_POST['additional_list_custom_query']));
- $this->bread->setOption('user_agent', isset($_POST['user_agent']) ? sanitize_text_field($_POST['user_agent']) : 'None');
- $this->bread->setOption('sslverify', isset($_POST['sslverify']) ? '1' : '0');
- $this->bread->setOption('extra_meetings', array());
- if (isset($_POST['extra_meetings'])) {
- foreach ($_POST['extra_meetings'] as $extra) {
- $this->bread->setOption('extra_meetings', wp_kses_post($extra));
- }
- }
- $authors = isset($_POST['author_chosen']) ? $_POST['author_chosen'] : [];
- $this->bread->setOption('authors', array());
- foreach ($authors as $author) {
- $this->bread->appendOption('authors', intval($author));
- }
- $user = wp_get_current_user();
- if (!is_array($this->bread->getOption('authors'))) {
- $this->bread->setOption('authors', array($this->bread->getOption('authors')));
- }
- if (!in_array($user->ID, $this->bread->getOption('authors'))) {
- $this->bread->setOption('authors', $user->ID);
- }
- if ($_POST['bmltmeetinglistpreview']) {
- session_start();
- $_SESSION['bread_preview_settings'] = $this->bread->getOptions();
- wp_redirect(home_url() . "?preview-meeting-list=1");
- exit();
- }
set_transient('admin_notice', 'Please put down your weapon. You have 20 seconds to comply.');
- if (!$this->admin->current_user_can_modify()) {
- echo 'You do not have permission to save this configuation!
';
- } else {
- $this->admin->save_admin_options();
- echo '
Your changes were successfully saved!
';
- $num = delete_transient($this->bread->get_TransientKey($this->bread->getRequestedSetting()));
- if ($num > 0) {
- echo "
$num Cache entries deleted
";
- }
- }
- echo '
';
- } elseif (isset($_REQUEST['pwsix_action']) && $_REQUEST['pwsix_action'] == "import_settings") {
- echo '
Your file was successfully imported!
';
- $num = delete_transient($this->bread->get_TransientKey($this->bread->getRequestedSetting()));
- } elseif (isset($_REQUEST['pwsix_action']) && $_REQUEST['pwsix_action'] == "default_settings_success") {
- echo '
Your default settings were successfully updated!
';
+ if (!$this->admin->current_user_can_modify()) {
+ echo '
You do not have permission to save this configuation!
';
+ } else {
+ $this->admin->save_admin_options();
+ echo '
Your changes were successfully saved!
';
$num = delete_transient($this->bread->get_TransientKey($this->bread->getRequestedSetting()));
+ if ($num > 0) {
+ echo "
$num Cache entries deleted
";
+ }
}
+ echo '
';
+
$this->bread->fillUnsetOptions();
?>
diff --git a/includes/class-bread.php b/includes/class-bread.php
index ede1380..0f7874c 100644
--- a/includes/class-bread.php
+++ b/includes/class-bread.php
@@ -484,6 +484,7 @@ private function define_admin_hooks()
$this->loader->add_action('plugins_loaded', $plugin_admin, 'download_settings');
// This needs to be called earlier than the other actions, because we have to prevent WP generating the stuff around the page.
$this->loader->add_action("admin_init", $plugin_admin, "pwsix_process_settings_export");
+ $this->loader->add_action("admin_init", $plugin_admin, "process_customize_form");
}
/**