<?php
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
// phpcs:disable WordPress.NamingConventions.PrefixAllGlobals
add_meta_box(
	'ppw_add_meta_box',
	__( 'Password Protect WordPress', 'password-protect-page' ),
	apply_filters( PPW_Constants::HOOK_FUNCTION_HANDLE_META_BOX, 'ppw_free_feature_set_password_in_meta_box' ),
	apply_filters( PPW_Constants::HOOK_META_BOX_POSITION, array( 'page', 'post' ) ),
	'side',
	'high'
);

/**
 * Function to render meta box set password for pages, posts in free version
 *
 * @param $post
 */
function ppw_free_feature_set_password_in_meta_box( $post ) {
	$raw_data           = get_post_meta( $post->ID, PPW_Constants::POST_PROTECTION_ROLES, true );
	$protected_roles    = ppw_free_fix_serialize_data( $raw_data );
	$multiple_passwords = get_post_meta( $post->ID, PPW_Constants::GLOBAL_PASSWORDS, true );
	$password           = '';
	if ( ! empty( $multiple_passwords ) && is_array( $multiple_passwords ) ) {
		$password                  = esc_textarea( implode( "\n", $multiple_passwords ) );
		$global_password           = implode( ' ', $multiple_passwords );
		$protected_roles['global'] = $global_password;
	}

	$have_password_roles = array_keys( array_filter( $protected_roles, function ( $val ) {
		return $val !== '';
	} ) );

	$no_have_password_roles = sizeof( $have_password_roles );

	$no_roles = $no_have_password_roles > 1 ? $no_have_password_roles . ' roles' : $no_have_password_roles . ' role';

	$roles = get_editable_roles();

	?>
	<div id="passwords-roles-map" class="ppwp-post-protection">
		<input type="hidden" id="ppw_meta_box_nonce"
		       value="<?php echo esc_attr( wp_create_nonce( PPW_Constants::META_BOX_NONCE ) ); ?>">
		<span id="post-protection-status"> <?php esc_html_e( 'Password protected by', 'password-protect-page' ); ?>
                <span id="number_roles"><?php echo esc_html( $no_roles ); ?></span>
            </span><a href="#protection" class="edit-post-protection hide-if-no-js pup-tooltip" role="button"
		              style="display: inline;">
			<span class="roles" aria-hidden="true"><?php esc_html_e( 'Edit', 'password-protect-page' ); ?></span>
		</a>
		<div style="display: none" id="post-protection">
			<p id="all_roles_select">
				<?php foreach ( $have_password_roles as $key => $role ): ?>
					<span><?php echo esc_html( $role ); ?></span>
				<?php endforeach; ?>
			</p>
			<div>
				<?php foreach ( $protected_roles as $key => $value ): ?>
					<span style="display: none"
					      id="post-protection-password-<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $value ); ?></span>
				<?php endforeach; ?>
			</div>
			<div>
				<label for="post-protection-role"><?php esc_html_e( 'Role', 'password-protect-page' ); ?></label>
				<select class="pda-selected-role-select2" name="post-protection-role" id="is_role_selected">
					<option value="global"><?php esc_html_e( 'Global', 'password-protect-page' ); ?></option>
					<?php foreach ( $roles as $role_name => $role_info ): ?>
						<option <?php echo esc_attr( in_array( $role_name, array() ) ? 'selected="selected"' : '' ); ?>" value="<?php echo esc_attr( $role_name ); ?>">
						<?php echo esc_html( $role_name ); ?>
						</option>
					<?php endforeach; ?>
				</select>
			</div>

			<!-- Region Data Save in HTML Tag START-->
			<?php foreach ( $roles as $role_name => $role_info ): ?>
				<?php $value = array_key_exists( $role_name, $protected_roles ) ? $protected_roles[ $role_name ] : ""; ?>
				<input type="hidden" id="<?php echo esc_attr( $role_name ); ?>"
				       name="data[<?php echo esc_attr( $role_name ); ?>]"
				       value="<?php echo esc_attr( $value ); ?>"/>
			<?php endforeach; ?>
			<!-- Region Data Save in HTML Tag END-->

			<div class="ppwp_wrap_role_password">
				<label id="label-password-post"><?php esc_html_e( 'Passwords', 'password-protect-page' ); ?></label>
				<input autocomplete="off" type="text" class="password post-protection-password"
				       placeholder="Enter password"
				       name="post-protection-password"
				       id="post-protection-password"/>
				<textarea rows="3" id="ppwp_multiple_password" class="ppwp_multiple_password"
				          placeholder="<?php echo esc_attr__( 'Enter one password per line', 'password-protect-page' ); ?>', '<?php echo esc_html__('PPWP Lite', 'password-protect-page' ); ?>"><?php echo esc_html( $password, 'password-protect-page' ); ?></textarea>
			</div>
			<p class="ppwp-wrap-submit-hide">
				<input type="hidden" value="<?php echo esc_attr( $post->ID ); ?>" id="id_page_post">
				<button href="#protection" id="save_password" class="ppwp-button-submit"><?php esc_html_e( 'Submit', 'password-protect-page' ); ?></button>
				<a class="cancel-pda-protection-map button-cancel ppwp-button-hide"><?php esc_html_e( 'Hide', 'password-protect-page' ); ?></a>
			</p>
		</div>
	</div>
	<?php
	$asset_services = new PPW_Asset_Services( '', '' );
	$asset_services->load_assets_for_meta_box();
}
