<?php
/*
 * Admin Page: Settings: OAuth Connection
 */

// stop direct access
if ( ! defined( 'ZEROBSCRM_PATH' ) ) {
	exit( 0 );
}

global $zbs;

// Load OAuth
$zbs->load_oauth_handler();

// Catch disconnect an OAuth:
if ( isset( $_GET['disconnect'] ) ) {

	$nonce_str     = ( isset( $_GET['_wpnonce'] ) ? $_GET['_wpnonce'] : '' );
	$nonceVerified = wp_verify_nonce( $nonce_str, 'disconnect_oauth' );

	if ( $nonceVerified ) {

		// attempt disconnect (clear tokens)
		$disconnect_provider = sanitize_text_field( $_GET['disconnect'] );

		if ( $zbs->oauth->legitimate_provider( $disconnect_provider ) ) {

			// retrieve existing token config
			$provider        = $zbs->oauth->get_provider( $disconnect_provider );
			$provider_config = $zbs->oauth->get_provider_config( $disconnect_provider );

			// unset it!
			$zbs->oauth->delete_provider_config( $disconnect_provider );

			zeroBSCRM_html_msg( 0, sprintf( __( 'Successfully disconnected %s', 'zero-bs-crm' ), $provider['name'] ) );

		}
	}
}

// edits?
if ( isset( $_GET['edit-provider'] ) && $zbs->oauth->legitimate_provider( $_GET['edit-provider'] ) ) {

	jpcrm_load_admin_page( 'settings/oauth-connections-edit' );

} else {

	// normal page view

	// here we only show settings where OAuth is enabled (requires PHP 7.3)
	if ( $zbs->oauth->enabled() ) {

		?><table class="table table-bordered table-striped wtab">
			<thead>
				<tr><th colspan="3"><?php esc_html_e( 'OAuth Connection', 'zero-bs-crm' ); ?></th></tr>
			</thead>
			<tbody>

				<?php

					// providers
					$providers = $zbs->oauth->get_providers();

					// cycle through providers & output
				foreach ( $providers as $provider_key => $provider ) {

					// pad this out, logos + connect buttons etc.
					?>
					<tr>
						<td><?php echo esc_html( $provider['name'] ); ?></td>
						<td>
							<p>
							<?php

							// if setup, show 'connect'/'reconnect'/'status'
							echo '<label>' . esc_html__( 'Status:', 'zero-bs-crm' ) . '</label> ' . $zbs->oauth->connection_status_string( $provider_key );

							?>
							</p>
						</td>
						<td style="text-align: center;">
							<?php
							switch ( $zbs->oauth->connection_status_string( $provider_key, true ) ) {

								case 'no-config':
									// nothing but config button

									break;

								case 'config-no-connect':
									// just connect button
									?>
									<button type="button" class="jpcrm-open-popup-href ui tiny green button" data-href="<?php echo esc_url( $zbs->oauth->get_callback_url( $provider_key ) ); ?>" data-title="<?php esc_attr_e( 'Connect to CRM', 'zero-bs-crm' ); ?>" data-width="600" data-height="600"><i class="plug icon"></i> <?php esc_html_e( 'Connect', 'zero-bs-crm' ); ?></button>
									<?php

									break;

								case 'seems-connected':
									// reconnect + disconnect buttons
									?>
									<div class="ui tiny buttons">
										<button type="button" class="jpcrm-open-popup-href ui tiny green button" data-href="<?php echo esc_url( $zbs->oauth->get_callback_url( $provider_key ) ); ?>" data-title="<?php esc_attr_e( 'Connect to CRM', 'zero-bs-crm' ); ?>" data-width="600" data-height="600"><i class="sync icon"></i> <?php esc_html_e( 'Reconnect', 'zero-bs-crm' ); ?></button>                                        
										<a href="<?php echo esc_url( wp_nonce_url( '?page=' . $zbs->slugs['settings'] . '&tab=oauth&disconnect=' . $provider_key, 'disconnect_oauth' ) ); ?>" class="ui tiny orange button"><i class="stop icon"></i> <?php esc_html_e( 'Disconnect', 'zero-bs-crm' ); ?></a>
									</div>
									<hr>
									<?php

									break;

							}
							?>
														
							<a href="<?php echo jpcrm_esc_link( $zbs->slugs['settings'] . '&tab=oauth&edit-provider=' . $provider_key ); ?>" class="ui tiny teal button"><i class="cog icon"></i> <?php esc_html_e( 'Connection Settings', 'zero-bs-crm' ); ?>
						</td>
					</tr>
					<?php

				}

				?>
			</tbody>
		</table>

		<?php
		##WLREMOVE
		?>
		<p style="text-align: center;padding:2em">                            
			<a href="<?php echo esc_url( $zbs->urls['oauthdocs'] ); ?>" target="_blank" class="ui tiny button"><?php esc_html_e( 'OAuth Connection Documentation', 'zero-bs-crm' ); ?></a>
		</p>
		<?php
		##/WLREMOVE
		?>
		<?php

	} else {

		// OAuth not enabled, probably lacking PHP version >= 7.3
		esc_html_e( 'Currently your system does not support an OAuth API connection.', 'zero-bs-crm' );
		?>
		<?php ##WLREMOVE ?>
		<a href="<?php echo esc_url( $zbs->urls['kb-oauth-requirements'] ); ?>" target="_blank">
		<?php esc_html_e( 'Read More', 'zero-bs-crm' ); ?>
		</a>
		<?php ##/WLREMOVE ?>
		<?php
	}
}
