Source for file imap_search.php
Documentation is available at imap_search.php
* @copyright 1999-2012 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: imap_search.php 14345 2012-12-09 11:58:17Z kink $
* @deprecated This search interface has been largely replaced by asearch
* Load up a bunch of SM functions */
require_once(SM_PATH .
'functions/imap.php');
require_once(SM_PATH .
'functions/date.php');
require_once(SM_PATH .
'functions/mailbox_display.php');
require_once(SM_PATH .
'functions/mime.php');
function sqimap_search($imapConnection, $search_where, $search_what, $mailbox,
$color, $search_position =
'', $search_all, $count_all) {
global $message_highlight_list, $squirrelmail_language, $languages,
/* construct the search query, taking multiple search terms into account */
$search_what =
trim($search_what);
$search_what =
preg_replace('/[ ]{2,}/', ' ', $search_what);
$multi_search =
explode(' ', $search_what);
if (strtoupper($languages[$squirrelmail_language]['CHARSET']) ==
'ISO-2022-JP') {
foreach($multi_search as $idx=>
$search_part) {
$search_literal =
array('commands'=>
array(), 'literal_args'=>
array());
$use_search_literal =
FALSE;
foreach ($multi_search as $string) {
//FIXME: why JIS? shouldn't input be in EUC-JP? this is copied from DEVEL
if (isset
($languages[$squirrelmail_language]['CHARSET']) &&
strtoupper($languages[$squirrelmail_language]['CHARSET']) ==
'ISO-2022-JP')
if (preg_match('/["\\\\\r\n\x80-\xff]/', $string))
$use_search_literal =
TRUE;
$search_literal['commands'][] =
$search_where;
$search_literal['literal_args'][] =
$string;
$search_string .=
$search_where
.
str_replace(array('\\', '"'), array('\\\\', '\\"'), $string)
$search_string =
trim($search_string);
$original_search_literal =
$search_literal;
/* now use $search_string in the imap search */
if ($allow_charset_search && isset
($languages[$squirrelmail_language]['CHARSET']) &&
$languages[$squirrelmail_language]['CHARSET']) {
if ($use_search_literal) {
$search_literal['commands'][0] =
'SEARCH CHARSET '
.
strtoupper($languages[$squirrelmail_language]['CHARSET'])
.
' ALL ' .
$search_literal['commands'][0];
.
strtoupper($languages[$squirrelmail_language]['CHARSET'])
if ($use_search_literal) {
$search_literal['commands'][0] =
'SEARCH ALL ' .
$search_literal['commands'][0];
$ss =
"SEARCH ALL $search_string";
/* read data back from IMAP */
if ($use_search_literal) {
$readin =
sqimap_run_command($imapConnection, $ss, false, $result, $message, $uid_support);
/* try US-ASCII charset if search fails */
if (isset
($languages[$squirrelmail_language]['CHARSET'])
if ($use_search_literal) {
$original_search_literal['commands'][0] =
'SEARCH CHARSET "US-ASCII" ALL '
.
$original_search_literal['commands'][0];
$ss =
"SEARCH CHARSET \"US-ASCII\" ALL $search_string";
if ($use_search_literal) {
$readin =
sqimap_run_command($imapConnection, $ss, false, $result, $message, $uid_support);
/* Keep going till we find the SEARCH response */
foreach ($readin as $readin_part) {
/* Check to see if a SEARCH response was received */
if (substr($readin_part, 0, 9) ==
'* SEARCH ') {
} else if (isset
($errors)) {
$errors =
$errors.
$readin_part;
/* If nothing is found * SEARCH should be the first error else echo errors */
if (strstr($errors,'* SEARCH')) {
$cnt =
count($messagelist);
for ($q =
0; $q <
$cnt; $q++
) {
$id[$q] =
trim($messagelist[$q]);
$issent =
($mailbox ==
$sent_folder);
Documentation generated on Sat, 18 May 2013 04:21:41 +0200 by phpDocumentor 1.4.3