<?php
/**
 * Enquir3 feedback settings.
 */

register_activation_hook( __FILE__, 'eq3f_set_default_options_new' );

/**
 * Set default options.
 */
function eq3f_set_default_options_new() {
	eq3f_get_options_new();
}

/**
 * Get feedback options
 *
 * @return type
 */
function eq3f_get_options_new() {
	$options	 = get_option( 'enquir3_feedback_options_new', array() );
	//$options = array();
	$old_options = get_option( 'enquir3_feedback_options', array() );

	$default_form_labels	 = eq3f_get_default_form_labels();
	$default_page_labels	 = eq3f_get_default_page_labels();
	$default_weights		 = eq3f_get_default_form_weights();
	$default_mandatories	 = eq3f_get_default_form_mandatories();
	$default_descriptions	 = eq3f_get_default_form_descriptions();
	$default_hiddens		 = eq3f_get_default_form_hiddens();

	$new_options = array(
		'client_key'		 => isset( $old_options[ 'client_key' ] ) ? $old_options[ 'client_key' ] : '',
		'client_id'			 => isset( $old_options[ 'client_id' ] ) ? $old_options[ 'client_id' ] : '',
		'remote_url'		 => isset( $old_options[ 'remote_url' ] ) ? $old_options[ 'remote_url' ] : '',
		'parent_type'		 => isset( $old_options[ 'parent_type' ] ) ? $old_options[ 'parent_type' ] : 0,
		'parent_id'			 => isset( $old_options[ 'parent_id' ] ) ? $old_options[ 'parent_id' ] : 0,
		'listing_id'		 => isset( $old_options[ 'listing_id' ] ) ? $old_options[ 'listing_id' ] : 0,
		'listing_link'		 => isset( $old_options[ 'listing_link' ] ) ? $old_options[ 'listing_link' ] : '',

		'thankyou_page_id'	 => isset( $old_options[ 'thankyou_page_id' ] ) ? $old_options[ 'thankyou_page_id' ] : 99999,
		'reply_label'		 => isset( $old_options[ 'reply_label' ] ) ? $old_options[ 'reply_label' ] : 'Reply',
		'feedback_auto_publish'						 => isset( $old_options[ 'auto_publish' ] ) ? $old_options[ 'auto_publish' ] : 0,
		'feedback_service_taxonomy'					 => isset( $old_options[ 'service_taxonomy' ] ) ? $old_options[ 'service_taxonomy' ] : 0,
		'feedback_staff_service_taxonomy'			 => isset( $old_options[ 'staff_taxonomy' ] ) ? $old_options[ 'staff_taxonomy' ] : 0,
		'feedback_additional_taxonomy'				 => isset( $old_options[ 'additional_taxonomy' ] ) ? $old_options[ 'additional_taxonomy' ] : array(),
		'feedback_add_text'							 => isset( $old_options[ 'feedback_add_text' ] ) ? $old_options[ 'feedback_add_text' ] : 'Leave Feedback',
		'feedback_display_optional_fields'			 => isset( $old_options[ 'display_additional_questions' ] ) ? $old_options[ 'display_additional_questions' ] : 1,
		'feedback_mid_copy_title'					 => '',
		'feedback_mid_copy_length'					 => 0,
		'feedback_mid_copy_company_comment_length'	 => 0,
		'feedback_mid_copy_company_comment_label'	 => '',
		'feedback_display_stood_out_length'			 => isset( $old_options[ 'display_stood_out_length' ] ) ? $old_options[ 'display_stood_out_length' ] : 2500,
		'feedback_display_better_length' => 2500,
    'feedback_display_company_comment_length'	 => isset( $old_options[ 'display_company_comment_length' ] ) ? $old_options[ 'display_company_comment_length' ] : 2500,
		'feedback_email_notification_from'			 => isset( $old_options[ 'feedback_email_notification_from' ] ) ? $old_options[ 'feedback_email_notification_from' ] : 1,
		'feedback_email_notification_to'			 => isset( $old_options[ 'feedback_email_notification_to' ] ) ? $old_options[ 'feedback_email_notification_to' ] : 1,
		'feedback_email_notification_subject'		 => isset( $old_options[ 'feedback_email_notification_subject' ] ) ? $old_options[ 'feedback_email_notification_subject' ] : 1,
		'feedback_page_title'					 => $default_form_labels[ 'page_title' ],
		'feedback_intro_text'					 => $default_form_labels[ 'intro_text' ],
		'feedback_stood_out_label'				 => $default_form_labels[ 'stood_out' ],
		'feedback_recommend_label'				 => $default_form_labels[ 'recommend' ],
		'feedback_staff_service_label'			 => $default_form_labels[ 'staff_service' ],
		'feedback_rating_promised_label'		 => $default_form_labels[ 'rating_promised' ],
		'feedback_rating_value_label'			 => $default_form_labels[ 'rating_value' ],
		'feedback_rating_helpful_label'			 => $default_form_labels[ 'rating_helpful' ],
		'feedback_rating_communication_label'	 => $default_form_labels[ 'rating_communication' ],
		'feedback_better_label'					 => $default_form_labels[ 'better' ],
		'feedback_anonymous_label'				 => $default_form_labels[ 'anonymous' ],
		'feedback_concealed_label'				 => $default_form_labels[ 'concealed' ],
		'feedback_your_details_text'			 => $default_form_labels[ 'your_details_text' ],
		'feedback_first_name_label'				 => $default_form_labels[ 'first_name' ],
		'feedback_last_name_label'				 => $default_form_labels[ 'last_name' ],
		'feedback_email_label'					 => $default_form_labels[ 'email' ],
		'feedback_optional_text'				 => $default_form_labels[ 'optional_text' ],
		'feedback_town_label'					 => $default_form_labels[ 'town' ],
		'feedback_county_label'					 => $default_form_labels[ 'county' ],
		'feedback_telephone_label'				 => $default_form_labels[ 'telephone' ],
		'feedback_company_label'				 => $default_form_labels[ 'company' ],
		'feedback_business_category_label'		 => $default_form_labels[ 'business_category' ],
		'feedback_position_label'				 => $default_form_labels[ 'position' ],
		'feedback_website_label'				 => $default_form_labels[ 'website' ],
		'feedback_extra_rating_questions_label'	 => array( '', '', '', '' ),
		'feedback_extra_worded_questions_label'	 => array( '', '', '', '' ),
		'feedback_page_labels_page_title'	 => $default_page_labels[ 'page_title' ],
		'feedback_page_labels_intro_text'	 => $default_page_labels[ 'intro_text' ],
		'feedback_intro_text_weight'			 => $default_weights[ 'intro_text' ],
		'feedback_stood_out_weight'				 => $default_weights[ 'stood_out' ],
		'feedback_recommend_weight'				 => $default_weights[ 'recommend' ],
		'feedback_staff_service_weight'			 => $default_weights[ 'staff_service' ],
		'feedback_rating_promised_weight'		 => $default_weights[ 'rating_promised' ],
		'feedback_rating_value_weight'			 => $default_weights[ 'rating_value' ],
		'feedback_rating_helpful_weight'		 => $default_weights[ 'rating_helpful' ],
		'feedback_rating_communication_weight'	 => $default_weights[ 'rating_communication' ],
		'feedback_better_weight'				 => $default_weights[ 'better' ],
		'feedback_your_details_group_weight'	 => $default_weights[ 'your_details_group' ],
		'feedback_optional_group_weight'		 => $default_weights[ 'optional_group' ],
		'feedback_services_weight'				 => $default_weights[ 'services' ],
		'feedback_more_services_group_weight'	 => $default_weights[ 'more_services_group' ],
		'feedback_extra_rating_questions_weight' => $default_weights[ 'extra_rating_questions' ],
		'feedback_extra_worded_questions_weight' => $default_weights[ 'extra_worded_questions' ],
		'feedback_extra_rating_questions_mandatory'	 => $default_mandatories[ 'extra_rating_questions' ],
		'feedback_extra_worded_questions_mandatory'	 => $default_mandatories[ 'extra_worded_questions' ],
		'feedback_stood_out_description'				 => $default_descriptions[ 'stood_out' ],
		'feedback_recommend_description'				 => $default_descriptions[ 'recommend' ],
		'feedback_staff_service_description'			 => $default_descriptions[ 'staff_service' ],
		'feedback_rating_promised_description'			 => $default_descriptions[ 'rating_promised' ],
		'feedback_rating_value_description'				 => $default_descriptions[ 'rating_value' ],
		'feedback_rating_helpful_description'			 => $default_descriptions[ 'rating_helpful' ],
		'feedback_rating_communication_description'		 => $default_descriptions[ 'rating_communication' ],
		'feedback_better_description'					 => $default_descriptions[ 'better' ],
		'feedback_your_details_group_description'		 => $default_descriptions[ 'your_details_group' ],
		'feedback_optional_group_description'			 => $default_descriptions[ 'optional_group' ],
		'feedback_services_description'					 => $default_descriptions[ 'services' ],
		'feedback_moderation_group_description'			 => $default_descriptions[ 'moderation_group' ],
		'feedback_more_services_group_description'		 => $default_descriptions[ 'more_services_group' ],
		'feedback_extra_rating_questions_description'	 => $default_descriptions[ 'extra_rating_questions' ],
		'feedback_extra_worded_questions_description'	 => $default_descriptions[ 'extra_worded_questions' ],
		'feedback_staff_service_hidden'			 => $default_hiddens[ 'staff_service' ],
		'feedback_better_hidden'				 => $default_hiddens[ 'better' ],
		'feedback_optional_group_hidden'		 => $default_hiddens[ 'optional_group' ],
		'feedback_services_hidden'				 => $default_hiddens[ 'services' ],
		'feedback_more_services_group_hidden'	 => $default_hiddens[ 'more_services_group' ],
		'feedback_extra_rating_questions_hidden' => $default_hiddens[ 'extra_rating_questions' ],
		'feedback_extra_worded_questions_hidden' => $default_hiddens[ 'extra_worded_questions' ],
	);

	if ( isset( $options[ 'feedback_additional_taxonomy' ] ) ) {
		foreach ( $options[ 'feedback_additional_taxonomy' ] as $additional_vocabulary ) {
			$weight = $default_weights[ 'more_services_group' ][ 0 ];
			if ( $additional_vocabulary > 0 ) {
				if( !isset( $options[ 'feedback_more_services_group_weight' ][ $additional_vocabulary ] ) ) {
					$options[ 'feedback_more_services_group_weight' ][ $additional_vocabulary ] = $weight;
					$weight++;
				}
				if( !isset( $options[ 'feedback_more_services_group_hidden' ][ $additional_vocabulary ] ) ) {
					$options[ 'feedback_more_services_group_hidden' ][ $additional_vocabulary ] = $default_hiddens[ 'more_services_group' ];
				}
				if( !isset( $options[ 'feedback_more_services_group_description' ][ $additional_vocabulary ] ) ) {
					$options[ 'feedback_more_services_group_description' ][ $additional_vocabulary ] = $default_descriptions[ 'more_services_group' ][ 0 ];
				}
			}
		}
	}

	$merged_options = wp_parse_args( $options, $new_options );

	$compare_options = array_diff_key( $new_options, $options );
	if ( empty( $options ) || !empty( $compare_options ) ) {
		update_option( 'enquir3_feedback_options_new', $merged_options );
	}
	if ( count( $old_options ) > 0 ) {
		update_option( 'enquir3_feedback_options', array() );
	}

	return $merged_options;
}

