function log_message($message)
 {
     if ($this->log_fp) {
         fwrite($this->log_fp, snapshot_utility_show_date_time(time(), 'Y-m-d H:i:s') . ": " . $message . "\r\n");
         fflush($this->log_fp);
     }
 }
		/**
		 * Metabox to show the backup archived files
		 *
		 * @since 1.0.2
		 *
		 * @param string $title - Title to be displayed in header of metabox
		 * @param array  $item 	- The current viewed item
		 * @param bool  $restore_option - If shown on the restore panel.
		 * @return none
		 */

		function snapshot_metabox_show_archive_files($title, $item, $restore_option=false) {
			global $wpmudev_snapshot;

			//echo "item<pre>"; print_r($item); echo "</pre>";
			?>
			<div class="postbox">
				<h3 class="hndle"><span><?php echo $title; ?></span></h3>
				<div class="inside">
				<?php
					if ($restore_option == true) {
						/* ?><p><?php _e('Select which archive to restore', SNAPSHOT_I18N_DOMAIN); ?></p><?php */
					} else {
						?>
						<p><?php _e('Below is a listing of your archives showing at most the most recent 6 entries. If the archive is local you can click on the filename to download it. You can also view or download the load file the archive.', SNAPSHOT_I18N_DOMAIN); ?> <a href="?page=snapshots_edit_panel&amp;snapshot-action=item-archives&amp;item=<?php echo $item['timestamp'] ?>"><?php
							_e('View all archives', SNAPSHOT_I18N_DOMAIN); ?></a></p>
						<?php
					}

					if ((isset($item['data'])) && (count($item['data']))) {

						$data_items = $item['data'];
						krsort($data_items);
						if (isset($_GET['snapshot-data-item'])) {
							$data_item_key = intval($_GET['snapshot-data-item']);
							if (isset($data_items[$data_item_key])) {
								$data_item = $data_items[$data_item_key];
								$data_items = array();
								$data_items[$data_item_key] = $data_item;
							}
						} else {
							if (count($data_items) > 6) {
								$data_items = array_slice($data_items, 0, 6, true);
							}
						}


						?>
						<table class="widefat">
						<thead>
							<tr class="form-field">
								<?php if ($restore_option == true) { ?><th class="snapshot-col-restore"><?php
									_e('Select', SNAPSHOT_I18N_DOMAIN); ?></th><?php } ?>
								<th class="snapshot-col-date"><?php _e('Date', SNAPSHOT_I18N_DOMAIN); ?></th>
								<th class="snapshot-col-file"><?php _e('File', SNAPSHOT_I18N_DOMAIN); ?></th>
								<th class="snapshot-col-notes"><?php _e('Notes', SNAPSHOT_I18N_DOMAIN); ?></th>
								<th class="snapshot-col-size"><?php _e('Size', SNAPSHOT_I18N_DOMAIN); ?></th>
								<?php
									if ($restore_option != true) {
										if ($wpmudev_snapshot->config_data['config']['absoluteFolder'] != true) {
											?><th class="snapshot-col-logs"><?php _e('Logs', SNAPSHOT_I18N_DOMAIN); ?></th><?php
										}
									}
								?>
							</tr>
						</thead>
						<tbody style="overflow: auto; max-height: 100px;">
						<?php
							$selected_item = "";
							foreach($data_items as $data_key => $data_item) {
								//echo "data_item<pre>"; print_r($data_item); echo "</pre>";

								if (!isset($row_class)) { $row_class = ""; }
								$row_class = ( $row_class == '' ? 'alternate' : '' );

								$backupLogFileFull = trailingslashit($wpmudev_snapshot->snapshot_get_setting('backupLogFolderFull'))
									. $item['timestamp'] ."_". $data_item['timestamp'] .".log";

								?><tr class="form-field <?php echo $row_class; ?>"><?php

									if ($restore_option == true) {
										?><td><input type="radio" name="snapshot-restore-file" class="snapshot-restore-file"
											id="snapshot-restore-<?php echo $data_item['timestamp']; ?>"
											value="<?php echo $data_item['timestamp']; ?>" <?php
											if ((isset($_GET['snapshot-data-item'])) && (intval($_GET['snapshot-data-item']) == $data_item['timestamp'])) {
												echo ' checked="checked" ';
											} ?>/></td><?php
									}

									?><td><?php echo snapshot_utility_show_date_time($data_item['timestamp']); ?></td><?php

									?><td><?php
									if ((empty($data_item['destination'])) || ($data_item['destination'] == "local")) {
										if (isset($data_item['filename'])) {
											$current_backupFolder = $wpmudev_snapshot->snapshot_get_item_destination_path($item, $data_item);
											if (empty($current_backupFolder)) {
												$current_backupFolder = $wpmudev_snapshot->snapshot_get_setting('backupBaseFolderFull');
											}
											$backupFile = trailingslashit(trim($current_backupFolder)) . $data_item['filename'];
											// If we don't find file is the alternate directory then try the default
											if (!file_exists($backupFile)) {
												if ( (isset($data_item['destination-directory'])) || (!empty($data_item['destination-directory'])) ){
													$current_backupFolder = $wpmudev_snapshot->snapshot_get_setting('backupBaseFolderFull');
													$backupFile = trailingslashit(trim($current_backupFolder)) . $data_item['filename'];
												}
											}

											if (file_exists($backupFile)) {

												echo '<a href="?page=snapshots_edit_panel&amp;snapshot-item='. $item['timestamp']
													.'&snapshot-data-item='. $data_item['timestamp']
													.'&snapshot-action=download-archive">'. $data_item['filename'] .'</a>';

											} else {
												echo  $data_item['filename'];
											}
										}
									} else {
										if (isset($data_item['filename'])) {

											$current_backupFolder = $wpmudev_snapshot->snapshot_get_setting('backupBaseFolderFull');
											$backupFile = trailingslashit(trim($current_backupFolder)) . $data_item['filename'];

											if (file_exists($backupFile)) {

												echo '<a href="?page=snapshots_edit_panel&amp;snapshot-item='. $item['timestamp']
													.'&snapshot-data-item='. $data_item['timestamp']
													.'&snapshot-action=download-archive">'. $data_item['filename'] .'</a>';

											} else {
												echo  $data_item['filename'];
											}
										}
									}
									?></td><?php

									?><td><?php

										$tables_sections_out 	= snapshot_utility_get_tables_sections_display($data_item);
										$files_sections_out 	= snapshot_utility_get_files_sections_display($data_item);

										if ((strlen($tables_sections_out['click'])) || (strlen($files_str))) {
											?><p><?php
											echo $tables_sections_out['click'];
											if (strlen($tables_sections_out['click'])) echo "</br />";
											echo $files_sections_out['click'];
											?></p><?php
											echo $tables_sections_out['hidden'];

										}

									?></td><?php

									?><td><?php
										if (isset($data_item['file_size'])) {
											$file_kb = snapshot_utility_size_format($data_item['file_size']);
											echo $file_kb;
										} else {
											echo "&nbsp;";
										}
									?></td><?php

									if ($restore_option != true) {
										?><td><?php
										if (file_exists($backupLogFileFull)) {

											echo '<a class="thickbox"
												href="'. admin_url()
												.'admin-ajax.php?action=snapshot_view_log_ajax&amp;width=800&amp;height=600&amp;snapshot-item='
												. $item['timestamp']
												.'&amp;snapshot-data-item='. $data_item['timestamp'] .'">'. __('view', SNAPSHOT_I18N_DOMAIN) .'</a>';
											echo " ";
											echo '<a href="?page=snapshots_edit_panel&amp;snapshot-action=download-log&amp;snapshot-item=' . $item['timestamp']
												.'&amp;snapshot-data-item='. $data_item['timestamp'] .'">'
												. __('download', SNAPSHOT_I18N_DOMAIN) .'</a>';



										} else {
											echo "&nbsp;";
										}

										?></td><?php
									}
								?></tr><?php
							}

						?></tbody></table><?php

					} else {
						_e('No Archives', SNAPSHOT_I18N_DOMAIN);
					}
				?>
				</div>
			</div>
			<?php
		}
		function snapshot_admin_show_item_archive_panel($item) {
			global $wpmudev_snapshot;

			$wpmudev_snapshot->archives_data_items_table->prepare_items($item);
			?>
		    <div class="wrap snapshot-wrap">

				<?php screen_icon('snapshot'); ?>
		        <h2>Snapshot Item Archive <a class="add-new-h2" href="<?php
					echo $wpmudev_snapshot->snapshot_get_setting('SNAPSHOT_MENU_URL'); ?>snapshots_edit_panel&amp;snapshot-action=edit&amp;item=<?php echo $item['timestamp']; ?>">Edit Item</a></h2>
				<?php //echo "_REQUEST<pre>"; print_r($_REQUEST); echo "</pre>"; ?>
		        <form id="snapshot-item-archives-form" method="get">
					<input type="hidden" name="snapshot-action" value="item-archives" />
					<input type="hidden" name="page" value="snapshots_edit_panel" />
					<input type="hidden" name="item" value="<?php echo $item['timestamp']; ?>" />

		            <!-- For plugins, we also need to ensure that the form posts back to our current page -->
		            <input type="hidden" name="page" value="<?php echo $_REQUEST['page'] ?>" />


					<div style="float: right" class="snapshot-system-time"><?php _e('Current time:', SNAPSHOT_I18N_DOMAIN); ?> <strong><?php
						echo snapshot_utility_show_date_time(time())?></strong></div>

					<?php if ($item['destination-sync'] == "mirror") {
						?><p><?php _e('This Snapshot item is setup as <strong>files sync</strong>. You cannot perform a resend of the individual items like on a normal archive. But you can click the <strong>resend</strong> on any item below to clear the last send dates on all files. This will force all files to be re-synced.', SNAPSHOT_I18N_DOMAIN); ?></p><?php
					}
					?>
		            <!-- Now we can render the completed list table -->
		            <?php 	$wpmudev_snapshot->archives_data_items_table->display(); ?>
		        </form>
		    </div>
			<?php
		}
		function column_interval($item) {
			global $wpmudev_snapshot;

			if ((!isset($item['interval'])) || ($item['interval'] == "immediate") || (empty($item['interval']))) {
				_e('Manual', SNAPSHOT_I18N_DOMAIN);

				$snapshot_locker = new SnapshotLocker($wpmudev_snapshot->snapshot_get_setting('backupLockFolderFull'), $item['timestamp']);
				if (!$snapshot_locker->is_locked()) {
					$locker_info = $snapshot_locker->get_locker_info();
					if ($locker_info['item_key'] == $item['timestamp']) {
						$file_progress = '';
						if ((isset($locker_info['file_offset'])) && ($locker_info['file_size'])) {
							$file_progress = sprintf("%0d%% ", ($locker_info['file_offset']/$locker_info['file_size'])*100);
						}
						//echo "locker_info<pre>"; print_r($locker_info); echo "</pre>";
						$snapshot_process_action = $locker_info['doing'] .' '. $file_progress .'(<a class="snapshot-abort-item" href="pid='.$locker_info['pid'] .
							'&amp;item='. $item['timestamp'] .'">'.
							__('abort', SNAPSHOT_I18N_DOMAIN) .'</a>)<br /><a class="snapshot-thickbox"
							href="'. admin_url()
							.'admin-ajax.php?action=snapshot_view_log_ajax&&amp;snapshot-item='
							. $item['timestamp']
							.'&amp;snapshot-data-item='. $locker_info['data_item_key'] .'&amp;live=1">'. __('Now', SNAPSHOT_I18N_DOMAIN) .'</a>';

						$running_timestamp = $locker_info['time_start'];
						?><br /><?php echo $snapshot_process_action; ?>: <?php echo snapshot_utility_show_date_time( $running_timestamp );
					}
				}

				unset($snapshot_locker);

			} else if ((isset($item['interval'])) && (strlen($item['interval']))) {
				$interval_text = snapshot_utility_get_sched_display($item['interval']);
				if ($interval_text) echo $interval_text;

				$snapshot_locker = new SnapshotLocker($wpmudev_snapshot->snapshot_get_setting('backupLockFolderFull'), $item['timestamp']);
				if (!$snapshot_locker->is_locked()) {
					$locker_info = $snapshot_locker->get_locker_info();
					//echo "locker_info<pre>"; print_r($locker_info); echo "</pre>";
					if ($locker_info['item_key'] == $item['timestamp']) {

						$snapshot_process_action = '<br /><a class="snapshot-thickbox"  href="'. admin_url()
							.'admin-ajax.php?action=snapshot_view_log_ajax&snapshot-item='. $item['timestamp'].
							'&amp;snapshot-data-item='. $locker_info['data_item_key'] .
							'&amp;live=1">'. __('Now', SNAPSHOT_I18N_DOMAIN) .'</a>: ';
						$snapshot_process_action .= $locker_info['doing'];

						$file_progress = '';
						if ((isset($locker_info['file_offset'])) && (intval($locker_info['file_offset']))
 						 && (isset($locker_info['file_size'])) && (intval($locker_info['file_size'])) ) {
							$file_progress = sprintf(" %0d%% ", (intval($locker_info['file_offset'])/intval($locker_info['file_size']))*100);
							$snapshot_process_action .= $file_progress;
						} else if ((isset($locker_info['files_count'])) && (intval($locker_info['files_count']))
						 && (isset($locker_info['files_total'])) && (intval($locker_info['files_total'])) ) {
							$file_progress = sprintf(" %0d%% ", (intval($locker_info['files_count'])/intval($locker_info['files_total']))*100);
							$snapshot_process_action .= $file_progress;

						} else {
							$snapshot_process_action .= " ";
						}

						$snapshot_process_action .= '(<a class="snapshot-abort-item" href="pid='.$locker_info['pid'] .
							'&amp;item='. $item['timestamp'] .'">'.
							__('abort', SNAPSHOT_I18N_DOMAIN) .'</a>)';
						echo $snapshot_process_action;
					}
				} else {
					//$snapshot_process_action 	= __('Next', SNAPSHOT_I18N_DOMAIN) .": ";
					$running_timestamp 			= wp_next_scheduled( 'snapshot_backup_cron', array(intval($item['timestamp'])) );
					echo "<br />". __('Next', SNAPSHOT_I18N_DOMAIN) .": ". snapshot_utility_show_date_time( $running_timestamp );
				}
				unset($snapshot_locker);
			}
			if ((isset($item['data'])) && (count($item['data']))) {
				$data_item = snapshot_utility_latest_data_item($item['data']);

				if (isset($data_item)) {
					if (isset($data_item['timestamp'])) {
						?><br /><?php _e('Last', SNAPSHOT_I18N_DOMAIN); ?>: <?php
							echo snapshot_utility_show_date_time($data_item['timestamp']);
					}
				}
			}
		}
		function column_date($data_item) {
			echo snapshot_utility_show_date_time($data_item['timestamp']);

		}