autocomplete.php 1.1 KB

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