| | |
| | | |
| | | if (!$err) { |
| | | // check file content type first |
| | | list($mtype_primary,) = explode('/', rc_mime_content_type($filepath, $_FILES['_file']['name'][$i], $_FILES['_file']['type'][$i])); |
| | | list($mtype_primary,) = explode('/', rcube_mime::file_content_type($filepath, $_FILES['_file']['name'][$i], $_FILES['_file']['type'][$i])); |
| | | |
| | | if (!in_array($mtype_primary, array('text','message'))) { |
| | | $OUTPUT->show_message('importmessageerror', 'error'); |
| | | continue; |
| | | } |
| | | |
| | | // read the first few lines to detect header-like structure |
| | | $fp = fopen($filepath, 'r'); |
| | | do { $line = fgets($fp); } |
| | | do { |
| | | $line = fgets($fp); |
| | | } |
| | | while ($line !== false && trim($line) == ''); |
| | | |
| | | if (!preg_match('/^From\s+-/', $line) && !preg_match('/^[a-z-_]+:\s+.+/i', $line)) { |
| | | $OUTPUT->show_message('importmessageerror', 'error'); |
| | | continue; |
| | | } |
| | | |
| | |
| | | fseek($fp, 0); |
| | | while (($line = fgets($fp)) !== false) { |
| | | // importing mbox file, split by From - lines |
| | | if (preg_match('/^From\s+-/', $line) && $lastline == '') { |
| | | if (preg_match('/^From\s+-/', $line) && ($lastline == '' || substr($lastline, -2) == '--')) { |
| | | if (!empty($message)) { |
| | | if ($RCMAIL->storage->save_message(null, rtrim($message))) { |
| | | $imported++; |
| | |
| | | } |
| | | |
| | | if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) { |
| | | $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize')))))); |
| | | $size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize'))); |
| | | $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $size))); |
| | | } |
| | | else if ($err) { |
| | | $OUTPUT->show_message('fileuploaderror', 'error'); |
| | |
| | | } // end foreach |
| | | |
| | | if ($imported) { |
| | | $OUTPUT->show_message(rcube_label(array('name' => 'importmessagesuccess', 'nr' => $imported, 'vars' => array('nr' => $imported))), 'confirmation'); |
| | | $OUTPUT->show_message($RCMAIL->gettext(array('name' => 'importmessagesuccess', 'nr' => $imported, 'vars' => array('nr' => $imported))), 'confirmation'); |
| | | $OUTPUT->command('command', 'list'); |
| | | } |
| | | else { |
| | |
| | | // if filesize exceeds post_max_size then $_FILES array is empty, |
| | | // show filesizeerror instead of fileuploaderror |
| | | if ($maxsize = ini_get('post_max_size')) |
| | | $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes($maxsize))))); |
| | | $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $RCMAIL->show_bytes(parse_bytes($maxsize))))); |
| | | else |
| | | $msg = rcube_label('fileuploaderror'); |
| | | $msg = $RCMAIL->gettext('fileuploaderror'); |
| | | |
| | | $OUTPUT->command('display_message', $msg, 'error'); |
| | | } |
| | | |
| | | // send html page with JS calls as response |
| | | $OUTPUT->send('iframe'); |
| | | |