/htdocs/wp-content/plugins/backupbuddy/destinations/sftp/_manage.php
PHP | 158 lines | 116 code | 31 blank | 11 comment | 22 complexity | 8368c8c8fd66e57251d55a5e72ff2dd4 MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause, LGPL-3.0
- <?php
- // Authored by Dustin Bolton - Summer 2013.
- // Incoming variables: $destination
- pb_backupbuddy::$ui->title( 'sFTP' );
- require_once( pb_backupbuddy::plugin_path() . '/destinations/sftp/init.php' );
- pb_backupbuddy_destination_sftp::_init();
- // Delete sftp backups
- if ( pb_backupbuddy::_POST( 'bulk_action' ) == 'delete_backup' ) {
- pb_backupbuddy::verify_nonce();
-
- $delete_count = 0;
-
- // Connect to server.
- $server = $destination['address'];
- $port = '22'; // Default sFTP port.
- if ( strstr( $server, ':' ) ) { // Handle custom sFTP port.
- $server_params = explode( ':', $server );
- $server = $server_params[0];
- $port = $server_params[1];
- }
- pb_backupbuddy::status( 'details', 'Connecting to sFTP server...' );
- $sftp = new Net_SFTP( $server, $port );
- if ( ! $sftp->login( $destination['username'], $destination['password'] ) ) {
- pb_backupbuddy::status( 'error', 'Connection to sFTP server FAILED.' );
- return false;
- } else {
- pb_backupbuddy::status( 'details', 'Success connecting to sFTP server.' );
- }
- // Change to directory.
- pb_backupbuddy::status( 'details', 'Attempting to change into directory...' );
- if ( true === $sftp->chdir( $destination['path'] ) ) {
- pb_backupbuddy::status( 'details', 'Changed into directory.' );
- } else {
- pb_backupbuddy::status( 'error', 'Unable to change into specified path. Verify the path is correct with valid permissions.' );
- return false;
- }
-
-
- // loop through and delete ftp backup files
- foreach( (array)pb_backupbuddy::_POST( 'items' ) as $backup ) {
- // try to delete backup
- if ( true === $sftp->delete( $backup ) ) {
- $delete_count++;
- } else {
- pb_backupbuddy::alert( 'Unable to delete file `' . $destination['path'] . '/' . $backup . '`.' );
- }
- }
-
-
- if ( $delete_count > 0 ) {
- pb_backupbuddy::alert( sprintf( _n( 'Deleted %d file.', 'Deleted %d files.', $delete_count, 'it-l10n-backupbuddy' ), $delete_count ) );
- } else {
- pb_backupbuddy::alert( __('No backups were deleted.', 'it-l10n-backupbuddy' ) );
- }
- }
- // Connect to server.
- $server = $destination['address'];
- $port = '22'; // Default sFTP port.
- if ( strstr( $server, ':' ) ) { // Handle custom sFTP port.
- $server_params = explode( ':', $server );
- $server = $server_params[0];
- $port = $server_params[1];
- }
- pb_backupbuddy::status( 'details', 'Connecting to sFTP server...' );
- $sftp = new Net_SFTP( $server, $port );
- if ( ! $sftp->login( $destination['username'], $destination['password'] ) ) {
- pb_backupbuddy::status( 'error', 'Connection to sFTP server FAILED.' );
- return false;
- } else {
- pb_backupbuddy::status( 'details', 'Success connecting to sFTP server.' );
- }
- pb_backupbuddy::status( 'details', 'Attempting to create path (if it does not exist)...' );
- if ( true === $sftp->mkdir( $destination['path'] ) ) { // Try to make directory.
- pb_backupbuddy::status( 'details', 'Directory created.' );
- } else {
- pb_backupbuddy::status( 'details', 'Directory not created.' );
- }
- // List files.
- $files = $sftp->rawlist( $destination['path'] );
- $backups = array();
- $backup_list_temp = array();
- foreach( $files as $filename => $file ) {
- if ( false === stristr( $filename, 'backup' ) ) { // only show backup files
- continue;
- }
-
- if ( stristr( $filename, '-db-' ) !== false ) {
- $backup_type = 'Database';
- } elseif( stristr( $filename, '-full-' ) !== false ) {
- $backup_type = 'Full';
- } else {
- $backup_type = 'Unknown';
- }
-
- $last_modified = $file['mtime'];
-
- while( isset( $backup_list_temp[$last_modified] ) ) { // Avoid collisions.
- $last_modified += 0.1;
- }
- $backup_list_temp[$last_modified] = array(
- $filename,
- pb_backupbuddy::$format->date(
- pb_backupbuddy::$format->localize_time( $file['mtime'] )
- ) . '<br /><span class="description">(' .
- pb_backupbuddy::$format->time_ago( $file['mtime'] ) .
- ' ago)</span>',
- pb_backupbuddy::$format->file_size( $file['size'] ),
- $backup_type
- );
- }
- krsort( $backup_list_temp );
- $backup_list = array();
- foreach( $backup_list_temp as $backup_item ) {
- $backup_list[ $backup_item[0] ] = $backup_item; //str_replace( 'db/', '', str_replace( 'full/', '', $backup_item ) );
- }
- unset( $backup_list_temp );
- echo '<h3>', __('Viewing', 'it-l10n-backupbuddy' ), ' `' . $destination['title'] . '` (' . $destination['type'] . ')</h3>';
- // Render table listing files.
- if ( count( $backup_list ) == 0 ) {
- echo '<b>';
- _e( 'You have not completed sending any backups to this sFTP destination for this site yet.', 'it-l10n-backupbuddy' );
- echo '</b>';
- } else {
- pb_backupbuddy::$ui->list_table(
- $backup_list,
- array(
- 'action' => pb_backupbuddy::page_url() . '&custom=remoteclient&destination_id=' . htmlentities( pb_backupbuddy::_GET( 'destination_id' ) ) . '&remote_path=' . htmlentities( pb_backupbuddy::_GET( 'remote_path' ) ),
- 'columns' => array( 'Backup File', 'Uploaded <img src="' . pb_backupbuddy::plugin_url() . '/images/sort_down.png" style="vertical-align: 0px;" title="Sorted most recent first">', 'File Size', 'Type' ),
- //'hover_actions' => array( 'copy' => 'Copy to Local' ),
- 'hover_action_column_key' => '0',
- 'bulk_actions' => array( 'delete_backup' => 'Delete' ),
- 'css' => 'width: 100%;',
- )
- );
- }
- ?>