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

@@ 3321-3361 (lines=41) @@
3318
	 * @param string $reclevel 0, counter to keep track of the current recursionlevel
3319
	 * @return array of mailboxes
3320
	 */
3321
	function getMailBoxesRecursive($_mailbox, $delimiter, $prefix, $reclevel=0)
3322
	{
3323
		#echo __METHOD__." retrieve SubFolders for $_mailbox$delimiter <br>";
3324
		$maxreclevel=25;
3325
		if ($reclevel > $maxreclevel) {
3326
			error_log( __METHOD__." Recursion Level Exeeded ($reclevel) while looking up $_mailbox$delimiter ");
3327
			return array();
3328
		}
3329
		$reclevel++;
3330
		// clean up double delimiters
3331
		$_mailbox = preg_replace('~'.($delimiter == '.' ? "\\".$delimiter:$delimiter).'+~s',$delimiter,$_mailbox);
3332
		//get that mailbox in question
3333
		$mbx = $this->icServer->getMailboxes($_mailbox,1,true);
3334
		$mbxkeys = array_keys($mbx);
3335
		#_debug_array($mbx);
3336
//error_log(__METHOD__.' ('.__LINE__.') '.' Delimiter:'.array2string($delimiter));
3337
//error_log(__METHOD__.' ('.__LINE__.') '.array2string($mbx));
3338
		// Example: Array([INBOX/GaGa] => Array([MAILBOX] => INBOX/GaGa[ATTRIBUTES] => Array([0] => \\unmarked)[delimiter] => /))
3339
		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"]))) {
3340
			// if there are children fetch them
3341
			//echo $mbx[$mbxkeys[0]]['MAILBOX']."<br>";
3342
3343
			$buff = $this->icServer->getMailboxes($mbx[$mbxkeys[0]]['MAILBOX'].($mbx[$mbxkeys[0]]['MAILBOX'] == $prefix ? '':$delimiter),2,false);
3344
			//$buff = $this->icServer->getMailboxes($mbx[$mbxkeys[0]]['MAILBOX'],2,false);
3345
			//_debug_array($buff);
3346
			$allMailboxes = array();
3347
			foreach ($buff as $mbxname) {
3348
//error_log(__METHOD__.' ('.__LINE__.') '.array2string($mbxname));
3349
				$mbxname = preg_replace('~'.($delimiter == '.' ? "\\".$delimiter:$delimiter).'+~s',$delimiter,$mbxname['MAILBOX']);
3350
				#echo "About to recur in level $reclevel:".$mbxname."<br>";
3351
				if ( $mbxname != $mbx[$mbxkeys[0]]['MAILBOX'] && $mbxname != $prefix  && $mbxname != $mbx[$mbxkeys[0]]['MAILBOX'].$delimiter)
3352
				{
3353
					$allMailboxes = array_merge($allMailboxes, self::getMailBoxesRecursive($mbxname, $delimiter, $prefix, $reclevel));
3354
				}
3355
			}
3356
			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'];
3357
			return $allMailboxes;
3358
		} else {
3359
			return array($_mailbox);
3360
		}
3361
	}
3362
3363
	/**
3364
	 * _getSpecialUseFolder