1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php //$Id$
- /**
- * hook_menu implementation, defines imce_swfupload path for handling file
- * uploads
- */
- function imce_search_menu() {
- $menu['imce_search_callback'] = array(
- 'title' => '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' => '<div id="imce-search-results"><div></div><ul></ul></div>',
- );
- 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);
- }
|