From 3b4d47257d6435e01baf65e58872c0ed9ec6dfd0 Mon Sep 17 00:00:00 2001 From: Ryan Boren Date: Tue, 22 Nov 2005 23:39:56 +0000 Subject: [PATCH] Add glob() compat for php < 4.3.0 git-svn-id: https://develop.svn.wordpress.org/trunk@3198 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/functions-compat.php | 64 ++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/wp-includes/functions-compat.php b/wp-includes/functions-compat.php index 768dd4e864..65a452ba18 100644 --- a/wp-includes/functions-compat.php +++ b/wp-includes/functions-compat.php @@ -89,4 +89,68 @@ if (!function_exists('array_change_key_case')) { } } +/* Added in PHP 4.3.0 */ + +if( !(function_exists('glob')) ): +function glob($pattern) { + // get pathname (everything up until the last / or \) + $path=$output=null; +// if(PHP_OS=='WIN32') +// $slash='\\'; +// else +// $slash='/'; + $slash = '/'; + $lastpos=strrpos($pattern,$slash); + if(!($lastpos===false)) { + $path=substr($pattern,0,$lastpos); #negative length means take from the right + $pattern=substr($pattern,$lastpos+1); + } else { + //no dir info, use current dir + $path=getcwd(); + } + $handle=@ opendir($path); + if($handle===false) + return false; + while($dir=readdir($handle)) { + if ( '.' == $dir || '..' == $dir ) + continue; + if (pattern_match($pattern,$dir)) + $output[]=$path . '/' . $dir; + } + closedir($handle); + print_r($output); + if(is_array($output)) + return $output; + + return false; +} + +function pattern_match($pattern,$string) { + // basically prepare a regular expression + $out=null; + $chunks=explode(';',$pattern); + foreach($chunks as $pattern) { + $escape=array('$','^','.','{','}','(',')','[',']','|'); + while(strpos($pattern,'**')!==false) + $pattern=str_replace('**','*',$pattern); + foreach($escape as $probe) + $pattern=str_replace($probe,"\\$probe",$pattern); + + $pattern=str_replace('?*','*', + str_replace('*?','*', + str_replace('*',".*", + str_replace('?','.{1,1}',$pattern)))); + $out[]=$pattern; + } + + if(count($out)==1) + return(eregi("^$out[0]$",$string)); + else + foreach($out as $tester) + if(eregi("^$tester$",$string)) + return true; + return false; +} +endif; + ?> \ No newline at end of file