// Register action hook function to be called when the admin pages are
// starting to be prepared for display.
add_action( 'admin_init', 'eq3f_admin_init_new' );

/**
 * Function to register the Settings for this plugin
 * and declare the fields to be displayed.
 */
function eq3f_admin_init_new() {
	// Register our setting group with a validation function
	// so that $_POST handling is done automatically for us.
	register_setting(
		'remsto_feedback_settings_new',
		'enquir3_feedback_options_new',
		array(
			'type'				 => 'array',
			'sanitize_callback'	 => 'eq3f_validate_options_new',
		)
	);

	// Add a new settings section for client settings.
	add_settings_section(
		'remsto_feedback_client_section_new',
		'Client Settings',
		'eq3f_client_client_setting_section_callback_new',
		'remsto_feedback_settings_section_new'
	);

	add_settings_field(
		'client_key',
		'Client Key',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_client_section_new',
		array(
			'name'	 => 'client_key',
			'size'	 => 50,
		)
	);

	add_settings_field(
		'client_id',
		'Client ID',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_client_section_new',
		array(
			'name'	 => 'client_id',
			'size'	 => 10,
		)
	);

	add_settings_field(
		'remote_url',
		'Remote URL',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_client_section_new',
		array(
			'name'	 => 'remote_url',
			'size'	 => 50,
		)
	);

	add_settings_field(
		'listing_id', 'Listing ID', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_client_section_new', array(
			'name'	 => 'listing_id',
			'size'	 => 10,
		)
	);

	// Add a new settings section for feedback settings.
	add_settings_section(
		'remsto_feedback_main_section_new',
		'Feedback Settings',
		'eq3f_main_setting_section_callback_new',
		'remsto_feedback_settings_section_new'
	);

	$feedback_options	 = eq3f_get_options_new();
	$taxonomy_options	 = array();
	if ( '' !== $feedback_options[ 'remote_url' ] ) {
		try {
			$rc			 = new RemstoFeedbackClient( $feedback_options );
			$taxonomies	 = $rc->listVocabularies();
			foreach ( $taxonomies as $taxonomy ) {
				$taxonomy_options[ $taxonomy->tid ] = $taxonomy->title;
			}
		} catch ( Exception $exc ) {
			add_action( 'admin_notices', 'eq3f_settings_save_failure' );
		}
	}

	$staff_taxonomy_options		 = $taxonomy_options;
	$staff_taxonomy_options[ '0' ] = 'Free form text';

	add_settings_field(
		'feedback_service_taxonomy',
		'Service Taxonomy', 'eq3f_display_select_list_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
		'name'		 => 'feedback_service_taxonomy',
		'choices'	 => $taxonomy_options,
	)
	);

	add_settings_field(
		'feedback_staff_service_taxonomy',
		'Staff Taxonomy',
		'eq3f_display_select_list_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_main_section_new',
		array(
			'name'		 => 'feedback_staff_service_taxonomy',
			'choices'	 => $staff_taxonomy_options,
		)
	);

	add_settings_field(
		'feedback_display_optional_fields',
		'Display Optional Questions?',
		'eq3f_display_check_box_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_main_section_new',
		array( 'name' => 'feedback_display_optional_fields' )
	);

	add_settings_field(
		'feedback_auto_publish',
		'Auto Publish?',
		'eq3f_display_check_box_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_main_section_new',
		array( 'name' => 'feedback_auto_publish' )
	);

	add_settings_field(
		'feedback_additional_taxonomy',
		'Additional Taxonomy',
		'eq3f_display_check_box_new_group',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_main_section_new',
		array(
			'name'		 => 'feedback_additional_taxonomy',
			'choices'	 => $taxonomy_options,
		)
	);

	add_settings_field(
		'feedback_add_text', 'Add Button Text', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name'	 => 'feedback_add_text',
			'size'	 => 60,
		)
	);

	add_settings_field(
		'feedback_email_notification_from', 'From email address', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name'	 => 'feedback_email_notification_from',
			'size'	 => 150,
		)
	);

	add_settings_field(
		'feedback_email_notification_to', 'Send email to....', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name'	 => 'feedback_email_notification_to',
			'size'	 => 150,
		)
	);

	add_settings_field(
		'feedback_email_notification_subject', 'Mail Subject', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name'	 => 'feedback_email_notification_subject',
			'size'	 => 150,
		)
	);

	add_settings_field(
		'listing_link', 'Link to Listing Site', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name'	 => 'listing_link',
			'size'	 => 150,
		)
	);

	add_settings_field(
		'feedback_display_stood_out_length', 'Limit Feedback comment to char', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name'	 => 'feedback_display_stood_out_length',
			'size'	 => 5,
		)
	);

	add_settings_field(
		'feedback_display_better_length', 'Limit Feedback "could do better" to char', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name'	 => 'feedback_display_better_length',
			'size'	 => 5,
		)
	);

	add_settings_field(
		'feedback_display_company_comment_length', 'Limit feedback company reply to char', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name'	 => 'feedback_display_company_comment_length',
			'size'	 => 5,
		)
	);

	add_settings_field(
		'reply_label', 'Label for reply comment', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name'	 => 'reply_label',
			'size'	 => 150,
		)
	);
	add_settings_field(
		'thankyou_page_id', 'Thank You Page ID', 'eq3f_display_hidden_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_main_section_new', array(
			'name' => 'thankyou_page_id',
		),
		array(
			'class' => 'no-padding',
		)
	);

	// Add a new settings section Link to edit thankyou page.
	add_settings_section(
		'remsto_feedback_links_section_new',
		'Additional Links',
		'eq3f_thankyou_page_edit_callback_new',
		'remsto_feedback_settings_section_new'
	);

	$default_form_labels = eq3f_get_default_form_labels();

	// Add a new settings section for form labels and text settings.
	add_settings_section(
		'remsto_feedback_form_configuration_section_new',
		'<span class="eq3f-collapsible-settings-section">Feedback form labels and text configuration</span>',
		'eq3f_feedback_form_configuration_setting_section_callback_new',
		'remsto_feedback_settings_section_new'
	);

	add_settings_field(
		'feedback_page_title',
		'Feedback form - page title',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_configuration_section_new', array(
			'name'			 => 'feedback_page_title',
			'size'			 => 150,
			'description'	 => 'Default: ' . $default_form_labels[ 'page_title' ],
		)
	);

	add_settings_field(
		'feedback_intro_text',
		'Introductory text',
		'eq3f_display_text_area_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_configuration_section_new', array(
			'name'			 => 'feedback_intro_text',
			'size'			 => 150,
			'description'	 => 'Default: ' . $default_form_labels[ 'intro_text' ][ 'format' ],
		)
	);

	add_settings_field(
		'feedback_stood_out_label',
		'Stood out label',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_configuration_section_new', array(
			'name'			 => 'feedback_stood_out_label',
			'size'			 => 150,
			'description'	 => 'Default: ' . $default_form_labels[ 'stood_out' ],
		)
	);

	add_settings_field(
	'feedback_recommend_label', 'Recommend label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_recommend_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'recommend' ],
	)
	);

	add_settings_field(
	'feedback_staff_service_label', 'Staff/service label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_staff_service_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'staff_service' ],
	)
	);

	add_settings_field(
	'feedback_rating_promised_label', 'Rating promised label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_rating_promised_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'rating_promised' ],
	)
	);

	add_settings_field(
	'feedback_rating_value_label', 'Rating value label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_rating_value_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'rating_value' ],
	)
	);

	add_settings_field(
	'feedback_rating_helpful_label', 'Rating helpful label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_rating_helpful_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'rating_helpful' ],
	)
	);

	add_settings_field(
	'feedback_rating_communication_label', 'Rating communication label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_rating_communication_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'rating_communication' ],
	)
	);

	add_settings_field(
	'feedback_better_label', 'Better label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_better_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'better' ],
	)
	);

	add_settings_field(
	'feedback_anonymous_label', 'Anonymous label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_anonymous_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'anonymous' ],
	)
	);

	add_settings_field(
	'feedback_concealed_label', 'Concealed label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_concealed_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'concealed' ],
	)
	);

	add_settings_field(
	'feedback_your_details_text', 'Your details text', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_your_details_text',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'your_details_text' ],
	)
	);

	add_settings_field(
	'feedback_first_name_label', 'First name label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_first_name_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'first_name' ],
	)
	);

	add_settings_field(
	'feedback_last_name_label', 'Last name label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_last_name_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'last_name' ],
	)
	);

	add_settings_field(
	'feedback_email_label', 'Email label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_email_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'email' ],
	)
	);

	add_settings_field(
	'feedback_optional_text', 'Optional text', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_optional_text',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'optional_text' ],
	)
	);

	add_settings_field(
	'feedback_town_label', 'Town label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_town_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'town' ],
	)
	);

	add_settings_field(
		'feedback_county_label',
		'Postcode label',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_configuration_section_new',
		array(
			'name'			 => 'feedback_county_label',
			'size'			 => 150,
			'description'	 => 'Default: ' . $default_form_labels[ 'county' ],
		)
	);

	add_settings_field(
	'feedback_telephone_label', 'Telephone label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_telephone_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'telephone' ],
	)
	);

	add_settings_field(
	'feedback_company_label', 'Company name label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_company_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'company' ],
	)
	);

	add_settings_field(
	'feedback_business_category_label', 'Business category label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_business_category_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'business_category' ],
	)
	);

	add_settings_field(
	'feedback_position_label', 'Position label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_position_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'position' ],
	)
	);

	add_settings_field(
	'feedback_website_label', 'Website label', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_configuration_section_new', array(
		'name'			 => 'feedback_website_label',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_form_labels[ 'website' ],
	)
	);
	/* There is something more to do here */

	$default_form_mandatories	 = eq3f_get_default_form_mandatories();
	$mandatory_options			 = array(
		0	 => 'No',
		1	 => 'Yes',
	);
	for ( $i = 0; $i < 4; $i++ ) {
		add_settings_field(
			'feedback_extra_rating_questions_label[' . $i . ']',
			'Additional rating question ' . ($i + 1),
			'eq3f_display_text_field_index_new',
			'remsto_feedback_settings_section_new',
			'remsto_feedback_form_configuration_section_new',
			array(
				'name'			 => 'feedback_extra_rating_questions_label',
				'index'			 => $i,
				'size'			 => 150,
				'description'	 => 'Empty this field to remove the question from the feedback form',
			)
		);
		add_settings_field(
			'feedback_extra_rating_questions_mandatory[' . $i . ']',
			'Additional rating question ' . ($i + 1) . ' mandatory',
			'eq3f_display_select_list_index_new',
			'remsto_feedback_settings_section_new',
			'remsto_feedback_form_configuration_section_new',
			array(
				'name'			 => 'feedback_extra_rating_questions_mandatory',
				'index'			 => $i,
				'description'	 => 'Default: ' . $mandatory_options[ $default_form_mandatories[ 'extra_rating_questions' ][ $i ] ],
				'choices'		 => $mandatory_options,
			)
		);
	}

	for ( $i = 0; $i < 4; $i++ ) {
		add_settings_field(
			'feedback_extra_worded_questions_label[' . $i . ']',
			'Additional worded question ' . ($i + 1),
			'eq3f_display_text_field_index_new',
			'remsto_feedback_settings_section_new',
			'remsto_feedback_form_configuration_section_new', array(
				'name'			 => 'feedback_extra_worded_questions_label',
				'index'			 => $i,
				'size'			 => 150,
				'description'	 => 'Empty this field to remove the question from the feedback form',
			)
		);
		add_settings_field(
			'feedback_extra_worded_questions_mandatory[' . $i . ']',
			'Additional worded question ' . ($i + 1) . ' mandatory',
			'eq3f_display_select_list_index_new',
			'remsto_feedback_settings_section_new',
			'remsto_feedback_form_configuration_section_new',
			array(
				'name'			 => 'feedback_extra_worded_questions_mandatory',
				'index'			 => $i,
				'description'	 => 'Default: ' . $mandatory_options[ $default_form_mandatories[ 'extra_worded_questions' ][ $i ] ],
				'choices'		 => $mandatory_options,
			)
		);
	}

	// Add a new settings section for page labels and text settings.
	$default_page_labels = eq3f_get_default_page_labels();
	add_settings_section(
	'remsto_feedback_page_configuration_section_new', '<span class="eq3f-collapsible-settings-section">Feedback page labels and text configuration</span>', 'eq3f_feedback_page_configuration_setting_section_callback_new', 'remsto_feedback_settings_section_new'
	);

	add_settings_field(
	'feedback_page_labels_page_title', 'Feedback page title', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_page_configuration_section_new', array(
		'name'			 => 'feedback_page_labels_page_title',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_page_labels[ 'page_title' ],
	)
	);

	add_settings_field(
	'feedback_page_labels_intro_text', 'Introductory text', 'eq3f_display_text_area_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_page_configuration_section_new', array(
		'name'			 => 'feedback_page_labels_intro_text',
		'size'			 => 150,
		'description'	 => 'Default: ' . $default_page_labels[ 'intro_text' ][ 'format' ],
	)
	);

	// Add a new settings section for form items ordering.
	$default_form_weights = eq3f_get_default_form_weights();
	add_settings_section(
	'remsto_feedback_form_weights_section_new', '<span class="eq3f-collapsible-settings-section">Feedback form items ordering</span>', 'eq3f_feedback_form_weights_setting_section_callback_new', 'remsto_feedback_settings_section_new'
	);

	add_settings_field(
	'feedback_intro_text_weight', 'Introductory text', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_intro_text_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'intro_text' ],
	)
	);

	add_settings_field(
	'feedback_stood_out_weight', 'What stood out?', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_stood_out_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'stood_out' ],
	)
	);

	add_settings_field(
	'feedback_recommend_weight', 'Would you recommend?', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_recommend_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'recommend' ],
	)
	);

	add_settings_field(
	'feedback_staff_service_weight', 'Staff member served by', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_staff_service_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'staff_service' ],
	)
	);

	add_settings_field(
	'feedback_rating_promised_weight', 'Promised rating', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_rating_promised_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'rating_promised' ],
	)
	);

	add_settings_field(
	'feedback_rating_value_weight', 'Value rating', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_rating_value_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'rating_value' ],
	)
	);

	add_settings_field(
	'feedback_rating_helpful_weight', 'Helpful rating', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_rating_helpful_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'rating_helpful' ],
	)
	);

	add_settings_field(
	'feedback_rating_communication_weight', 'Communication rating', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_rating_communication_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'rating_communication' ],
	)
	);

	add_settings_field(
	'feedback_better_weight', 'What could be done better', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_better_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'better' ],
	)
	);

	add_settings_field(
	'feedback_your_details_group_weight', 'Personal details group', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_your_details_group_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'your_details_group' ],
	)
	);

	add_settings_field(
	'feedback_optional_group_weight', 'Optional group', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_optional_group_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'optional_group' ],
	)
	);

	add_settings_field(
	'feedback_services_weight', 'Services', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
		'name'			 => 'feedback_services_weight',
		'size'			 => 10,
		'description'	 => 'Default: ' . $default_form_weights[ 'services' ],
	)
	);

	if ( '' !== $feedback_options[ 'remote_url' ] ) {
    try {
      $rc			 = new RemstoFeedbackClient( $feedback_options );
      $taxonomies	 = $rc->listVocabularies();
    }
    catch(Exception $e) {
			add_action( 'admin_notices', 'eq3f_settings_save_failure' );
    }
    if(isset($taxonomies)) {
      foreach ( $taxonomies as $taxonomy ) {
        $taxonomy_options[ $taxonomy->tid ] = $taxonomy->title;
      }
      $default_weight = $default_form_weights[ 'more_services_group' ][ 0 ];
      foreach ( $feedback_options[ 'feedback_additional_taxonomy' ] as $additional_vocabulary ) {
        add_settings_field(
        'feedback_more_services_group_weight[' . $additional_vocabulary . ']', $taxonomy_options[ $additional_vocabulary ], 'eq3f_display_text_field_index_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
          'name'			 => 'feedback_more_services_group_weight',
          'index'			 => $additional_vocabulary,
          'size'			 => 10,
          'description'	 => 'Default: ' . $default_weight,
        )
        );
        $default_weight++;
      }
    }
	}

	for ( $i = 0; $i < 4; $i++ ) {
		add_settings_field(
		'feedback_extra_rating_questions_weight[' . $i . ']', strlen( $feedback_options[ 'feedback_extra_rating_questions_label' ][ $i ] ) > 0 ? $feedback_options[ 'feedback_extra_rating_questions_label' ][ $i ] : ('Rating question ' . ($i + 1)), 'eq3f_display_text_field_index_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
			'name'			 => 'feedback_extra_rating_questions_weight',
			'index'			 => $i,
			'size'			 => 10,
			'description'	 => 'Default: ' . $default_form_weights[ 'extra_rating_questions' ][ $i ],
		)
		);
	}

	for ( $i = 0; $i < 4; $i++ ) {
		add_settings_field(
		'feedback_extra_worded_questions_weight[' . $i . ']', strlen( $feedback_options[ 'feedback_extra_worded_questions_label' ][ $i ] ) > 0 ? $feedback_options[ 'feedback_extra_worded_questions_label' ][ $i ] : ('Worded question ' . ($i + 1)), 'eq3f_display_text_field_index_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_weights_section_new', array(
			'name'			 => 'feedback_extra_worded_questions_weight',
			'index'			 => $i,
			'size'			 => 10,
			'description'	 => 'Default: ' . $default_form_weights[ 'extra_worded_questions' ][ $i ],
		)
		);
	}

	// Add a new settings section for form fields descriptions.
	$default_form_descriptions = eq3f_get_default_form_descriptions();
	add_settings_section(
		'remsto_feedback_form_descriptions_section_new',
		'<span class="eq3f-collapsible-settings-section">Feedback form fields descriptions</span>',
		'eq3f_feedback_form_descriptions_section_callback_new',
		'remsto_feedback_settings_section_new'
	);

	add_settings_field(
		'feedback_stood_out_description',
		'What stood out?',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_descriptions_section_new',
		array(
			'name'			 => 'feedback_stood_out_description',
			'size'			 => 150,
		)
	);

	add_settings_field(
	'feedback_recommend_description', 'Would you recommend?', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_descriptions_section_new', array(
		'name'			 => 'feedback_recommend_description',
		'size'			 => 150,
	)
	);

	add_settings_field(
	'feedback_staff_service_description', 'Staff member served by', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_descriptions_section_new', array(
		'name'			 => 'feedback_staff_service_description',
		'size'			 => 150,
	)
	);

	add_settings_field(
	'feedback_rating_promised_description', 'Promised rating', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_descriptions_section_new', array(
		'name'			 => 'feedback_rating_promised_description',
		'size'			 => 150,
	)
	);

	add_settings_field(
	'feedback_rating_value_description', 'Value rating', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_descriptions_section_new', array(
		'name'			 => 'feedback_rating_value_description',
		'size'			 => 150,
	)
	);

	add_settings_field(
	'feedback_rating_helpful_description', 'Helpful rating', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_descriptions_section_new', array(
		'name'			 => 'feedback_rating_helpful_description',
		'size'			 => 150,
	)
	);

	add_settings_field(
	'feedback_rating_communication_description', 'Communication rating', 'eq3f_display_text_field_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_descriptions_section_new', array(
		'name'			 => 'feedback_rating_communication_description',
		'size'			 => 150,
	)
	);

	add_settings_field(
		'feedback_better_description',
		'What could be done better',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_descriptions_section_new',
		array(
			'name'			 => 'feedback_better_description',
			'size'			 => 150,
		)
	);

	add_settings_field(
		'feedback_your_details_group_description',
		'Personal details group',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_descriptions_section_new',
		array(
			'name'			 => 'feedback_your_details_group_description',
			'size'			 => 150,
		)
	);

	add_settings_field(
		'feedback_optional_group_description',
		'Optional group',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_descriptions_section_new',
		array(
			'name'			 => 'feedback_optional_group_description',
			'size'			 => 150,
		)
	);

	add_settings_field(
		'feedback_services_description',
		'Services', 'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_descriptions_section_new',
		array(
			'name'			 => 'feedback_services_description',
			'size'			 => 150,
		)
	);

	add_settings_field(
		'feedback_moderation_group_description',
		'Moderation group',
		'eq3f_display_text_field_new',
		'remsto_feedback_settings_section_new',
		'remsto_feedback_form_descriptions_section_new',
		array(
			'name'			 => 'feedback_moderation_group_description',
			'size'			 => 150,
		)
	);

	foreach ( $feedback_options[ 'feedback_additional_taxonomy' ] as $additional_vocabulary ) {
		add_settings_field(
			'feedback_more_services_group_description[' . $additional_vocabulary . ']',
			$taxonomy_options[ $additional_vocabulary ],
			'eq3f_display_text_field_index_new',
			'remsto_feedback_settings_section_new',
			'remsto_feedback_form_descriptions_section_new',
			array(
				'name'			 => 'feedback_more_services_group_description',
				'index'			 => $additional_vocabulary,
				'size'			 => 10,
			)
		);
	}

	for ( $i = 0; $i < 4; $i++ ) {
		add_settings_field(
			'feedback_extra_rating_questions_description[' . $i . ']',
			strlen( $feedback_options[ 'feedback_extra_rating_questions_label' ][ $i ] ) > 0 ? $feedback_options[ 'feedback_extra_rating_questions_label' ][ $i ] : ('Rating question ' . ($i + 1)),
			'eq3f_display_text_field_index_new',
			'remsto_feedback_settings_section_new',
			'remsto_feedback_form_descriptions_section_new',
			array(
				'name'			 => 'feedback_extra_rating_questions_description',
				'index'			 => $i,
				'size'			 => 150,
			)
		);
	}

	for ( $i = 0; $i < 4; $i++ ) {
		add_settings_field(
			'feedback_extra_worded_questions_description[' . $i . ']',
			strlen( $feedback_options[ 'feedback_extra_worded_questions_label' ][ $i ] ) > 0 ? $feedback_options[ 'feedback_extra_worded_questions_label' ][ $i ] : ('Worded question ' . ($i + 1)),
			'eq3f_display_text_field_index_new',
			'remsto_feedback_settings_section_new',
			'remsto_feedback_form_descriptions_section_new',
			array(
				'name'			 => 'feedback_extra_worded_questions_description',
				'index'			 => $i,
				'size'			 => 150,
			)
		);
	}

	// Add a new settings section for form fields hiddens.
	$default_form_hiddens	 = eq3f_get_default_form_hiddens();
	add_settings_section(
	'remsto_feedback_form_hiddens_section_new', '<span class="eq3f-collapsible-settings-section">Hide feedback form fields from non-logged-in users</span>', 'eq3f_feedback_form_hiddens_section_callback_new', 'remsto_feedback_settings_section_new'
	);
	$hidden_options			 = array(
		0	 => 'Visible',
		1	 => 'Hidden',
	);

	add_settings_field(
	'feedback_staff_service_hidden', 'Staff member served by', 'eq3f_display_select_list_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_hiddens_section_new', array(
		'name'			 => 'feedback_staff_service_hidden',
		'description'	 => 'Default: ' . $hidden_options[ $default_form_hiddens[ 'staff_service' ] ],
		'choices'		 => $hidden_options,
	)
	);

	add_settings_field(
	'feedback_better_hidden', 'What could be done better', 'eq3f_display_select_list_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_hiddens_section_new', array(
		'name'			 => 'feedback_better_hidden',
		'description'	 => 'Default: ' . $hidden_options[ $default_form_hiddens[ 'better' ] ],
		'choices'		 => $hidden_options,
	)
	);

	add_settings_field(
	'feedback_optional_group_hidden', 'Optional group', 'eq3f_display_select_list_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_hiddens_section_new', array(
		'name'			 => 'feedback_optional_group_hidden',
		'description'	 => 'Default: ' . $hidden_options[ $default_form_hiddens[ 'optional_group' ] ],
		'choices'		 => $hidden_options,
	)
	);

	add_settings_field(
	'feedback_services_hidden', 'Services', 'eq3f_display_select_list_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_hiddens_section_new', array(
		'name'			 => 'feedback_services_hidden',
		'description'	 => 'Default: ' . $hidden_options[ $default_form_hiddens[ 'services' ] ],
		'choices'		 => $hidden_options,
	)
	);

	add_settings_field(
	'feedback_services_hidden', 'Services', 'eq3f_display_select_list_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_hiddens_section_new', array(
		'name'			 => 'feedback_services_hidden',
		'description'	 => 'Default: ' . $hidden_options[ $default_form_hiddens[ 'services' ] ],
		'choices'		 => $hidden_options,
	)
	);

	foreach ( $feedback_options[ 'feedback_additional_taxonomy' ] as $additional_vocabulary ) {
		add_settings_field(
		'feedback_more_services_group_hidden[' . $additional_vocabulary . ']', $taxonomy_options[ $additional_vocabulary ], 'eq3f_display_select_list_index_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_hiddens_section_new', array(
			'name'			 => 'feedback_more_services_group_hidden',
			'index'			 => $additional_vocabulary,
			'description'	 => 'Default: ' . $default_form_hiddens[ 'more_services_group' ][ 0 ],
			'choices'		 => $hidden_options,
		)
		);
	}

	for ( $i = 0; $i < 4; $i++ ) {
		add_settings_field(
		'feedback_extra_rating_questions_hidden[' . $i . ']', 'Additional rating question ' . ($i + 1), 'eq3f_display_select_list_index_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_hiddens_section_new', array(
			'name'			 => 'feedback_extra_rating_questions_hidden',
			'index'			 => $i,
			'description'	 => 'Default: ' . $hidden_options[ $default_form_hiddens[ 'extra_rating_questions' ][ $i ] ],
			'choices'		 => $hidden_options,
		)
		);
	}

	for ( $i = 0; $i < 4; $i++ ) {
		add_settings_field(
		'feedback_extra_worded_questions_hidden[' . $i . ']', 'Additional worded question ' . ($i + 1), 'eq3f_display_select_list_index_new', 'remsto_feedback_settings_section_new', 'remsto_feedback_form_hiddens_section_new', array(
			'name'			 => 'feedback_extra_worded_questions_hidden',
			'index'			 => $i,
			'description'	 => 'Default: ' . $hidden_options[ $default_form_hiddens[ 'extra_worded_questions' ][ $i ] ],
			'choices'		 => $hidden_options,
		)
		);
	}
}

