diff options
author | Adrian Lang <mail@adrianlang.de> | 2011-09-04 12:35:38 +0200 |
---|---|---|
committer | Adrian Lang <mail@adrianlang.de> | 2011-09-04 15:05:39 +0200 |
commit | 783d2e49b2d8e12ed3bc0693b56c013215099a4c (patch) | |
tree | db38e999923c38efe5dab72c013ce0c985d9d4b5 | |
parent | ab8fecc6efc832771505467be33a88e0cafec04e (diff) | |
download | dokuwiki-783d2e49b2d8e12ed3bc0693b56c013215099a4c.tar.gz dokuwiki-783d2e49b2d8e12ed3bc0693b56c013215099a4c.zip |
Use search_universal in search_index
-rw-r--r-- | inc/search.php | 49 |
1 files changed, 13 insertions, 36 deletions
diff --git a/inc/search.php b/inc/search.php index 7b53edabe..bc7c35482 100644 --- a/inc/search.php +++ b/inc/search.php @@ -78,8 +78,8 @@ function search_callback($func,&$data,$base,$file,$type,$lvl,$opts){ * return values for files are ignored * * All functions should check the ACL for document READ rights - * namespaces (directories) are NOT checked as this would break - * the recursion (You can have an nonreadable dir over a readable + * namespaces (directories) are NOT checked (when sneaky_index is 0) as this + * would break the recursion (You can have an nonreadable dir over a readable * one deeper nested) also make sure to check the file type (for example * in case of lockfiles). */ @@ -101,45 +101,22 @@ function search_qsearch(&$data,$base,$file,$type,$lvl,$opts){ /** * Build the browsable index of pages * - * $opts['ns'] is the current namespace + * $opts['ns'] is the currently viewed namespace * * @author Andreas Gohr <andi@splitbrain.org> */ function search_index(&$data,$base,$file,$type,$lvl,$opts){ global $conf; - $return = true; - - $item = array(); - - if($type == 'd' && !preg_match('#^'.$file.'(/|$)#','/'.$opts['ns'])){ - //add but don't recurse - $return = false; - }elseif($type == 'f' && ($opts['nofiles'] || substr($file,-4) != '.txt')){ - //don't add - return false; - } - - $id = pathID($file,($type == 'd')); - - if($type=='d' && $conf['sneaky_index'] && auth_quickaclcheck($id.':') < AUTH_READ){ - return false; - } - - //check hidden - if(isHiddenPage($id)){ - return false; - } - - //check ACL - if($type=='f' && auth_quickaclcheck($id) < AUTH_READ){ - return false; - } - - $data[]=array( 'id' => $id, - 'type' => $type, - 'level' => $lvl, - 'open' => $return ); - return $return; + $opts = array( + 'pagesonly' => true, + 'listdirs' => true, + 'listfiles' => !$opts['nofiles'], + 'sneakyacl' => $conf['sneaky_index'], + // Hacky, should rather use recmatch + 'depth' => preg_match('#^'.$file.'(/|$)#','/'.$opts['ns']) ? 0 : -1 + ); + + return search_universal($data, $base, $file, $type, $lvl, $opts); } /** |