2016-11-28 21:52:15 -08:00
< ? php
if ( ! defined ( 'UPDRAFTPLUS_DIR' )) die ( 'No direct access allowed.' );
// Files can easily get too big for this method
2018-01-26 15:50:15 +01:00
if ( ! class_exists ( 'UpdraftPlus_BackupModule' )) require_once ( UPDRAFTPLUS_DIR . '/methods/backup-module.php' );
class UpdraftPlus_BackupModule_email extends UpdraftPlus_BackupModule {
2016-11-28 21:52:15 -08:00
public function backup ( $backup_array ) {
global $updraftplus , $updraftplus_backup ;
$updraft_dir = trailingslashit ( $updraftplus -> backups_dir_location ());
$email = $updraftplus -> just_one_email ( UpdraftPlus_Options :: get_updraft_option ( 'updraft_email' ), true );
if ( ! is_array ( $email )) $email = array ( $email );
foreach ( $backup_array as $type => $file ) {
$descrip_type = ( preg_match ( '/^(.*)\d+$/' , $type , $matches )) ? $matches [ 1 ] : $type ;
$fullpath = $updraft_dir . $file ;
if ( file_exists ( $fullpath ) && filesize ( $fullpath ) > UPDRAFTPLUS_WARN_EMAIL_SIZE ) {
$size_in_mb_of_big_file = round ( filesize ( $fullpath ) / 1048576 , 1 );
$toobig_hash = md5 ( $file );
$updraftplus -> log ( $file . ': ' . sprintf ( __ ( 'This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method.' , 'updraftplus' ), $size_in_mb_of_big_file ), 'warning' , 'toobigforemail_' . $toobig_hash );
}
$any_attempted = false ;
$any_sent = false ;
foreach ( $email as $ind => $addr ) {
if ( ! apply_filters ( 'updraftplus_email_wholebackup' , true , $addr , $ind , $type )) continue ;
foreach ( explode ( ',' , $addr ) as $sendmail_addr ) {
$send_short = ( strlen ( $sendmail_addr ) > 5 ) ? substr ( $sendmail_addr , 0 , 5 ) . '...' : $sendmail_addr ;
$updraftplus -> log ( " $file : email to: $send_short " );
$any_attempted = true ;
$subject = __ ( " WordPress Backup " , 'updraftplus' ) . ': ' . get_bloginfo ( 'name' ) . ' (UpdraftPlus ' . $updraftplus -> version . ') ' . get_date_from_gmt ( gmdate ( 'Y-m-d H:i:s' , $updraftplus -> backup_time ), 'Y-m-d H:i' );
2018-01-26 15:50:15 +01:00
$sent = wp_mail ( trim ( $sendmail_addr ), $subject , sprintf ( __ ( " Backup is of: %s. " , 'updraftplus' ), site_url () . ' (' . $descrip_type . ')' ), null , array ( $fullpath ));
2016-11-28 21:52:15 -08:00
if ( $sent ) $any_sent = true ;
}
}
if ( $any_sent ) {
if ( isset ( $toobig_hash )) {
2018-01-26 15:50:15 +01:00
$updraftplus -> log_remove_warning ( 'toobigforemail_' . $toobig_hash );
2016-11-28 21:52:15 -08:00
// Don't leave it still set for the next archive
unset ( $toobig_hash );
}
$updraftplus -> uploaded_file ( $file );
} elseif ( $any_attempted ) {
$updraftplus -> log ( 'Mails were not sent successfully' );
$updraftplus -> log ( __ ( 'The attempt to send the backup via email failed (probably the backup was too large for this method)' , 'updraftplus' ), 'error' );
} else {
$updraftplus -> log ( 'No email addresses were configured to send to' );
}
}
return null ;
}
2018-01-26 15:50:15 +01:00
/**
* Acts as a WordPress options filter
*
* @ param Array $options - An array of options
*
* @ return Array - the returned array can either be the set of updated settings or a WordPress error array
*/
public function options_filter ( $options ) {
global $updraftplus ;
return $updraftplus -> just_one_email ( $options );
}
2016-11-28 21:52:15 -08:00
public function config_print () {
?>
< tr class = " updraftplusmethod email " >
< th >< ? php _e ( 'Note:' , 'updraftplus' ); ?> </th>
< td >< ? php
$used = apply_filters ( 'updraftplus_email_whichaddresses' ,
sprintf ( __ ( " Your site's admin email address (%s) will be used. " , 'updraftplus' ), get_bloginfo ( 'admin_email' ) . ' - <a href="' . esc_attr ( admin_url ( 'options-general.php' )) . '">' . __ ( " configure it here " , 'updraftplus' ) . '</a>' ) .
2018-01-26 15:50:15 +01:00
' <a href="' . apply_filters ( " updraftplus_com_link " , " https://updraftplus.com/shop/reporting/ " ) . '">' . sprintf ( __ ( 'For more options, use the "%s" add-on.' , 'updraftplus' ), __ ( 'Reporting' , 'updraftplus' )) . '</a>'
2016-11-28 21:52:15 -08:00
);
2018-01-26 15:50:15 +01:00
echo $used . ' ' . sprintf ( __ ( 'Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive.' , 'updraftplus' ), '10-20' );
?>
2016-11-28 21:52:15 -08:00
</ td >
</ tr >
< ? php
}
public function delete ( $files , $data = null , $sizeinfo = array ()) {
return true ;
}
}