/**
 * Validation function to be called when data is posted by user
 * No validation done at this time. Straight return of values.
 *
 * @param array $input Feedback settings.
 * @return array Modified input
 */
function eq3f_validate_options_new( $input ) {

	// Test email addresses okay.
	if ( ! empty( $input['feedback_email_notification_to'] ) ) {
		$address_list = explode( ', ', $input['feedback_email_notification_to'] );
		$regex        = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
		foreach ( $address_list as $address ) {
			if ( ! preg_match( $regex, $address ) ) {
				add_settings_error(
					'remsto_feedback_new',
					esc_attr( 'settings_updated' ),
					'Email list error: ' . $input['feedback_email_notification_to'],
					'error'
				);
				$input['feedback_email_notification_to'] = '';
			}
		}
	}

	if ( ! is_numeric( $input['feedback_display_stood_out_length'] ) || $input['feedback_display_stood_out_length'] >  10000 ) {
		add_settings_error(
			'remsto_feedback',
			esc_attr( 'settings_updated_new' ),
			'Char limit must be a number less than 10000: ' . $input['feedback_display_stood_out_length'],
			'error'
		);
		$input['feedback_display_stood_out_length'] = 10000;
	}

	if ( ! is_numeric( $input['feedback_display_better_length'] ) || $input['feedback_display_better_length'] >  10000 ) {
		add_settings_error(
			'remsto_feedback',
			esc_attr( 'settings_updated_new' ),
			'Char limit must be a number less than 10000: ' . $input['feedback_display_better_length'],
			'error'
		);
		$input['feedback_display_better_length'] = 10000;
	}

	if ( ! is_numeric( $input['feedback_display_company_comment_length'] ) || $input['feedback_display_company_comment_length'] >  10000 ) {
		add_settings_error(
			'remsto_feedback_new',
			esc_attr( 'settings_updated' ),
			'Char limit must be a number less than 10000: ' . $input['feedback_display_company_comment_length'],
			'error'
		);
		$input['feedback_display_company_comment_length'] = 10000;
	}

	$eq3f_options = get_option( 'enquir3_feedback_options_new', array() );
	if ( $input['listing_id'] !== $eq3f_options['listing_id']) {
		if ( $input[ 'listing_id' ] === '0' ) {
			$new_parent_type = 0;
			$new_parent_id	 = 0;
		} else {
			$new_parent_type = 1;
			$new_parent_id	 = $input[ 'listing_id' ];
		}
		if ( $eq3f_options[ 'listing_id' ] === '0' ) {
			$old_parent_type = 0;
			$old_parent_id	 = 0;
		} else {
			$old_parent_type = 1;
			$old_parent_id	 = $eq3f_options['listing_id'];
		}

    try{
      $feedback_client = new RemstoFeedbackClient( $input );
      $feedback_client->linkSiteToParent(
        $new_parent_type,
        $new_parent_id,
        $old_parent_type,
        $old_parent_id,
        $input['client_id']
      );
    }
    catch(Exception $e) {
			add_action( 'admin_notices', 'eq3f_settings_save_failure' );
    }

	}

	if ( isset( $eq3f_options[ 'listing_id' ] ) && $eq3f_options[ 'listing_id' ] > 0 ) {
		$settings = $input;
		if ( isset( $eq3f_options[ 'feedback_additional_taxonomy' ] ) && is_array( $eq3f_options[ 'feedback_additional_taxonomy' ] ) &&
		isset( $settings[ 'feedback_additional_taxonomy' ] ) && is_array( $settings[ 'feedback_additional_taxonomy' ] ) ) {
			$default_weights = eq3f_get_default_form_weights();
			$weight			 = $default_weights[ 'more_services_group' ][ 0 ];
			foreach ( $settings[ 'feedback_additional_taxonomy' ] as $vocabulary_id ) {
				$weight++;
				if ( !isset( $eq3f_options[ 'feedback_more_services_group_weight' ][ $vocabulary_id ] ) ) {
					$eq3f_options[ 'feedback_more_services_group_weight' ][ $vocabulary_id ] = $weight;
				}
			}
		}
		foreach ( $settings as $key => $setting ) {
			if ( substr( $key, 0, strlen( 'feedback_' ) ) !== 'feedback_' ) {
				unset( $settings[ $key ] );
			}
		}

    try {
      require_once EQ3F_PLUGIN_PATH . 'vendor/enquir3/RemstoListingClient.inc';
      $rlc = new RemstoListingClient( $input, get_current_user_id() );

      // Load listing
      $listing = $rlc->getListing( $eq3f_options['listing_id'] );

      if ( isset( $listing ) ) {
        // Set feedback settings field
        $listing[ 'listing' ]->feedback_settings = serialize( $settings );

        // Save listing
        $post_data = array(
          'form_data' => (array) $listing[ 'listing' ],
        );
        $rlc->updateListing( $eq3f_options['listing_id'], $post_data );
      }
    }
    catch(Exception $e) {
			add_action( 'admin_notices', 'eq3f_settings_save_failure' );
    }
	}
	return $input;
}

