autocomplete.php 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. //provide auto completion of paths for use with jquer ui autocomplete
  3. // Init owncloud
  4. OCP\JSON::checkLoggedIn();
  5. // Get data
  6. $query = $_GET['term'];
  7. $dirOnly=(isset($_GET['dironly']))?($_GET['dironly']=='true'):false;
  8. if($query[0]!='/'){
  9. $query='/'.$query;
  10. }
  11. if(substr($query,-1,1)=='/'){
  12. $base=$query;
  13. }else{
  14. $base=dirname($query);
  15. }
  16. $query=substr($query,strlen($base));
  17. if($base!='/'){
  18. $query=substr($query,1);
  19. }
  20. $queryLen=strlen($query);
  21. $query=strtolower($query);
  22. // echo "$base - $query";
  23. $files=array();
  24. if(OC_Filesystem::file_exists($base) and OC_Filesystem::is_dir($base)){
  25. $dh = OC_Filesystem::opendir($base);
  26. if($dh){
  27. if(substr($base,-1,1)!='/'){
  28. $base=$base.'/';
  29. }
  30. while (($file = readdir($dh)) !== false) {
  31. if ($file != "." && $file != ".."){
  32. if(substr(strtolower($file),0,$queryLen)==$query){
  33. $item=$base.$file;
  34. if((!$dirOnly or OC_Filesystem::is_dir($item))){
  35. $files[]=(object)array('id'=>$item,'label'=>$item,'name'=>$item);
  36. }
  37. }
  38. }
  39. }
  40. }
  41. }
  42. OCP\JSON::encodedPrint($files);
  43. ?>