if (!is_array($msgs)) { settype($msgs, 'array'); } if (isset($_REQUEST['msgmove'])) { $msgmove = $_REQUEST['msgmove']; } $mail = new GetMail(array('Username' => $atmail->username, 'Pop3host' => $atmail->pop3host, 'Password' => $auth->password, 'Type' => $atmail->MailType, 'Mode' => $atmail->Mode)); $status = $mail->login(); // We have an error while logging in. Tell the user if ($status) { print $atmail->parse("html/{$atmail->Language}/auth_misc.html", array('status' => "Remote mail-server not responding - Check connection - {$status}")); $mail->quit(); $atmail->end(); } // Receive the list of mailbox folders $folders = GetMail::_sort_folders($mail->listfolders()); // Make sure the requested folder exists (help avoid XSS etc) if (!empty($var['folder']) && !in_array($var['folder'], $folders)) { die("requested folder does not exist"); } $fol = array(); // Create the select box for moving messages to another folder $var['folderbox'] = $mail->folder_select($var['folder'], $folders); $var['folderbox'] = $mail->folder_select_lang($var['folderbox'], $atmail->Language); // By default, we want to move to Trash $var['folderbox'] = str_replace("value=\"Trash\"", "value=\"Trash\" selected", $var['folderbox']); // If the user has set the messages to another flag; update the UIDL database. if ($var['flag'] && $msgs[0]) { $c = 0; foreach ($msgs as $id) { $folder = urldecode($_REQUEST['folders'][$c]);
function util_info() { global $mail, $atmail, $var, $domains; $mail->login(); $reload = false; // We keep the folder info in session to speed up page loading as // when we have large folders this can take a while. Data stays valid // for 15 minutes //if (isset($_SESSION['folderinfo']) && ($_SESSION['folderinfo']['created'] < (time() - 900))) { // unset($_SESSION['folderinfo']); //} $var['delim'] = $mail->Deliminator; if (isset($_REQUEST['renamefolder']) && !empty($_REQUEST['curname']) && !empty($_REQUEST['foldername'])) { if ($_REQUEST['curname'] != 'Sent' && $_REQUEST['curname'] != 'Trash' && $_REQUEST['curname'] != 'Drafts' && $_REQUEST['curname'] != 'Spam') { // Cannot change parent name if (false !== ($pos = strrpos($_REQUEST['curname'], $mail->Deliminator))) { $parent = substr($_REQUEST['curname'], 0, $pos); $new_folder = $parent . $mail->Deliminator . $_REQUEST['foldername']; } else { $new_folder = $_REQUEST['foldername']; } $mail->renamefolder(str_replace('/', $mail->Deliminator, $_REQUEST['curname']), str_replace('/', $mail->Deliminator, $new_folder)); $reload = true; //$_SESSION['folderinfo'][$new_folder] = $_SESSION['folderinfo'][$_REQUEST['curname']]; //unset($_SESSION['folderinfo'][$_REQUEST['curname']]); } } // The user selects to create a new mailbox if ($_REQUEST['creatembox']) { $folder = $_REQUEST['foldername']; $mail->newfolder($folder); // Add the folder to the session data if required //if (isset($_SESSION['folderinfo']) && !preg_match('^(inbox|spam|trash|drafts|sent)$/i', $folder)) { // $_SESSION['folderinfo'][$folder]['msgs'] = 0; // $_SESSION['folderinfo'][$folder]['size'] = 0; //} $reload = true; } elseif ($_REQUEST['delete']) { $del = urldecode($_REQUEST['delete']); if ($_REQUEST['purge'] == 1) { $mail->purgefolder($del); } else { $mail->delfolder($del); } // Update the folder data in the session if required //if (isset($_SESSION['folderinfo']) && preg_match('/^(inbox|spam|trash|drafts|sent)$/i', $del)) { // $_SESSION['folderinfo'][$del]['msgs'] = 0; // $_SESSION['folderinfo'][$del]['size'] = 0; //} elseif (isset($_SESSION['folderinfo'])) { // unset($_SESSION['folderinfo'][$del]); // unset($_SESSION['folderinfo'][$del]); //} if ($_REQUEST['purge'] != 1 && $del != 'Trash' && $del != 'Spam') { // Delete any message filters that match the foldername $sort_subject = $atmail->getsort('EmailSubject', 'hash'); foreach ($sort_subject as $k => $v) { if ($v == $del) { $atmail->delsort($k, 'EmailSubject'); } } $sort_email = $atmail->getsort('EmailAddress', 'hash'); foreach ($sort_email as $k => $v) { if ($v == $del) { $atmail->delsort($k, 'EmailAddress'); } } } $reload = true; } elseif ($_REQUEST['spamadd']) { $atmail->addspamer(); } elseif ($_REQUEST['spamdel']) { $atmail->delspamer(); } elseif ($_REQUEST['addsort']) { $atmail->addsort(); } elseif ($_REQUEST['delsort']) { $atmail->delsort(base64_decode($_REQUEST['delete_sort']), $_REQUEST['type']); } // Find the folder names , size and number of messages $folders = $mail->listfolders(); // sort the folders by name $folders = GetMail::_sort_folders($folders); // Make a select box with the foldernames $var['folderbox'] = $var['renamefolderbox'] = $mail->folder_select('Inbox', $folders, false); // Remove System folders from rename options $patterns = array("<option value=\"Trash\">Trash</option>", "<option value=\"Spam\">Spam</option>", "<option value=\"Drafts\">Drafts</option>", "<option value=\"Sent\">Sent</option>"); $var['renamefolderbox'] = str_replace($patterns, '', $var['renamefolderbox']); $var['renamefolderbox'] = '<option value="">--</option>' . $var['renamefolderbox']; $var['folderbox'] = str_replace("value=\"Trash\"", "value=\"Trash\" selected", $var['folderbox']); //$var['folderbox'] = preg_replace('/<option value="erase">.*?<\/option>/', '', $var['folderbox']); //$var['folderbox'] = preg_replace('/<option value="" style=\'color: gray;\'>.*?<\/option>/', '', $var['folderbox']); // Translate the mailbox folders into another language $var['folderbox'] = Language::folder_language($var['folderbox'], $atmail->Language, null); //list($var['usedquota'], $var['totalquota']) = $mail->getquota(); // The size of our quota in Kb /* if (!$var['totalquota']) { $var['totalquota'] = $atmail->UserQuota; $var['totalquota'] = sprintf("%2.0f", $var['totalquota']); } if ($var['usedquota'] > 0 && $var['totalquota'] > 0) { $var['used'] = ( $var['usedquota'] / $var['totalquota']) * 100; if ($var['used'] < 1) $var['used'] = '1%'; else $var['used'] = round($var['used'], 2) . '%'; } $var['used_percent'] = $var['used']? $var['used'] : '1%'; */ foreach ($folders as $folder) { // Retrieve the foldername without any / extension $folderlink = $mail->folder_getlink($folder); list($num, $size) = $mail->sizefolder($folderlink); // Get the data from the session if it exists //if (isset($_SESSION['folderinfo'][$folder]) && $_SESSION['folderinfo'][$folder]['msgs'] > 0) { // $num = $_SESSION['folderinfo'][$folder]['msgs']; // $size = $_SESSION['folderinfo'][$folder]['size']; //} else { // Implement cache function soon - Read the size for the moment // list( $num, $size ) = $mail->sizefolder($folderlink); // $_SESSION['folderinfo'][$folder] = array('msgs' => $num, 'size' => $size); // $_SESSION['folderinfo']['created'] = time(); //} // Skip Inbox for the POP3 protocol if (strtoupper($folder) == 'INBOX' && !$domains[$atmail->pop3host] && $atmail->MailType == 'pop3') { continue; } // Change the display language, depending on the user language login $foldername = Language::folder_language($folder, $atmail->Language, 1); $var['folders'] .= $atmail->parse("html/{$atmail->Language}/{$atmail->LoginType}/foldertr.html", array('Folder' => $folder, 'FolderLink' => $folderlink, 'FolderName' => $foldername, 'Size' => $size, 'MsgNum' => $num, 'SystemFolder' => $mail->isAtmailFolder($folder))); } // Make a select box with our list of spammers //$var['spam_select'] = $atmail->spam_select(); $var['sort_email'] = $atmail->getsort('EmailAddress'); $var['sort_subj'] = $atmail->getsort('EmailSubject'); // Translate the mailbox folders into another language $var['sort_email'] = $mail->folder_select_lang($var['sort_email'], $atmail->Language, 1); $var['sort_subj'] = $mail->folder_select_lang($var['sort_subj'], $atmail->Language, 1); $var['reloadFolders'] = isset($_REQUEST['noreload']) || $reload == false ? 'false' : 'true'; print $atmail->parse("html/{$atmail->Language}/{$atmail->LoginType}/folders.html", $var); }