| @@ 918-951 (lines=34) @@ | ||
| 915 | * @param string $reclevel = 0, counter to keep track of the current recursionlevel |
|
| 916 | * @return array of mailboxes |
|
| 917 | */ |
|
| 918 | function getMailBoxesRecursive($_mailbox, $delimiter, $prefix, $reclevel=0) |
|
| 919 | { |
|
| 920 | if ($reclevel > 25) { |
|
| 921 | error_log( __METHOD__." Recursion Level Exeeded ($reclevel) while looking up $_mailbox$delimiter "); |
|
| 922 | return array(); |
|
| 923 | } |
|
| 924 | $reclevel++; |
|
| 925 | // clean up double delimiters |
|
| 926 | $mailbox = preg_replace('~'.($delimiter == '.' ? "\\".$delimiter:$delimiter).'+~s',$delimiter,$_mailbox); |
|
| 927 | //get that mailbox in question |
|
| 928 | $mbx = $this->getMailboxes($mailbox,1,true); |
|
| 929 | $mbxkeys = array_keys($mbx); |
|
| 930 | ||
| 931 | // Example: Array([INBOX/GaGa] => Array([MAILBOX] => INBOX/GaGa[ATTRIBUTES] => Array([0] => \\unmarked)[delimiter] => /)) |
|
| 932 | if (is_array($mbx[$mbxkeys[0]]["ATTRIBUTES"]) && (in_array('\HasChildren',$mbx[$mbxkeys[0]]["ATTRIBUTES"]) || in_array('\Haschildren',$mbx[$mbxkeys[0]]["ATTRIBUTES"]) || in_array('\haschildren',$mbx[$mbxkeys[0]]["ATTRIBUTES"]))) |
|
| 933 | { |
|
| 934 | $buff = $this->getMailboxes($mbx[$mbxkeys[0]]['MAILBOX'].($mbx[$mbxkeys[0]]['MAILBOX'] == $prefix ? '':$delimiter),2,false); |
|
| 935 | $allMailboxes = array(); |
|
| 936 | foreach ($buff as $mbxname) { |
|
| 937 | $mbxname = preg_replace('~'.($delimiter == '.' ? "\\".$delimiter:$delimiter).'+~s',$delimiter,$mbxname['MAILBOX']); |
|
| 938 | #echo "About to recur in level $reclevel:".$mbxname."<br>"; |
|
| 939 | if ( $mbxname != $mbx[$mbxkeys[0]]['MAILBOX'] && $mbxname != $prefix && $mbxname != $mbx[$mbxkeys[0]]['MAILBOX'].$delimiter) |
|
| 940 | { |
|
| 941 | $allMailboxes = array_merge($allMailboxes, self::getMailBoxesRecursive($mbxname, $delimiter, $prefix, $reclevel)); |
|
| 942 | } |
|
| 943 | } |
|
| 944 | if (!(in_array('\NoSelect',$mbx[$mbxkeys[0]]["ATTRIBUTES"]) || in_array('\Noselect',$mbx[$mbxkeys[0]]["ATTRIBUTES"]) || in_array('\noselect',$mbx[$mbxkeys[0]]["ATTRIBUTES"]))) $allMailboxes[] = $mbx[$mbxkeys[0]]['MAILBOX']; |
|
| 945 | return $allMailboxes; |
|
| 946 | } |
|
| 947 | else |
|
| 948 | { |
|
| 949 | return array($mailbox); |
|
| 950 | } |
|
| 951 | } |
|
| 952 | ||
| 953 | /** |
|
| 954 | * getNameSpace, fetch the namespace from icServer |
|
| @@ 3350-3390 (lines=41) @@ | ||
| 3347 | * @param string $reclevel 0, counter to keep track of the current recursionlevel |
|
| 3348 | * @return array of mailboxes |
|
| 3349 | */ |
|
| 3350 | function getMailBoxesRecursive($_mailbox, $delimiter, $prefix, $reclevel=0) |
|
| 3351 | { |
|
| 3352 | #echo __METHOD__." retrieve SubFolders for $_mailbox$delimiter <br>"; |
|
| 3353 | $maxreclevel=25; |
|
| 3354 | if ($reclevel > $maxreclevel) { |
|
| 3355 | error_log( __METHOD__." Recursion Level Exeeded ($reclevel) while looking up $_mailbox$delimiter "); |
|
| 3356 | return array(); |
|
| 3357 | } |
|
| 3358 | $reclevel++; |
|
| 3359 | // clean up double delimiters |
|
| 3360 | $_mailbox = preg_replace('~'.($delimiter == '.' ? "\\".$delimiter:$delimiter).'+~s',$delimiter,$_mailbox); |
|
| 3361 | //get that mailbox in question |
|
| 3362 | $mbx = $this->icServer->getMailboxes($_mailbox,1,true); |
|
| 3363 | $mbxkeys = array_keys($mbx); |
|
| 3364 | #_debug_array($mbx); |
|
| 3365 | //error_log(__METHOD__.' ('.__LINE__.') '.' Delimiter:'.array2string($delimiter)); |
|
| 3366 | //error_log(__METHOD__.' ('.__LINE__.') '.array2string($mbx)); |
|
| 3367 | // Example: Array([INBOX/GaGa] => Array([MAILBOX] => INBOX/GaGa[ATTRIBUTES] => Array([0] => \\unmarked)[delimiter] => /)) |
|
| 3368 | if (is_array($mbx[$mbxkeys[0]]["ATTRIBUTES"]) && (in_array('\HasChildren',$mbx[$mbxkeys[0]]["ATTRIBUTES"]) || in_array('\Haschildren',$mbx[$mbxkeys[0]]["ATTRIBUTES"]) || in_array('\haschildren',$mbx[$mbxkeys[0]]["ATTRIBUTES"]))) { |
|
| 3369 | // if there are children fetch them |
|
| 3370 | //echo $mbx[$mbxkeys[0]]['MAILBOX']."<br>"; |
|
| 3371 | ||
| 3372 | $buff = $this->icServer->getMailboxes($mbx[$mbxkeys[0]]['MAILBOX'].($mbx[$mbxkeys[0]]['MAILBOX'] == $prefix ? '':$delimiter),2,false); |
|
| 3373 | //$buff = $this->icServer->getMailboxes($mbx[$mbxkeys[0]]['MAILBOX'],2,false); |
|
| 3374 | //_debug_array($buff); |
|
| 3375 | $allMailboxes = array(); |
|
| 3376 | foreach ($buff as $mbxname) { |
|
| 3377 | //error_log(__METHOD__.' ('.__LINE__.') '.array2string($mbxname)); |
|
| 3378 | $mbxname = preg_replace('~'.($delimiter == '.' ? "\\".$delimiter:$delimiter).'+~s',$delimiter,$mbxname['MAILBOX']); |
|
| 3379 | #echo "About to recur in level $reclevel:".$mbxname."<br>"; |
|
| 3380 | if ( $mbxname != $mbx[$mbxkeys[0]]['MAILBOX'] && $mbxname != $prefix && $mbxname != $mbx[$mbxkeys[0]]['MAILBOX'].$delimiter) |
|
| 3381 | { |
|
| 3382 | $allMailboxes = array_merge($allMailboxes, self::getMailBoxesRecursive($mbxname, $delimiter, $prefix, $reclevel)); |
|
| 3383 | } |
|
| 3384 | } |
|
| 3385 | if (!(in_array('\NoSelect',$mbx[$mbxkeys[0]]["ATTRIBUTES"]) || in_array('\Noselect',$mbx[$mbxkeys[0]]["ATTRIBUTES"]) || in_array('\noselect',$mbx[$mbxkeys[0]]["ATTRIBUTES"]))) $allMailboxes[] = $mbx[$mbxkeys[0]]['MAILBOX']; |
|
| 3386 | return $allMailboxes; |
|
| 3387 | } else { |
|
| 3388 | return array($_mailbox); |
|
| 3389 | } |
|
| 3390 | } |
|
| 3391 | ||
| 3392 | /** |
|
| 3393 | * _getSpecialUseFolder |
|