alecpl
2010-03-25 fb7ec576ab3a353b6eb99614e9636a9096462807
program/lib/imap.inc
@@ -550,26 +550,19 @@
   $iil_error = '';
   $iil_errornum = 0;
   // set some imap options
   // set options
   if (is_array($options)) {
      foreach($options as $optkey => $optval) {
         if ($optkey == 'auth_method') {
            $auth_method = strtoupper($optval);
         } else if ($optkey == 'rootdir') {
                $my_prefs['rootdir'] = $optval;
         } else if ($optkey == 'delimiter') {
                $my_prefs['delimiter'] = $optval;
         } else if ($optkey == 'debug_mode') {
                $my_prefs['debug_mode'] = $optval;
         }
      }
   }
   if (empty($auth_method))
        $my_prefs = $options;
    }
    // set auth method
    if (!empty($my_prefs['auth_method'])) {
            $auth_method = strtoupper($my_prefs['auth_method']);
   } else {
          $auth_method = 'CHECK';
    }
   $message = "INITIAL: $auth_method\n";
   $result = false;
   
   // initialize connection
@@ -579,13 +572,13 @@
   $conn->selected    = '';
   $conn->user        = $user;
   $conn->host        = $host;
   if ($my_prefs['sort_field'] == 'INTERNALDATE') {
      $IMAP_USE_INTERNAL_DATE = true;
   } else if ($my_prefs['sort_field'] == 'DATE') {
          $IMAP_USE_INTERNAL_DATE = false;
   }
   //check input
   if (empty($host)) {
      $iil_error = "Empty host";
@@ -705,6 +698,9 @@
   }
   if (is_resource($result)) {
        if ($my_prefs['force_caps']) {
         iil_C_ClearCapability($conn);
        }
      iil_C_Namespace($conn);
      return $conn;
   } else {
@@ -1070,16 +1066,15 @@
        return false;
}
function iil_C_FetchUIDs(&$conn,$mailbox) {
function iil_C_FetchUIDs(&$conn, $mailbox, $message_set=null) {
   global $clock;
   if (is_array($message_set))
      $message_set = join(',', $message_set);
    else if (empty($message_set))
      $message_set = '1:*';
   
   $num = iil_C_CountMessages($conn, $mailbox);
   if ($num == 0) {
       return array();
   }
   $message_set = '1' . ($num>1?':' . $num:'');
   return iil_C_FetchHeaderIndex($conn, $mailbox, $message_set, 'UID');
   return iil_C_FetchHeaderIndex($conn, $mailbox, $message_set, 'UID', false);
}
function iil_C_FetchHeaders(&$conn, $mailbox, $message_set, $uidfetch=false, $bodystr=false, $add='')
@@ -1425,10 +1420,10 @@
      iil_PutLine($conn->fp, "exp1 $command");
      do {
         $line=chop(iil_ReadLine($conn->fp, 100));
         $line = iil_ReadLine($conn->fp, 100);
         if ($line[0] == '*') {
                     $c++;
              }
               $c++;
           }
      } while (!iil_StartsWith($line, 'exp1', true));
      
      if (iil_ParseResult($line) == 0) {
@@ -1447,29 +1442,27 @@
       return -1;
   }
    
   $fp    = $conn->fp;
   $flags = $GLOBALS['IMAP_FLAGS'];
   $flag = strtoupper($flag);
   $flag = $flags[$flag];
   $flag = $flags[strtoupper($flag)];
    
   if (iil_C_Select($conn, $mailbox)) {
      $c = 0;
      iil_PutLine($fp, "flg UID STORE $messages " . $mod . "FLAGS (" . $flag . ")");
      do {
         $line=chop(iil_ReadLine($fp, 100));
         if ($line[0] == '*') {
             $c++;
              }
      } while (!iil_StartsWith($line, 'flg', true));
      if (iil_ParseResult($line) == 0) {
         return $c;
      }
      $conn->error = $line;
      return -1;
   if (!iil_C_Select($conn, $mailbox)) {
       return -1;
   }
   $conn->error = 'Select failed';
    $c = 0;
   iil_PutLine($conn->fp, "flg UID STORE $messages " . $mod . "FLAGS (" . $flag . ")");
   do {
      $line = iil_ReadLine($conn->fp, 1000);
      if ($line[0] == '*') {
          $c++;
        }
   } while (!iil_StartsWith($line, 'flg', true));
   if (iil_ParseResult($line) == 0) {
      return $c;
   }
   $conn->error = $line;
   return -1;
}
@@ -1486,28 +1479,25 @@
}
function iil_C_Copy(&$conn, $messages, $from, $to) {
   $fp = $conn->fp;
   if (empty($from) || empty($to)) {
       return -1;
   }
    
   if (iil_C_Select($conn, $from)) {
      $c=0;
      iil_PutLine($fp, "cpy1 UID COPY $messages \"".iil_Escape($to)."\"");
      $line = iil_ReadReply($fp);
      return iil_ParseResult($line);
   } else {
      return -1;
   if (!iil_C_Select($conn, $from)) {
        return -1;
   }
    iil_PutLine($conn->fp, "cpy1 UID COPY $messages \"".iil_Escape($to)."\"");
   $line = iil_ReadReply($conn->fp);
   return iil_ParseResult($line);
}
function iil_C_CountUnseen(&$conn, $folder) {
        $index = iil_C_Search($conn, $folder, 'ALL UNSEEN');
        if (is_array($index))
                return count($index);
        return false;
    $index = iil_C_Search($conn, $folder, 'ALL UNSEEN');
    if (is_array($index))
        return count($index);
    return false;
}
function iil_C_UID2ID(&$conn, $folder, $uid) {
@@ -1748,9 +1738,6 @@
}
function iil_C_ListMailboxes(&$conn, $ref, $mailbox) {
   global $IGNORE_FOLDERS;
   $ignore = $IGNORE_FOLDERS[strtolower($conn->host)];
      
   $fp = $conn->fp;
   
@@ -1779,12 +1766,7 @@
              // split one line
         $a = iil_ExplodeQuotedString(' ', $line);
              // last string is folder name
         $folder = preg_replace(array('/^"/', '/"$/'), '', iil_UnEscape($a[count($a)-1]));
              if (empty($ignore) || (!empty($ignore)
                     && !preg_match('/'.preg_quote(ignore, '/').'/i', $folder))) {
                     $folders[$i] = $folder;
              }
         $folders[$i] = preg_replace(array('/^"/', '/"$/'), '', iil_UnEscape($a[count($a)-1]));
            
              // second from last is delimiter
              $delim = trim($a[count($a)-2], '"');
@@ -1812,9 +1794,6 @@
}
function iil_C_ListSubscribed(&$conn, $ref, $mailbox) {
   global $IGNORE_FOLDERS;
   $ignore = $IGNORE_FOLDERS[strtolower($conn->host)];
   
   $fp = $conn->fp;
   if (empty($mailbox)) {
@@ -1846,9 +1825,9 @@
         $a = iil_ExplodeQuotedString(' ', $line);
              // last string is folder name
             $folder = preg_replace(array('/^"/', '/"$/'), '', iil_UnEscape($a[count($a)-1]));
         if ((!in_array($folder, $folders)) && (empty($ignore)
                     || (!empty($ignore) && !preg_match('/'.preg_quote(ignore, '/').'/i', $folder)))) {
         // @TODO: do we need this check???
         if (!in_array($folder, $folders)) {
             $folders[$i] = $folder;
              }