diff --git a/webui/config.php b/webui/config.php index c685089..93d1c3c 100644 --- a/webui/config.php +++ b/webui/config.php @@ -41,6 +41,7 @@ $config['ENABLE_REFERENCES'] = 1; $config['ENABLE_DOWNLOADING_ALL_SEARCH_HITS'] = 0; +$config['EML_NAME_BASED_ON_SUBJECT'] = 1; $config['ENABLE_TABLE_RESIZE'] = 0; $config['DEMO_MODE'] = 0; diff --git a/webui/controller/message/download.php b/webui/controller/message/download.php index 860fa0e..372147b 100644 --- a/webui/controller/message/download.php +++ b/webui/controller/message/download.php @@ -35,12 +35,18 @@ AUDIT(ACTION_DOWNLOAD_MESSAGE, '', '', $this->data['id'], ''); - $this->data['piler_id'] = $this->model_search_message->get_piler_id_by_id($this->data['id']); + $filename = $this->data['piler_id'] = $this->model_search_message->get_piler_id_by_id($this->data['id']); + + if(EML_NAME_BASED_ON_SUBJECT == 1) { + $filename = $this->model_search_message->get_subject_id_by_id($this->data['id']); + $filename = $this->model_search_message->fix_subject($filename); + } + header("Cache-Control: public, must-revalidate"); header("Pragma: no-cache"); header("Content-Type: application/octet-stream"); - header("Content-Disposition: attachment; filename=" . $this->data['piler_id'] . ".eml"); + header("Content-Disposition: attachment; filename=" . $filename . ".eml"); header("Content-Transfer-Encoding: binary\n"); $this->model_search_message->connect_to_pilergetd(); diff --git a/webui/model/message/restore.php b/webui/model/message/restore.php index 6f17066..e718b24 100644 --- a/webui/model/message/restore.php +++ b/webui/model/message/restore.php @@ -4,25 +4,33 @@ public function download_files_as_zip($idlist = array()) { + $i = 0; $zip = new ZipArchive(); $randomid = generate_random_string(16); - $filename = DIR_BASE . "tmp/" . $randomid; + $zipname = DIR_BASE . "tmp/" . $randomid; - if($zip->open($filename, ZIPARCHIVE::CREATE) != true) { exit("cannot open <$filename>\n"); } + if($zip->open($zipname, ZIPARCHIVE::CREATE) != true) { exit("cannot open <$zipname>\n"); } $this->model_search_message->connect_to_pilergetd(); foreach($idlist as $id) { - $piler_id = $this->model_search_message->get_piler_id_by_id($id); + $i++; + + $filename = $piler_id = $this->model_search_message->get_piler_id_by_id($id); + + if(EML_NAME_BASED_ON_SUBJECT == 1) { + $filename = $this->model_search_message->get_subject_id_by_id($id); + $filename = $this->model_search_message->fix_subject($filename) . "-" . $i; + } $rawemail = $this->model_search_message->get_raw_message($piler_id); $this->model_search_message->remove_journal($rawemail); - $zip->addFromString($piler_id . ".eml", $rawemail); + $zip->addFromString($filename . ".eml", $rawemail); AUDIT(ACTION_DOWNLOAD_MESSAGE, '', '', $id, ''); } @@ -37,13 +45,13 @@ header("Pragma: no-cache"); header("Content-Type: application/zip"); header("Expires: 0"); - header("Content-Length: " . filesize($filename)); + header("Content-Length: " . filesize($zipname)); header("Content-Disposition: attachment; filename=archive-$randomid.zip"); header("Content-Transfer-Encoding: binary\n"); - readfile($filename); + readfile($zipname); - unlink($filename); + unlink($zipname); } } diff --git a/webui/model/search/message.php b/webui/model/search/message.php index d534e41..65c4e4a 100644 --- a/webui/model/search/message.php +++ b/webui/model/search/message.php @@ -748,6 +748,19 @@ } + public function get_subject_id_by_id($id = 0) { + $query = $this->db->query("SELECT `subject` FROM `" . TABLE_META . "` WHERE id=?", array($id)); + if(isset($query->row['subject'])) { return $query->row['subject']; } + return ''; + } + + + public function fix_subject($s = '') { + if($s == '') { $s = 'nosubject'; } + return preg_replace("/^\-{1,}/", "", preg_replace("/\W{1,}/", "-", $s)); + } + + public function get_attachment_by_id($id = 0) { if($id <= 0) { return array(); }