<?php
/**
 * Off Canvas rules Metabox options.
 *
 * @author     ThemeFusion
 * @copyright  (c) Copyright by ThemeFusion
 * @link       https://avada.com
 * @package    Avada
 * @subpackage off-canvas
 */

/**
 * Off Canvas rules settings
 *
 * @param array $sections An array of our sections.
 * @return array
 */
function avada_page_options_tab_off_canvas_rules( $sections ) {
	if ( ! function_exists( 'get_editable_roles' ) ) {
		require_once ABSPATH . 'wp-admin/includes/user.php';
	}
	$user_roles       = get_editable_roles();
	$user_roles_array = [];
	foreach ( $user_roles as $id => $role ) {
		$user_roles_array[ $id ] = translate_user_role( $role['name'] );
	}
	$is_builder = isset( $_GET['builder'] ) && isset( $_GET['builder_id'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended

	$sections['off_canvas_rules'] = [
		'label'    => esc_html__( 'Rules', 'Avada' ),
		'alt_icon' => 'fusiona-rules',
		'id'       => 'off_canvas_rules',
		'fields'   => [
			'publish_date_after'   => [
				'type'        => 'date_time_picker',
				'label'       => esc_html__( 'Published After', 'Avada' ),
				'description' => esc_html__( 'Controls when the Off-Canvas should be published. Use SQL time format: YYYY-MM-DD HH:MM:SS. E.g: 2016-05-10 12:30:00. Timezone of site is used. Leave empty for no restriction.', 'Avada' ),
				'id'          => 'publish_date_after',
				'transport'   => 'postMessage',
				'value'       => '',
			],
			'publish_date_until'   => [
				'type'        => 'date_time_picker',
				'label'       => esc_html__( 'Published Until', 'Avada' ),
				'description' => esc_html__( 'Controls date and time the Off-Canvas should be published until. Use SQL time format: YYYY-MM-DD HH:MM:SS. E.g: 2016-05-10 12:30:00. Timezone of site is used. Leave empty for no restriction.', 'Avada' ),
				'id'          => 'publish_date_until',
				'transport'   => 'postMessage',
				'value'       => '',
			],
			// Frequency.
			'frequency'            => [
				'type'        => 'select',
				'label'       => esc_html__( 'Frequency', 'Avada' ),
				'description' => esc_html__( 'Select display frequency for the Off Canvas.', 'Avada' ),
				'id'          => 'frequency',
				'default'     => 'forever',
				'transport'   => 'postMessage',
				'choices'     => [
					'forever' => esc_html__( 'Show every time', 'Avada' ),
					'close'   => esc_html__( 'Show every time until user closes it', 'Avada' ),
					'once'    => esc_html__( 'Show once', 'Avada' ),
					'xtimes'  => esc_html__( 'Show up to x times', 'Avada' ),
					'session' => esc_html__( 'Show every session', 'Avada' ),
					'day'     => esc_html__( 'Show every day', 'Avada' ),
					'week'    => esc_html__( 'Show every week', 'Avada' ),
					'month'   => esc_html__( 'Show every month', 'Avada' ),
					'xdays'   => esc_html__( 'Show on specific days', 'Avada' ),
				],
			],
			'frequency_xdays'      => [
				'type'        => 'text',
				'label'       => esc_html__( 'Number Of Days', 'Avada' ),
				'description' => esc_html__( 'Set the number of days to display the off canvas.', 'Avada' ),
				'id'          => 'frequency_xdays',
				'transport'   => 'postMessage',
				'dependency'  => [
					[
						'field'      => 'frequency',
						'value'      => 'xdays',
						'comparison' => '==',
					],
				],
			],
			'frequency_xtimes'     => [
				'type'        => 'text',
				'label'       => esc_html__( 'Number Of times', 'Avada' ),
				'description' => esc_html__( 'Set the Off Canvas display count ex: 3.', 'Avada' ),
				'id'          => 'frequency_xtimes',
				'transport'   => 'postMessage',
				'dependency'  => [
					[
						'field'      => 'frequency',
						'value'      => 'xtimes',
						'comparison' => '==',
					],
				],
			],

			// Show after x page views.
			'after_x_page_views'   => [
				'type'        => 'radio-buttonset',
				'label'       => esc_html__( 'Show After X Page Views', 'Avada' ),
				'description' => esc_html__( 'Display Off Canvas after visitor views a specific number of pages.', 'Avada' ),
				'id'          => 'after_x_page_views',
				'default'     => 'no',
				'transport'   => 'postMessage',
				'choices'     => [
					'yes' => esc_html__( 'Yes', 'Avada' ),
					'no'  => esc_html__( 'No', 'Avada' ),
				],
			],
			'number_of_page_views' => [
				'type'        => 'text',
				'label'       => esc_html__( 'Number Of Page Views', 'Avada' ),
				'description' => esc_html__( 'Set the number of page views needed to display the Off Canvas, ex: 3.', 'Avada' ),
				'id'          => 'number_of_page_views',
				'default'     => '',
				'transport'   => 'postMessage',
				'dependency'  => [
					[
						'field'      => 'after_x_page_views',
						'value'      => 'yes',
						'comparison' => '==',
					],
				],
			],
			// Show after x sessions.
			'after_x_sessions'     => [
				'type'        => 'radio-buttonset',
				'label'       => esc_html__( 'Show After X Sessions', 'Avada' ),
				'description' => esc_html__( 'Display Off Canvas after a specific number of sessions.', 'Avada' ),
				'id'          => 'after_x_sessions',
				'default'     => 'no',
				'transport'   => 'postMessage',
				'choices'     => [
					'yes' => esc_html__( 'Yes', 'Avada' ),
					'no'  => esc_html__( 'No', 'Avada' ),
				],
			],
			'number_of_sessions'   => [
				'type'        => 'text',
				'label'       => esc_html__( 'Number Of Sessions', 'Avada' ),
				'description' => esc_html__( 'Set the number of visiting sessions needed to display the Off Canvas, ex: 3.', 'Avada' ),
				'id'          => 'number_of_sessions',
				'default'     => '',
				'transport'   => 'postMessage',
				'dependency'  => [
					[
						'field'      => 'after_x_sessions',
						'value'      => 'yes',
						'comparison' => '==',
					],
				],
			],
			'number_of_times'      => [
				'type'        => 'text',
				'label'       => esc_html__( 'Number Of Times', 'Avada' ),
				'description' => esc_html__( 'Set the number of times the Off Canvas should be displayed, ex: 3.', 'Avada' ),
				'id'          => 'number_of_times',
				'default'     => '',
				'transport'   => 'postMessage',
				'dependency'  => [
					[
						'field'      => 'for_x_times',
						'value'      => 'yes',
						'comparison' => '==',
					],
				],
			],

			// Show When Arriving From.
			'when_arriving_from'   => [
				'type'        => 'multiple_select',
				'label'       => esc_html__( 'Show When Arriving From', 'Avada' ),
				'description' => esc_html__( 'Choose when Off Canvas should be displayed depending on referring link type.', 'Avada' ),
				'id'          => 'when_arriving_from',
				'default'     => '',
				'transport'   => 'postMessage',
				'choices'     => [
					'internal' => esc_html__( 'Internal Links', 'Avada' ),
					'external' => esc_html__( 'External Links', 'Avada' ),
					'search'   => esc_html__( 'Search Engine', 'Avada' ),
				],
			],

			// Consent interaction.
			'until_consent_interaction' => [
				'type'        => 'radio-buttonset',
				'label'       => esc_html__( 'Privacy & Consent Interaction Behavior', 'Avada' ),
				'description' => esc_html__( '"Display Until Consented" opens the Off Canvas for visitors who have not yet saved their consent choices. Once done, it will no longer open. "Display Until Consented & Close Off Canvas" works the same but also auto-closes the Off Canvas automatically once the visitor saves their consent choices (requires a Privacy Element with "Save Action" set to "AJAX").', 'Avada' ),
				'id'          => 'until_consent_interaction',
				'default'     => 'none',
				'transport'   => 'postMessage',
				'choices'     => [
					'none'                => esc_html__( 'None', 'Avada' ),
					'until_consent'       => esc_html__( 'Display Until Consented', 'Avada' ),
					'until_consent_close' => esc_html__( 'Display Until Consented & Close Off Canvas', 'Avada' ),
				],
			],

			// Users rule.
			'users'                => [
				'type'        => 'radio-buttonset',
				'label'       => esc_html__( 'Users', 'Avada' ),
				'description' => esc_html__( 'Choose the user type that will be able to see the Off Canvas.', 'Avada' ),
				'id'          => 'users',
				'default'     => 'all',
				'transport'   => 'postMessage',
				'choices'     => [
					'all'        => esc_html__( 'All users', 'Avada' ),
					'logged-in'  => esc_html__( 'Logged in users', 'Avada' ),
					'logged-out' => esc_html__( 'Logged out users', 'Avada' ),
				],
			],
			'users_roles'          => [
				'type'        => 'multiple_select',
				'label'       => esc_html__( 'User Roles', 'Avada' ),
				'description' => esc_html__( 'Display Off Canvas for specific user roles. Leave blank for all.', 'Avada' ),
				'id'          => 'users_roles',
				'default'     => '',
				'transport'   => 'postMessage',
				'choices'     => $user_roles_array,
				'dependency'  => [
					[
						'field'      => 'users',
						'value'      => 'logged-in',
						'comparison' => '==',
					],
				],
			],

			// Device.
			'device'               => [
				'type'        => 'multiple_select',
				'label'       => esc_html__( 'Device', 'Avada' ),
				'description' => esc_html__( 'Display Off Canvas for specific device types. Leave blank for all.', 'Avada' ),
				'id'          => 'device',
				'default'     => '',
				'transport'   => 'postMessage',
				'choices'     => [
					'desktop' => esc_html__( 'Desktop', 'Avada' ),
					'tablet'  => esc_html__( 'Tablet', 'Avada' ),
					'mobile'  => esc_html__( 'Mobile', 'Avada' ),
				],
			],
		],
	];

	return apply_filters( 'avada_off_canvas_rules_sections', $sections );

}