/**
 * Display main settings title.
 */
function eq3f_main_setting_section_callback_new() {
	// Use a print with p tags to get this to do something.
}

/**
 * Display client settings title.
 */
function eq3f_client_client_setting_section_callback_new() {
	// Use a print with p tags to get this to do something.
}

/**
 * Display form configuration settings title.
 */
function eq3f_feedback_form_configuration_setting_section_callback_new() {
	// Use a print with p tags to get this to do something.
}

/**
 * Display page configuration settings title.
 */
function eq3f_feedback_page_configuration_setting_section_callback_new() {
	// Use a print with p tags to get this to do something.
}

/**
 * Display form weights settings title.
 */
function eq3f_feedback_form_weights_setting_section_callback_new() {
	// Use a print with p tags to get this to do something.
}

/**
 * Display form descriptions title.
 */
function eq3f_feedback_form_descriptions_section_callback_new() {
	// Use a print with p tags to get this to do something.
}

/**
 * Display form hiddens title.
 */
function eq3f_feedback_form_hiddens_section_callback_new() {
	// Use a print with p tags to get this to do something.
}


/**
 * Display link to edit thank you page.
 */
function eq3f_thankyou_page_edit_callback_new() {
	$options          = eq3f_get_options_new();
	$thankyou_page_id = $options['thankyou_page_id'];
	$href             = admin_url( "post.php?post=$thankyou_page_id&action=edit" );
	print "<a href='" . esc_html( $href ) . "'>Edit Thank you Page</a>";
}

