Code Duplication    Length = 34-41 lines in 2 locations

api/src/Mail/Imap.php 1 location

@@ 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

api/src/Mail.php 1 location

@@ 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