diff options
author | Michael Klier <chi@chimeric.de> | 2007-08-28 21:44:06 +0200 |
---|---|---|
committer | Michael Klier <chi@chimeric.de> | 2007-08-28 21:44:06 +0200 |
commit | 0e1a261ed103bc8f11934d76ec8c7ec412f02220 (patch) | |
tree | 94cfea854b610090689e5cab8c4ee2eaf688f538 /inc/search.php | |
parent | 1687f56933426ceb0716aee9a165b15c94639d34 (diff) | |
download | rpg-0e1a261ed103bc8f11934d76ec8c7ec412f02220.tar.gz rpg-0e1a261ed103bc8f11934d76ec8c7ec412f02220.tar.bz2 |
moved lockfile check out of search() to callback functions
darcs-hash:20070828194406-23886-832f4a1222633b686cd8895eba00f1c895c5a992.gz
Diffstat (limited to 'inc/search.php')
-rw-r--r-- | inc/search.php | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/inc/search.php b/inc/search.php index eea70f7e0..a41125f61 100644 --- a/inc/search.php +++ b/inc/search.php @@ -34,9 +34,6 @@ function search(&$data,$base,$func,$opts,$dir='',$lvl=1){ if(is_dir($base.'/'.$dir.'/'.$file)){ $dirs[] = $dir.'/'.$file; continue; - }elseif(substr($file,-5) == '.lock'){ - //skip lockfiles - continue; } $files[] = $dir.'/'.$file; } @@ -57,7 +54,7 @@ function search(&$data,$base,$func,$opts,$dir='',$lvl=1){ } /** - * Used to run the a user callback + * Used to run a user callback * * Makes sure the $data array is passed by reference (unlike when using * call_user_func()) @@ -99,7 +96,8 @@ function search_callback($func,&$data,$base,$file,$type,$lvl,$opts){ * 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 - * one deeper nested) + * one deeper nested) also make sure to check the file type (for example + * in case of lockfiles). */ /** @@ -114,6 +112,9 @@ function search_qsearch(&$data,$base,$file,$type,$lvl,$opts){ return false; //no handling yet } + //only search txt files + if(substr($file,-4) != '.txt') return false; + //get id $id = pathID($file); @@ -150,7 +151,7 @@ function search_index(&$data,$base,$file,$type,$lvl,$opts){ if($type == 'd' && !preg_match('#^'.$file.'(/|$)#','/'.$opts['ns'])){ //add but don't recurse $return = false; - }elseif($type == 'f' && ($opts['nofiles'] || !preg_match('#\.txt$#',$file))){ + }elseif($type == 'f' && ($opts['nofiles'] || substr($file,-4) != '.txt')){ //don't add return false; } @@ -234,13 +235,14 @@ function search_media(&$data,$base,$file,$type,$lvl,$opts){ function search_list(&$data,$base,$file,$type,$lvl,$opts){ //we do nothing with directories if($type == 'd') return false; - if(preg_match('#\.txt$#',$file)){ + //only search txt files + if(substr($file,-4) == '.txt'){ //check ACL $id = pathID($file); if(auth_quickaclcheck($id) < AUTH_READ){ return false; } - $data[]['id'] = $id;; + $data[]['id'] = $id; } return false; } @@ -256,7 +258,7 @@ function search_pagename(&$data,$base,$file,$type,$lvl,$opts){ //we do nothing with directories if($type == 'd') return true; //only search txt files - if(!preg_match('#\.txt$#',$file)) return true; + if(substr($file,-4) != '.txt') return true; //simple stringmatching if (!empty($opts['query'])){ @@ -281,7 +283,7 @@ function search_allpages(&$data,$base,$file,$type,$lvl,$opts){ //we do nothing with directories if($type == 'd') return true; //only search txt files - if(!preg_match('#\.txt$#',$file)) return true; + if(substr($file,-4) != '.txt') return true; $data[]['id'] = pathID($file); return true; @@ -298,9 +300,9 @@ function search_allpages(&$data,$base,$file,$type,$lvl,$opts){ */ function search_backlinks(&$data,$base,$file,$type,$lvl,$opts){ //we do nothing with directories - if($type == 'd') return true;; + if($type == 'd') return true; //only search txt files - if(!preg_match('#\.txt$#',$file)) return true;; + if(substr($file,-4) != '.txt') return true; //absolute search id $sid = cleanID($opts['ns'].':'.$opts['name']); @@ -345,9 +347,9 @@ function search_backlinks(&$data,$base,$file,$type,$lvl,$opts){ */ function search_fulltext(&$data,$base,$file,$type,$lvl,$opts){ //we do nothing with directories - if($type == 'd') return true;; + if($type == 'd') return true; //only search txt files - if(!preg_match('#\.txt$#',$file)) return true;; + if(substr($file,-4) != '.txt') return true; //check ACL $id = pathID($file); @@ -414,7 +416,7 @@ function search_reference(&$data,$base,$file,$type,$lvl,$opts){ if($type == 'd') return true; //only search txt files - if(!preg_match('#\.txt$#',$file)) return true; + if(substr($file,-4) != '.txt') return true; //we finish after 'cnt' references found. The return value //'false' will skip subdirectories to speed search up. |