/**
 * Function to render a text input field.
 *
 * @param array $data Representation of a field.
 */
function eq3f_display_text_field_new( $data = array() ) {
	if ( isset( $data['size'] ) ) {
		$size_attr = ' size="' . $data['size'] . '" ';
	} else {
		$size_attr = '';
	}
	$options = eq3f_get_options_new();
	print '<input type="text" ';
	print esc_attr( $size_attr );
	print 'name="enquir3_feedback_options_new[' . esc_attr( $data['name'] ) . ']" ';
	print 'value="' . esc_html( $options[ $data['name'] ] ) . '"/>';
	if ( isset ( $data['description'] ) ) {
		print '<div class="description">'.$data['description'].'</div>';
	}
	print '<br />';
}

/**
 * Function to render a text input field.
 *
 * @param array $data Representation of a field.
 */
function eq3f_display_text_field_index_new( $data = array() ) {
	if ( isset( $data['size'] ) ) {
		$size_attr = ' size="' . $data['size'] . '" ';
	} else {
		$size_attr = '';
	}
	$options = eq3f_get_options_new();
	print '<input type="text" ';
	print esc_attr( $size_attr );
	print 'name="enquir3_feedback_options_new[' . esc_attr( $data['name'] ) . ']['.$data['index'].']"';
	print 'value="' . esc_html( $options[ $data['name'] ][$data['index']] ) . '"/>';
	if ( isset ( $data['description'] ) ) {
		print '<div class="description">'.$data['description'].'</div>';
	}
	print '<br />';
}

