You are here

function imce_search_callback in IMCE Tools 7

Same name and namespace in other branches
  1. 6 imce_search/imce_search.module \imce_search_callback()
1 string reference to 'imce_search_callback'
imce_search_menu in imce_search/imce_search.module
hook_menu implementation, defines imce_swfupload path for handling file uploads

File

imce_search/imce_search.module, line 17

Code

function imce_search_callback() {
  $path_parts = explode('/', $_GET['q']);
  array_shift($path_parts);

  // get rid of callback dir
  $case_insensitive = array_shift($path_parts);
  $file_string = array_pop($path_parts);
  $dir_base = join('/', $path_parts);
  $query_args = array();
  if ($file_string) {
    $query = db_select('file_managed', 'f', array(
      'target' => 'slave',
    ));
    $query
      ->fields('f', array(
      'uri',
    ));
    if ($case_insensitive) {
      $query
        ->where('LOWER(f.filename) LIKE (:fname)', array(
        ':fname' => '%' . drupal_strtolower($file_string) . '%',
      ));
    }
    else {
      $query
        ->condition('f.filename', '%' . $file_string . '%', 'LIKE');
    }
    if ($dir_base) {
      $query
        ->condition('uri', '%//%' . $dir_base . '%', 'LIKE');
    }
    $suggestions['search'] = 'Searched ' . ($dir_base ? check_plain($dir_base) . ' and sub' : ' all ') . 'directories for ' . check_plain($file_string);
    $suggestions['files'] = array();
    $res = $query
      ->execute();
    foreach ($res as $row) {
      $suggestions['files'][] = file_uri_target($row->uri);
    }
  }
  else {
    $suggestions['search'] = 'Invalid search criteria, please specify a search';
    $suggestions['files'] = array();
  }
  echo drupal_json_encode($suggestions);
  exit;
}