annotate sites/all/modules/biblio_autocomplete/biblio_autocomplete.module @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents ce11bbd8f642
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 function biblio_autocomplete_menu(){
danielebarchiesi@4 4 $items=array();
danielebarchiesi@4 5 $autocompletes = module_invoke_all('biblio_autocomplete_info');
danielebarchiesi@4 6 foreach ($autocompletes as $field => $data){
danielebarchiesi@4 7 $items['biblio_autocomplete/'.$field] = array(
danielebarchiesi@4 8 'title' => t('Biblio autocomplete for ').$field,
danielebarchiesi@4 9 'page callback' => 'biblio_autocomplete_json',
danielebarchiesi@4 10 'page arguments' => array($field, 2),
danielebarchiesi@4 11 'access callback' => TRUE,
danielebarchiesi@4 12 'type' => MENU_CALLBACK,
danielebarchiesi@4 13 );
danielebarchiesi@4 14 }
danielebarchiesi@4 15 return $items;
danielebarchiesi@4 16 }
danielebarchiesi@4 17
danielebarchiesi@4 18 function biblio_autocomplete_json($biblio_field, $string){
danielebarchiesi@4 19 $autocompletes = module_invoke_all('biblio_autocomplete_info');
danielebarchiesi@4 20 $matches = array();
danielebarchiesi@4 21 foreach ($autocompletes as $field => $data){
danielebarchiesi@4 22 if ($field == $biblio_field){
danielebarchiesi@4 23 if (!is_array($data['function'])){
danielebarchiesi@4 24 $data['function'] = array($data['function']);
danielebarchiesi@4 25 }
danielebarchiesi@4 26 foreach($data['function'] as $function){
danielebarchiesi@4 27 $matches = array_merge($matches, $function($string) );
danielebarchiesi@4 28 }
danielebarchiesi@4 29 }
danielebarchiesi@4 30 }
danielebarchiesi@4 31 asort($matches);
danielebarchiesi@4 32
danielebarchiesi@4 33 $return_matches = array();
danielebarchiesi@4 34 $i = 0;
danielebarchiesi@4 35 foreach ($matches as $key => $data){
danielebarchiesi@4 36 if ($data['key'] != '' && $data['description'] != ''){
danielebarchiesi@4 37 $i++;
danielebarchiesi@4 38 $return_matches[$data['key']] = $data['provider'].': '.$data['description'];
danielebarchiesi@4 39 if ($i >= 10){
danielebarchiesi@4 40 break;
danielebarchiesi@4 41 }
danielebarchiesi@4 42 }
danielebarchiesi@4 43 }
danielebarchiesi@4 44
danielebarchiesi@4 45 print drupal_json_output($return_matches);
danielebarchiesi@4 46 }
danielebarchiesi@4 47
danielebarchiesi@4 48 /**
danielebarchiesi@4 49 * Implemets hook_form_alter().
danielebarchiesi@4 50 *
danielebarchiesi@4 51 * @param unknown_type $form
danielebarchiesi@4 52 * @param unknown_type $form_state
danielebarchiesi@4 53 * @param unknown_type $form_id
danielebarchiesi@4 54 */
danielebarchiesi@4 55 function biblio_autocomplete_form_alter(&$form, &$form_state, $form_id){
danielebarchiesi@4 56 if ($form_id == 'biblio_node_form'){
danielebarchiesi@4 57 $autocompletes = module_invoke_all('biblio_autocomplete_info');
danielebarchiesi@4 58 foreach ($autocompletes as $field => $values){
danielebarchiesi@4 59 if (in_array($field, $form)){
danielebarchiesi@4 60 $key = array_tree_search_key($form, $field);
danielebarchiesi@4 61 if (!is_null($key)){
danielebarchiesi@4 62 array_tree_update_autocomplete($form, $key, 'biblio_autocomplete/'.$field);
danielebarchiesi@4 63 }
danielebarchiesi@4 64 }
danielebarchiesi@4 65 }
danielebarchiesi@4 66 }
danielebarchiesi@4 67 }
danielebarchiesi@4 68
danielebarchiesi@4 69 function array_tree_search_key($a, $subkey) {
danielebarchiesi@4 70 if (is_array($a)){
danielebarchiesi@4 71 foreach (array_keys($a) as $i=>$k) {
danielebarchiesi@4 72 if ($k === $subkey) {
danielebarchiesi@4 73 return array($k);
danielebarchiesi@4 74 }
danielebarchiesi@4 75 elseif ($pos = array_tree_search_key($a[$k], $subkey)) {
danielebarchiesi@4 76 return array_merge(array($k), $pos);
danielebarchiesi@4 77 }
danielebarchiesi@4 78 }
danielebarchiesi@4 79 }
danielebarchiesi@4 80 }
danielebarchiesi@4 81
danielebarchiesi@4 82 function array_tree_update_autocomplete(&$a, $key_array, $autocomplete){
danielebarchiesi@4 83 if (count($key_array) == 0){
danielebarchiesi@4 84 $a['#autocomplete_path'] = $autocomplete;
danielebarchiesi@4 85 } else {
danielebarchiesi@4 86 $a_next = array_shift($key_array);
danielebarchiesi@4 87 array_tree_update_autocomplete($a[$a_next], $key_array, $autocomplete);
danielebarchiesi@4 88 }
danielebarchiesi@4 89 }
danielebarchiesi@4 90
danielebarchiesi@4 91
danielebarchiesi@4 92