Optimization:
[squirrelmail.git] / functions / imap_mailbox.php
index 90ef906d6e925f843296bd36a87b8d01fee43658..f6c8d42ac6daf858ed1656115e0cc547d49088e4 100755 (executable)
 
 global $boxesnew;
 
+/**
+ * If $haystack is a full mailbox name, and $needle is the mailbox
+ * separator character, returns the second last part of the full
+ * mailbox name (i.e. the mailbox's parent mailbox)
+ */
+function readMailboxParent($haystack, $needle) {
+
+    if ($needle == '') {
+        $ret = '';
+    } else {
+        $parts = explode($needle, $haystack);
+        $elem = array_pop($parts);
+        while ($elem == '' && count($parts)) {
+            $elem = array_pop($parts);
+        }
+        $ret = join($needle, $parts);
+    }
+    return( $ret );
+}
+
+
 function isBoxBelow( $box2, $box1 ) {
     global $delimiter, $folder_prefix, $imap_server_type;
 
@@ -338,7 +359,7 @@ function user_strcasecmp($a, $b) {
  * See comment on sqimap_mailbox_parse() for info about the returned array.
  */
 function sqimap_mailbox_list($imap_stream) {
-    global $boxesnew, $default_folder_prefix, $optional_delimiter;
+    global $boxesnew, $default_folder_prefix;
 
     if ( !isset( $boxesnew ) ) {
 
@@ -467,9 +488,13 @@ function sqimap_mailbox_list($imap_stream) {
                     $boxesnew[] = $box;
                     $used[$k] = true;
                 }
-                $spec_sub =  $box['formatted'];
-                $spec_sub = str_replace(" ", "", $box['formatted']);
-                if (!$used[$k] && preg_match("/^$default_folder_prefix(Sent|Drafts|Trash).{1}$spec_sub$/", $box['unformatted']) ) {
+                $spec_sub = str_replace(' ', '', $box['formatted']);
+
+               /* In case of problems with preg
+                  here is a ereg version
+                 if (!$used[$k] && ereg("^$default_folder_prefix(Sent|Drafts|Trash).{1}$spec_sub$", $box['unformatted']) ) { */
+                 
+                if (!$used[$k] && preg_match("?^$default_folder_prefix(Sent|Drafts|Trash).{1}$spec_sub$?", $box['unformatted']) ) {
                     $boxesnew[] = $box;
                     $used[$k] = true;
                 }