/**
 * Function to render a text area field.
 *
 * @param array $data Representation of a field.
 */
function eq3f_display_text_area_new( $data = array() ) {
	if ( isset( $data['size'] ) ) {
		$size_attr = ' size="' . $data['size'] . '" ';
	} else {
		$size_attr = '';
	}
	$options = eq3f_get_options_new();

	print '<textarea rows="10" cols="80" ';
	print 'name="enquir3_feedback_options_new[' . esc_attr( $data['name'] ) . '][value]">';
	print esc_html( $options[ $data['name'] ]['value'] );
	print '</textarea>';
	print '<br />';

	print '<input type="hidden" ';
	print esc_attr( $size_attr );
	print 'name="enquir3_feedback_options_new[' . esc_attr( $data['name'] ) . '][format]" ';
	print 'value="' . esc_html( $options[ $data['name'] ]['format'] ) . '"/>';

	if ( isset ( $data['description'] ) ) {
		print '<div class="description">'.$data['description'].'</div>';
	}
	print '<br />';
}

/**
 * Function to render a hidden input field.
 *
 * @param array $data Representation of a field.
 */
function eq3f_display_hidden_field_new( $data = array() ) {
	$options = eq3f_get_options_new();
	?>
	<input id="eq3f-hidden-field-<?php echo esc_attr( $data['name'] ); ?>" type="hidden" name="enquir3_feedback_options_new[<?php echo esc_attr( $data['name'] ); ?>]" value="<?php echo esc_html( $options[ $data['name'] ] ); ?>"/><br />
	<script type="text/javascript">jQuery("#eq3f-hidden-field-<?php echo esc_attr( $data['name'] ); ?>").parents('tr').hide();</script> 
	<?php
}

