| | |
| | | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| | | */ |
| | | |
| | | class cronjob_backup extends cronjob { |
| | | class cronjob_backup_mail extends cronjob { |
| | | |
| | | // job schedule |
| | | protected $_schedule = '0 0 * * *'; |
| | |
| | | foreach($records as $rec) { |
| | | //* Do the mailbox backup |
| | | if($rec['backup_interval'] == 'daily' or ($rec['backup_interval'] == 'weekly' && date('w') == 0) or ($rec['backup_interval'] == 'monthly' && date('d') == '01')) { |
| | | $sql = "SELECT * FROM mail_domain WHERE domain = '".$app->db->quote(explode("@",$rec['email'])[1])."'"; |
| | | $email = $rec['email'][1]; |
| | | $sql="SELECT * FROM mail_domain WHERE domain = ?" . $app->db->quote(explode("@",$email))."'"; |
| | | unset($email); |
| | | $domain_rec=$app->db->queryOneRecord($sql); |
| | | |
| | | $mail_backup_dir = $backup_dir.'/mail'.$domain_rec['domain_id']; |
| | |
| | | $domain_dir=explode('/',$rec['maildir']); |
| | | $_temp=array_pop($domain_dir);unset($_temp); |
| | | $domain_dir=implode('/',$domain_dir); |
| | | |
| | | $source_dir=array_pop(explode('/',$rec['maildir'])); |
| | | |
| | | $parts=explode('/',$rec['maildir']); |
| | | $source_dir=array_pop($parts); |
| | | unset($parts); |
| | | |
| | | //* create archives |
| | | if($backup_mode == 'userzip') { |
| | | $mail_backup_file.='.zip'; |
| | | exec('cd '.$rec['homedir'].' && zip -b /tmp -r '.$mail_backup_dir.'/'.$mail_backup_file.' '.$source_dir.' > /dev/nul'); |
| | | exec('cd '.$domain_dir.' && zip '.$mail_backup_dir.'/'.$mail_backup_file.' -b /tmp -r '.$source_dir.' > /dev/nul', $tmp_output, $retval); |
| | | } else { |
| | | /* Create a tar.gz backup */ |
| | | $mail_backup_file.='.tar.gz'; |