function makeAll($params) { //Exporta menssagens selecionadas na pesquisa if ($params['folder'] === 'false') { $this->folder = $params['folder']; $error = False; $fileNames = ""; $sel_msgs = explode(",", $params['msgs_to_export']); @reset($sel_msgs); $sorted_msgs = array(); foreach ($sel_msgs as $idx => $sel_msg) { $sel_msg = explode(";", $sel_msg); if (array_key_exists($sel_msg[0], $sorted_msgs)) { $sorted_msgs[$sel_msg[0]] .= "," . $sel_msg[1]; } else { $sorted_msgs[$sel_msg[0]] = $sel_msg[1]; } } unset($sorted_msgs['']); // Verifica se as n mensagens selecionadas // se encontram em um mesmo folder if (count($sorted_msgs) == 1) { $array_names_keys = array_keys($sorted_msgs); $this->folder = mb_convert_encoding($array_names_keys[0], "UTF7-IMAP", "UTF-8, ISO-8859-1, UTF7-IMAP"); $msg_number = explode(',', $sorted_msgs[$array_names_keys[0]]); $tempDir = $this->tempDir; $this->connectImap(); //verifica se apenas uma mensagem foi selecionada e exportar em .eml if (count($msg_number) == 1) { $header = $this->getHeader($msg_number[0]); $body = $this->getBody($msg_number[0]); $sEMLData = $this->parseEml($header, $body); $fileName = $this->CreateFileEml($sEMLData, $tempDir, $msg_number[0] . "_" . $_SESSION['phpgw_session']['session_id']); $header = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $msg_number[0]), 80, 255); $subject = $this->decode_subject(html_entity_decode($header->fetchsubject)); imap_close($this->mbox_stream); if (!$fileName) { return false; } else { $return = array(); $return[] = $tempDir . '/' . $fileName; $return[] = $subject; return $return; } } //cria um .zip com as mensagens selecionadas $msg_number_count = count($msg_number); for ($i = 0; $i < $msg_number_count; ++$i) { $header = $this->getHeader($msg_number[$i]); $body = $this->getBody($msg_number[$i]); $sEMLData = $this->parseEml($header, $body); $fileName = $this->CreateFileEml($sEMLData, $tempDir, $msg_number[$i]); if (!$fileName) { $error = True; break; } else { $fileNames .= "\"" . $fileName . "\" "; } } imap_close($this->mbox_stream); $nameFileZip = 'False'; if ($fileNames && !$error) { $nameFileZip = $this->createFileZip($fileNames, $tempDir); if ($nameFileZip) { $file = $tempDir . '/' . $nameFileZip; } else { $file = false; } } else { $file = false; } return $file; //exporta mensagens de diferentes pastas } else { $array_names_keys = array_keys($sorted_msgs); $array_names_keys_count = count($array_names_keys); for ($i = 0; $i < $array_names_keys_count; ++$i) { $this->folder = mb_convert_encoding($array_names_keys[$i], "UTF7-IMAP", "UTF-8, ISO-8859-1, UTF7-IMAP"); $msg_number = explode(',', $sorted_msgs[$array_names_keys[$i]]); $tempDir = $this->tempDir; $this->connectImap(); $msg_number_count = count($msg_number); for ($j = 0; $j < $msg_number_count; ++$j) { $header = $this->getHeader($msg_number[$j]); $body = $this->getBody($msg_number[$j]); $sEMLData = $this->parseEml($header, $body); $fileName = $this->CreateFileEml($sEMLData, $tempDir, $msg_number[$j]); if (!$fileName) { $error = True; break; } else { $fileNames .= "\"" . $fileName . "\" "; } } imap_close($this->mbox_stream); } $nameFileZip = 'False'; if ($fileNames && !$error) { $nameFileZip = $this->createFileZip($fileNames, $tempDir); if ($nameFileZip) { $file = $tempDir . '/' . $nameFileZip; } else { $file = false; } } else { $file = false; } return $file; } } else { // Exportacao de mensagens arquivadas localmente if ($params['l_msg'] == "t") { // Recebe todos os subjects e bodies das mensagens locais selecionadas para exportacao // e gera arrays com os conteudos separados; $array_mesgs = explode('@@', $params['mesgs']); $array_subjects = explode('@@', $params['subjects']); $array_ids = explode(',', $params['msgs_to_export']); $tempDir = $this->tempDir; include_once "class.imap_functions.inc.php"; $imapf = new imap_functions(); // quando houver apenas um arquivo, exporta o .eml sem coloca-lo em zip if (count($array_ids) == 1) { $sEMLData = $imapf->treat_base64_from_post($array_mesgs[0]); $fileName = $this->CreateFileEml($sEMLData, $tempDir, '', $array_subjects[0], "offline"); return $tempDir . '/' . $fileName; } // Para cada mensagem selecionada sera gerado um arquivo .eml cujo titulo sera o assunto (subject) da mesma; foreach ($array_ids as $i => $id) { $sEMLData = $imapf->treat_base64_from_post($array_mesgs[$i]); $fileName = $this->CreateFileEml($sEMLData, $tempDir, '', $array_subjects[$i], $i); if (!$fileName) { $error = True; break; } else { $fileNames .= "\"" . $fileName . "\" "; } } $nameFileZip = 'False'; if ($fileNames && !$error) { $nameFileZip = $this->createFileZip($fileNames, $tempDir); if ($nameFileZip) { $file = $tempDir . '/' . $nameFileZip; } else { $file = false; } } else { $file = false; } return $file; } else { $this->folder = $params['folder']; $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP", "UTF-8, ISO-8859-1, UTF7-IMAP"); $array_ids = explode(',', $params['msgs_to_export']); $error = False; $fileNames = ""; $tempDir = $this->tempDir; $this->connectImap(); // quando houver apenas um arquivo, exporta o .eml sem coloca-lo em zip if (count($array_ids) == 1) { $header = $this->getHeader($array_ids[0]); $body = $this->getBody($array_ids[0]); $sEMLData = $this->parseEml($header, $body); $fileName = $this->CreateFileEml($sEMLData, $tempDir, $array_ids[0] . "_" . $_SESSION['phpgw_session']['session_id']); $header = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $array_ids[0]), 80, 255); $subject = $this->decode_subject(html_entity_decode($header->fetchsubject)); imap_close($this->mbox_stream); if (!$fileName) { return false; } else { $return = array(); $return[] = $tempDir . '/' . $fileName; $return[] = $subject; return $return; } } $array_ids_count = count($array_ids); for ($i = 0; $i < $array_ids_count; ++$i) { $header = $this->getHeader($array_ids[$i]); $body = $this->getBody($array_ids[$i]); $sEMLData = $this->parseEml($header, $body); $fileName = $this->CreateFileEml($sEMLData, $tempDir, $array_ids[$i]); if (!$fileName) { $error = True; break; } else { $fileNames .= "\"" . $fileName . "\" "; } } imap_close($this->mbox_stream); $nameFileZip = 'False'; if ($fileNames && !$error) { $nameFileZip = $this->createFileZip($fileNames, $tempDir); if ($nameFileZip) { $file = $tempDir . '/' . $nameFileZip; $ret[] = $file; return $ret; } else { $file = false; } } else { $file = false; } return $file; } } }
public function deepnessFollowupflaggeds(&$uri, &$result, &$criteria, $original) { if (isset($original['criteria']['deepness'])) { foreach ($result as $i => $v) { if (isset($v['followupflagId'])) { $followupflags = Controller::find(array('concept' => 'followupflag'), false, array('filter' => array('=', 'id', $v['followupflagId']))); /** * Devido a inconsistencias na chamada do interceptor addDefaultElementsFilter (followupflag:before.find) * os followupflag defaults são inseridos no retorno, por isso é necessário procurar o objeto correto * através do id */ foreach ($followupflags as $followupflag) { if ($v['followupflagId'] == $followupflag['id']) { $result[$i]['followupflag'] = $followupflag; break; } } } if (isset($v['messageNumber']) && isset($v['folderName'])) { $details = $original['criteria']['deepness'] == '1' ? 'headers' : 'all'; $imapService = new imap_functions(); $message = $imapService->getMessages(array('messages' => array($v['folderName'] => array($v['messageNumber'])), 'details' => $details)); $result[$i]['message'] = $message[$v['folderName']][0]; } } } return $result; }