- /* Do some caching here */
- if (!$sqimap_delimiter) {
- if (sqimap_capability($imap_stream, "NAMESPACE")) {
- /* According to something that I can't find, this is supposed to work on all systems
- OS: This won't work in Courier IMAP.
- OS: According to rfc2342 response from NAMESPACE command is:
- OS: * NAMESPACE (PERSONAL NAMESPACES) (OTHER_USERS NAMESPACE) (SHARED NAMESPACES)
- OS: We want to lookup all personal NAMESPACES...
- */
- fputs ($imap_stream, "a001 NAMESPACE\r\n");
- $read = sqimap_read_data($imap_stream, "a001", true, $a, $b);
- if (eregi('\* NAMESPACE +(\( *\(.+\) *\)|NIL) +(\( *\(.+\) *\)|NIL) +(\( *\(.+\) *\)|NIL)', $read[0], $data)) {
- if (eregi('^\( *\((.*)\) *\)', $data[1], $data2))
- $pn = $data2[1];
- $pna = explode(')(', $pn);
- while (list($k, $v) = each($pna))
- {
- list($_, $n, $_, $d) = explode('"', $v);
- $pn[$n] = $d;
- }
-/* OS: We don't need this code right now, it is for other_users and shared folders
- if (eregi('^\( *\((.*)\) *\)', $data[2], $data2))
- $on = $data2[1];
- if (eregi('^\( *\((.*)\) *\)', $data[3], $data2))
- $sn = $data2[1];
- unset($data);
- $ona = explode(')(', $on);
- while (list($k, $v) = each($ona))
- {
- list($_, $n, $_, $d) = explode('"', $v);
- $on[$n] = $d;
- }
- $sna = explode(')(', $sn);
- while (list($k, $v) = each($sna))
- {
- list($_, $n, $_, $d) = explode('"', $v);
- $sn[$n] = $d;
- }
-*/
- }
- $sqimap_delimiter = $pn[0];
- } else {
- fputs ($imap_stream, ". LIST \"INBOX\" \"\"\r\n");
- $read = sqimap_read_data($imap_stream, ".", true, $a, $b);
- $quote_position = strpos ($read[0], "\"");
- $sqimap_delimiter = substr ($read[0], $quote_position+1, 1);
- }
- }
- return $sqimap_delimiter;
-}
+ /* Use configured delimiter if set */
+ if((!empty($optional_delimiter)) && $optional_delimiter != "detect")
+ return $optional_delimiter;
+
+ /* Do some caching here */
+ if (!$sqimap_delimiter) {
+ if (sqimap_capability($imap_stream, "NAMESPACE")) {
+ /* According to something that I can't find, this is supposed to work on all systems
+ OS: This won't work in Courier IMAP.
+ OS: According to rfc2342 response from NAMESPACE command is:
+ OS: * NAMESPACE (PERSONAL NAMESPACES) (OTHER_USERS NAMESPACE) (SHARED NAMESPACES)
+ OS: We want to lookup all personal NAMESPACES...
+ */
+ fputs ($imap_stream, sqimap_session_id() . " NAMESPACE\r\n");
+ $read = sqimap_read_data($imap_stream, sqimap_session_id(), true, $a, $b);
+ if (eregi('\\* NAMESPACE +(\\( *\\(.+\\) *\\)|NIL) +(\\( *\\(.+\\) *\\)|NIL) +(\\( *\\(.+\\) *\\)|NIL)', $read[0], $data)) {
+ if (eregi('^\\( *\\((.*)\\) *\\)', $data[1], $data2))
+ $pn = $data2[1];
+ $pna = explode(')(', $pn);
+ while (list($k, $v) = each($pna))
+ {
+ $lst = explode('"', $v);
+ if (isset($lst[3])) {
+ $pn[$lst[1]] = $lst[3];
+ } else {
+ $pn[$lst[1]] = '';
+ }
+ }
+ }
+ $sqimap_delimiter = $pn[0];
+ } else {
+ fputs ($imap_stream, ". LIST \"INBOX\" \"\"\r\n");
+ $read = sqimap_read_data($imap_stream, '.', true, $a, $b);
+ $quote_position = strpos ($read[0], '"');
+ $sqimap_delimiter = substr ($read[0], $quote_position+1, 1);
+ }
+ }
+ return $sqimap_delimiter;
+ }