'IMCE Search Callback', 'type' => MENU_CALLBACK, 'page callback' => 'imce_search_callback', 'access callback' => 'imce_access', ); return $menu; } 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; } function imce_search_form($form, &$form_state) { $form['imce-search-term'] = array( '#type' => 'textfield', '#title' => t('Search'), '#description' => t('Search for files in current directory and subdirectories'), '#size' => 25, ); $form['imce-search-case'] = array( '#type' => 'checkbox', '#title' => t('Case insensitive'), '#description' => t('This option may have no effect depending on your database configuration'), '#default_value' => 0, ); $form['imce-search-button'] = array( '#type' => 'button', '#value' => t('Search'), ); $form['imce-search-results'] = array( '#markup' => '
', ); return ($form); } /** * provide form content to imce, registered function for callback */ function imce_search_content(&$imce) { drupal_add_css(drupal_get_path('module', 'imce_search') . '/imce_search.css'); drupal_add_js(drupal_get_path('module', 'imce_search') . '/imce_search.js'); $form = drupal_get_form('imce_search_form'); return drupal_render($form); }