/**
 * Function to render a checkbox.
 *
 * @param array $data Representation of a field.
 */
function eq3f_display_check_box_new( $data = array() ) {
	$options = eq3f_get_options_new();
	?>
	<input type="checkbox" name="enquir3_feedback_options_new[<?php echo esc_attr( $data['name'] ); ?>]" 
		<?php if ( $options[ $data['name'] ] ) { echo ' checked="checked" '; } ?>
	/>
	<?php
}

/**
 * Function to render a checkbox group.
 *
 * @param array $data Representation of a field.
 */
function eq3f_display_check_box_new_group( $data = array() ) {
	$options = eq3f_get_options_new();
	?>
	<?php
	foreach ( $data['choices'] as $value => $item ) {
		// Exclude selected service taxonomy.
		if ( $value === (int) $options['feedback_service_taxonomy'] ) {
			continue;
		}
		if ( isset( $options[ $data['name'] ][ $value ] ) ) {
			$checked = 'checked';
		} else {
			$checked = '';
		}
		?>

		<div>
			<input type="checkbox" name="enquir3_feedback_options_new[<?php echo esc_attr( $data['name'] ); ?>][<?php echo esc_attr( $value ); ?>]" value="<?php echo esc_attr( $value ); ?>" <?php echo esc_attr( $checked ); ?>/>
			<?php echo esc_attr( $item ); ?>
		</div>
	<?php } ?>

	<?php
}


