| @@ 961-996 (lines=36) @@ | ||
| 958 | * |
|
| 959 | * @return array array(prefix_present=>mixed (bool/string) ,prefix=>string,delimiter=>string,type=>string (personal|others|shared)) |
|
| 960 | */ |
|
| 961 | function getNameSpace() |
|
| 962 | { |
|
| 963 | static $nameSpace=null; |
|
| 964 | $foldersNameSpace = array(); |
|
| 965 | $delimiter = $this->getDelimiter(); |
|
| 966 | if (empty($delimiter)) $delimiter='/'; |
|
| 967 | if (is_null($nameSpace)) $nameSpace = $this->getNameSpaceArray(); |
|
| 968 | if (is_array($nameSpace)) { |
|
| 969 | foreach($nameSpace as $type => $singleNameSpaceArray) |
|
| 970 | { |
|
| 971 | foreach ($singleNameSpaceArray as $singleNameSpace) |
|
| 972 | { |
|
| 973 | $_foldersNameSpace = array(); |
|
| 974 | if($type == 'personal' && $singleNameSpace['name'] == '#mh/' && ($this->folderExists('Mail')||$this->folderExists('INBOX'))) |
|
| 975 | { |
|
| 976 | $_foldersNameSpace['prefix_present'] = 'forced'; |
|
| 977 | // uw-imap server with mailbox prefix or dovecot maybe |
|
| 978 | $_foldersNameSpace['prefix'] = ($this->folderExists('Mail')?'Mail':(!empty($singleNameSpace['name'])?$singleNameSpace['name']:'')); |
|
| 979 | } |
|
| 980 | elseif($type == 'personal' && ($singleNameSpace['name'] == '#mh/') && $this->folderExists('mail')) |
|
| 981 | { |
|
| 982 | $_foldersNameSpace['prefix_present'] = 'forced'; |
|
| 983 | // uw-imap server with mailbox prefix or dovecot maybe |
|
| 984 | $_foldersNameSpace['prefix'] = 'mail'; |
|
| 985 | } else { |
|
| 986 | $_foldersNameSpace['prefix_present'] = !empty($singleNameSpace['name']); |
|
| 987 | $_foldersNameSpace['prefix'] = $singleNameSpace['name']; |
|
| 988 | } |
|
| 989 | $_foldersNameSpace['delimiter'] = ($singleNameSpace['delimiter']?$singleNameSpace['delimiter']:$delimiter); |
|
| 990 | $_foldersNameSpace['type'] = $type; |
|
| 991 | $foldersNameSpace[] =$_foldersNameSpace; |
|
| 992 | } |
|
| 993 | } |
|
| 994 | } |
|
| 995 | return $foldersNameSpace; |
|
| 996 | } |
|
| 997 | ||
| 998 | /** |
|
| 999 | * return the delimiter used by the current imap server |
|
| @@ 991-1029 (lines=39) @@ | ||
| 988 | * |
|
| 989 | * @return array array(prefix_present=>mixed (bool/string) ,prefix=>string,delimiter=>string,type=>string (personal|others|shared)) |
|
| 990 | */ |
|
| 991 | function _getNameSpaces() |
|
| 992 | { |
|
| 993 | static $nameSpace = null; |
|
| 994 | $foldersNameSpace = array(); |
|
| 995 | $delimiter = $this->getHierarchyDelimiter(); |
|
| 996 | // TODO: cache by $this->icServer->ImapServerId |
|
| 997 | if (is_null($nameSpace)) $nameSpace = $this->icServer->getNameSpaceArray(); |
|
| 998 | //error_log(__METHOD__.' ('.__LINE__.') '.array2string($nameSpace)); |
|
| 999 | if (is_array($nameSpace)) { |
|
| 1000 | foreach($nameSpace as $type => $singleNameSpaceArray) |
|
| 1001 | { |
|
| 1002 | foreach ($singleNameSpaceArray as $singleNameSpace) |
|
| 1003 | { |
|
| 1004 | $_foldersNameSpace = array(); |
|
| 1005 | if($type == 'personal' && $singleNameSpace['name'] == '#mh/' && ($this->folderExists('Mail')||$this->folderExists('INBOX'))) |
|
| 1006 | { |
|
| 1007 | $_foldersNameSpace['prefix_present'] = 'forced'; |
|
| 1008 | // uw-imap server with mailbox prefix or dovecot maybe |
|
| 1009 | $_foldersNameSpace['prefix'] = ($this->folderExists('Mail')?'Mail':(!empty($singleNameSpace['name'])?$singleNameSpace['name']:'')); |
|
| 1010 | } |
|
| 1011 | elseif($type == 'personal' && ($singleNameSpace['name'] == '#mh/') && $this->folderExists('mail')) |
|
| 1012 | { |
|
| 1013 | $_foldersNameSpace['prefix_present'] = 'forced'; |
|
| 1014 | // uw-imap server with mailbox prefix or dovecot maybe |
|
| 1015 | $_foldersNameSpace['prefix'] = 'mail'; |
|
| 1016 | } else { |
|
| 1017 | $_foldersNameSpace['prefix_present'] = !empty($singleNameSpace['name']); |
|
| 1018 | $_foldersNameSpace['prefix'] = $singleNameSpace['name']; |
|
| 1019 | } |
|
| 1020 | $_foldersNameSpace['delimiter'] = ($singleNameSpace['delimiter']?$singleNameSpace['delimiter']:$delimiter); |
|
| 1021 | $_foldersNameSpace['type'] = $type; |
|
| 1022 | $foldersNameSpace[] =$_foldersNameSpace; |
|
| 1023 | } |
|
| 1024 | //echo "############## $type->".print_r($foldersNameSpace[$type],true)." ###################<br>"; |
|
| 1025 | } |
|
| 1026 | } |
|
| 1027 | //error_log(__METHOD__.' ('.__LINE__.') '.array2string($foldersNameSpace)); |
|
| 1028 | return $foldersNameSpace; |
|
| 1029 | } |
|
| 1030 | ||
| 1031 | /** |
|
| 1032 | * Wrapper to extract the folder prefix from folder compared to given namespace array |
|