<?php
/**
 * Stash v3 Destination Manage Page.
 *
 * Incoming variables:
 *     $destination
 *     $destination_id
 *
 * Maybe incoming:
 *     $live_mode
 *     $hide_quota
 *
 * @author Dustin Bolton 2016.
 * @package BackupBuddy
 */

if ( isset( $destination['disabled'] ) && '1' == $destination['disabled'] ) {
	die( __( '<span class="description">This destination is currently disabled based on its settings. Re-enable it under its Advanced Settings.</span>', 'it-l10n-backupbuddy' ) );
}

/**
 * Add a body class to the Stash Live listing iframe content.
 *
 * @param string $body_classes String of current body classes.
 *
 * @return string  Modified with the Stash Live Admin Class.
 */
function backupbuddy_stash3_iframe_admin_body_class( $body_classes = '' ) {
	return $body_classes .= ' backupbuddy-admin-page-stash3';
}
add_filter( 'backupbuddy_admin_iframe_body_classes', 'backupbuddy_stash3_iframe_admin_body_class' );

if ( false !== stristr( pb_backupbuddy::_GET( 'page' ), 'backupbuddy' ) ) {
	add_action( 'in_admin_header', 'bb_admin_head' );
}

if ( ! isset( $destination_id ) ) {
	$destination_id = pb_backupbuddy::_GET( 'destination_id' );
}

$remote_path = '';
if ( '' != pb_backupbuddy::_GET( 'remote_path' ) ) {
	$remote_path = pb_backupbuddy::_GET( 'remote_path' );
}

if ( ! isset( $live_mode ) ) {
	$live_mode  = false;
	$url_prefix = pb_backupbuddy::ajax_url( 'remoteClient' ) . '&destination_id=' . $destination_id . '&remote_path=' . $remote_path;
} else {
	$url_prefix = pb_backupbuddy::ajax_url( 'live_stash_files' ); //pb_backupbuddy::page_url() . '&live_action=view_stash_files';
}

if ( ! isset( $hide_quota ) ) {
	$hide_quota = false;
}

// Load required files.
require_once pb_backupbuddy::plugin_path() . '/destinations/s33/init.php';

// Settings.
if ( isset( pb_backupbuddy::$options['remote_destinations'][ $destination_id ] ) ) {
	if ( ! isset( pb_backupbuddy::$options['remote_destinations'][ $destination_id ] ) ) {
		die( 'Error #9828332: Destination not found with id `' . htmlentities( $destination_id ) . '`.' );
	}
	$destination = &pb_backupbuddy::$options['remote_destinations'][ $destination_id ];
	$destination = pb_backupbuddy_destination_stash3::_formatSettings( $destination );
}

// Handle deletion.
if ( 'delete_backup' === pb_backupbuddy::_POST( 'bulk_action' ) ) {
	pb_backupbuddy::verify_nonce();
	$delete_files = array();
	foreach ( (array) pb_backupbuddy::_POST( 'items' ) as $file ) {
		$file      = $file;
		$start_pos = pb_backupbuddy_destination_stash3::strrpos_count( $file, '/', 2 ) + 1; // next to last slash.
		$file      = substr( $file, $start_pos );
		if ( false !== strstr( $file, '?' ) ) {
			$file = substr( $file, 0, strpos( $file, '?' ) );
		}
		$delete_files[] = $file;
	}

	if ( ! class_exists( 'pb_backupbuddy_destinations' ) ) {
		require_once pb_backupbuddy::plugin_path() . '/destinations/bootstrap.php';
	}

	if ( true === pb_backupbuddy_destinations::delete( $destination, $delete_files ) ) {
		pb_backupbuddy::alert( 'Deleted ' . implode( ', ', $delete_files ) . '.' );
	} else {
		pb_backupbuddy::alert( 'Failed to delete one or more files. Details: `' . $response . '`.' );
	}
	echo '<br>';
} // end deletion.

// Handle copying files to local.
if ( pb_backupbuddy::_GET( 'cpy' ) ) {
	pb_backupbuddy::alert( 'The remote file is now being copied to your local backups. If the transfer gets interrupted, click the "Refresh" icon after the transfer is complete to try again.' );
	echo '<br>';
	pb_backupbuddy::status( 'details', 'Scheduling Cron for creating Stash copy.' );

	$file = pb_backupbuddy::_GET( 'cpy' );
	backupbuddy_core::trigger_async_event( 'process_remote_copy', array( 'stash3', $file, $destination ) );

	backupbuddy_core::maybe_spawn_cron();
} // end copying to local.

backupbuddy_backups()->set_destination_id( $destination_id );

$backups = pb_backupbuddy_destination_stash3::listFiles( $destination );
if ( ! is_array( $backups ) ) {
	pb_backupbuddy::alert( 'Error #892329c: ' . $files );
	die();
}

if ( false === $hide_quota ) {
	$quota = pb_backupbuddy_destination_stash3::get_quota( $destination );
	pb_backupbuddy_destination_stash3::get_quota_bar( $quota, true );
}

backupbuddy_backups()->show_cleanup();

$backup_count = count( $backups );
$no_backups   = '';

if ( 0 === $backup_count ) {
	$no_backups = '<center>';
	if ( 'live' === $destination['type'] ) {
		$no_backups .= esc_html__( 'Your remote Solid Backups Stash storage does not contain any Snapshot zip files yet. It may take several minutes after a Snapshot for them to display.', 'it-l10n-backupbuddy' );
	} else {
		$no_backups .= esc_html__( 'Your remote Solid Backups Stash storage does not contain any traditional backup zip files yet.', 'it-l10n-backupbuddy' );
	}
	$no_backups .= '</center>';
}

// Render table listing files.
$table_args = array(
	'action'         => $url_prefix,
	'destination_id' => $destination_id,
	'class'          => 'minimal',
	'no-backups'     => $no_backups,
);

if ( 'live' === $destination['type'] ) {
	$table_args['bulk_actions'] = array();
}

backupbuddy_backups()->table( 'default', $backups, $table_args );

// Display troubleshooting subscriber key.

/*
//if ( 'live' == $destination['type'] ) {
?>
<script>
	// Create Base64 Object
	var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}

	jQuery( '.pb_backupbuddy_hoveraction_stash_download_file' ).click( function(e){
		e.preventDefault();
		url = Base64.decode( jQuery(this).attr( 'rel' ) );
		//console.dir( decoded );
		document.getElementById( 'stash_download_iframe' ).src = url;
	});
</script>
<iframe id="stash_download_iframe" style="display: none;"></iframe>
<?php
//}
*/
return;