/**
 * Function to render a select list.
 *
 * @param array $data Representation of a field.
 */
function eq3f_display_select_list_new( $data = array() ) {
	$options = eq3f_get_options_new();
	print '<select name="enquir3_feedback_options_new[' . esc_attr( $data['name'] ) . ']">';
	foreach ( $data['choices'] as $value => $item ) {
		print '<option value="' . esc_attr( $value ) . '" ' . selected( intval( $options[ $data['name'] ] ) === $value )  . '>';
		print esc_attr( $item );
		print '</option>';
	}
	print '</select>';  

	if ( isset ( $data['description'] ) ) {
		print '<div class="description">'.$data['description'].'</div>';
	}
}

/**
 * Function to render a select list.
 *
 * @param array $data Representation of a field.
 */
function eq3f_display_select_list_index_new( $data = array() ) {
	$options = eq3f_get_options_new();
	print '<select name="enquir3_feedback_options_new[' . esc_attr( $data['name'] ) . ']['.$data['index'].']">';
	foreach ( $data['choices'] as $value => $item ) {
		print '<option value="' . esc_attr( $value ) . '" ';
		print selected( intval( $options[ $data['name'] ][$data['index']] ), $value, false );
		print '>';
		print esc_attr( $item );
		print '</option>';
	}
	print '</select>';  

	if ( isset ( $data['description'] ) ) {
		print '<div class="description">'.$data['description'].'</div>';
	}
}

// Register action hook to be called when the administration menu is
// being constructed.
add_action( 'admin_menu', 'eq3f_settings_menu_new' );

/**
 * Function called when the admin menu is constructed to add a new menu item
 * to the structure
 */
function eq3f_settings_menu_new() {
	add_options_page(
		'Enquir3 Feedback',
		'Enquir3 Feedback',
		'manage_options',
		'remsto_feedback_settings_new',
		'eq3f_config_page_new'
	);
}

/**
 * Function called to render the contents of the plugin
 * configuration page.
 */
function eq3f_config_page_new() {
	wp_enqueue_script( 'eq3f-collapse-settings-section' );
	wp_enqueue_style( 'eq3f-feedback-admin' );
	?>
	<div id="remsto_feedback-general" class="wrap">
		<h2>Enquir3 Feedback Settings</h2>

		<form name="enquir3_feedback_options_form_settings_api" method="post" action="options.php">

			<?php settings_fields( 'remsto_feedback_settings_new' ); ?>

			<?php do_settings_sections( 'remsto_feedback_settings_section_new' ); ?> 

			<input type="submit" value="Submit" class="button-primary" />
		</form>
	</div>
	<?php
}


/**
 * Get default labels for feedback form
 */
function eq3f_get_default_form_labels() {
  $labels = array(
    'page_title' => 'Leave Feedback',
    'title' => 'Title',
    'intro_text' => array(
      'value' => '',
      'format' => 'full_html',
    ),
    'stood_out' => 'What stood out about the service you received?',
    'recommend' => 'Would you recommend our services?',
    'staff_service' => 'Staff member served by or service(s) provided',
    'rating_promised' => 'Was the service delivered as promised?',
    'rating_value' => 'How valuable do you find the service received?',
    'rating_helpful' => 'Were they considerate and helpful?',
    'rating_communication' => 'Please rate the quality of communication',
    'better' => 'If anything, what could we do better?',
    'anonymous' => 'If you wish your feedback to be kept anonymous please click here',
    'concealed' => 'If you are happy to leave your details but do not want them published, please click here',
    'your_details_text' => 'Please enter your details, this helps us to ensure that all feedback is genuine.',
    'first_name' => 'First name',
    'last_name' => 'Last name',
    'email' => 'Your email address',
    'optional_text' => 'Where possible, please complete these optional fields as this will further enhance your feedback.',
    'town' => 'Town',
    'county' => 'Postcode',
    'telephone' => 'Telephone',
    'company' => 'Company name (if applicable)',
    'business_category' => 'Business category (if applicable)',
    'position' => 'Position (if applicable)',
    'website' => 'Website',
    'services_provided' => 'Services provided',
    'extra_rating_questions' => array('', '', '', ''),
    'extra_worded_questions' => array('', '', '', ''),
  );

  return $labels;
}

/**
 * Get default labels for feedback page
 */
function eq3f_get_default_page_labels() {
  $labels = array(
    'page_title' => 'Feedback',
    'intro_text' => array('value' => '', 'format' => 'full_html'),
  );

  return $labels;
}

function eq3f_get_default_form_weights() {
  $weights = array(
    'intro_text' => 1,
    'stood_out' => 2,
    'recommend' => 3,
    'staff_service' => 4,
    'rating_promised' => 5,
    'rating_value' => 6,
    'rating_helpful' => 7,
    'rating_communication' => 8,
    'better' => 9,
    'your_details_group' => 10,
    'optional_group' => 11,
    'services' => 12,
    'moderation_group' => 13,
    'more_services_group' => array(14),
    'extra_rating_questions' => array(20, 21, 22, 23),
    'extra_worded_questions' => array(30, 31, 32, 33),
  );
  return $weights;
}

/**
 * Get default mandatories for feedback form
 */
function eq3f_get_default_form_mandatories() {
  $mandatories = array(
    'extra_rating_questions' => array(0, 0, 0, 0),
    'extra_worded_questions' => array(0, 0, 0, 0),
  );

  return $mandatories;
}

function eq3f_get_default_form_descriptions() {
  $descriptions = array(
    'stood_out' => '',
    'recommend' => '',
    'staff_service' => '',
    'rating_promised' => '',
    'rating_value' => '',
    'rating_helpful' => '',
    'rating_communication' => '',
    'better' => '',
    'your_details_group' => '',
    'optional_group' => '',
    'services' => '',
    'moderation_group' => '',
    'more_services_group' => array(0 => ''),
    'extra_rating_questions' => array('', '', '', ''),
    'extra_worded_questions' => array('', '', '', ''),
  );
  return $descriptions;
}

function eq3f_get_default_form_hiddens() {
  $hiddens = array(
    'staff_service' => 0,
    'better' => 0,
    'optional_group' => 0,
    'services' => 0,
    'more_services_group' => array(0 => 0),
    'extra_rating_questions' => array(0, 0, 0, 0),
    'extra_worded_questions' => array(0, 0, 0, 0),
  );
  return $hiddens;
}

function eq3f_settings_save_failure() {
		?>
		<div class="error notice">
			<p>Feedback settings are not correct.</p>
			<p>Please check that the client key, client ID, Remote URL and Listing ID have been entered correctly.</p>
		</div>
		<?php
}
