Index: modules/node/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.module,v retrieving revision 1.950 diff -u -p -r1.950 node.module --- node.module 20 Feb 2008 13:46:40 -0000 1.950 +++ node.module 12 Mar 2008 20:16:42 -0000 @@ -1204,6 +1204,24 @@ function node_search($op = 'search', $ke $keys = search_query_insert($keys, 'type'); } + if (($created_evaluator = search_query_extract($keys, 'created-evaluator')) && + ($created_date = search_query_extract($keys, 'created-date'))) { + + if ($created_evaluator == "=") { + $created = "n.created BETWEEN %d AND %d"; + $arguments1[] = strtotime($created_date); + $arguments1[] = strtotime($created_date)+24*60*60; + } else { + $created = "n.created %s %d"; + $arguments1[] = $created_evaluator; + $arguments1[] = strtotime($created_date); + } + + $conditions1 .= ' AND ('. $created .')'; + $keys = search_query_insert($keys, 'created-evaluator'); + $keys = search_query_insert($keys, 'created-date'); + } + if ($category = search_query_extract($keys, 'category')) { $categories = array(); foreach (explode(',', $category) as $c) { @@ -1841,6 +1859,44 @@ function node_form_alter(&$form, $form_s '#size' => 30, '#maxlength' => 255, ); + $form['advanced']['keywords']['author'] = array( + '#type' => 'textfield', + '#title' => t('Author'), + '#size' => 30, + '#maxlength' => 255, + ); + + $form['advanced']['created'] = array( + '#prefix' => '
', + '#suffix' => '
', + ); + $form['advanced']['created']['created-evaluator'] = array( + '#type' => 'select', + '#title' => t('Created date comparison'), + '#options' => array('' => '---', '<' => 'Before', '=' => 'On', '>' => 'After'), + '#multiple' => FALSE, + ); + if (module_exists('jquery_calendar')) { + $form['advanced']['created']['created-date'] = jquery_calendar_formitem('created-date', array( + '#type' => 'textfield', + '#title' => t('Created date'), + '#size' => 10, + '#maxlength' => 10, + '#required' => 0, + '#jqrycal' => array( + 'autoPopUp' => 'both', + 'buttonImageOnly' => 'true', + 'buttonImage' => base_path() . drupal_get_path('module', 'jquery_calendar') .'/images/calendar.gif', + 'yearRange' => '-5:+5',) + )); + } else { + $form['advanced']['created']['created-date'] = array( + '#type' => 'textfield', + '#title' => t('Created date'), + '#size' => 10, + '#maxlength' => 10, + ); + } // Taxonomy box: if ($taxonomy = module_invoke('taxonomy', 'form_all', 1)) { @@ -1894,6 +1950,12 @@ function node_search_validate($form, &$f if (isset($form_state['values']['category']) && is_array($form_state['values']['category'])) { $keys = search_query_insert($keys, 'category', implode(',', $form_state['values']['category'])); } + if ($form_state['author'] != '') { + $keys .= ' author:'.$form_state['author']; + } + if (($form_state['created-evaluator'] != '') && ($form_state['created-date'] != '') && is_int(strtotime($form_state['created-date']))) { + $keys .= ' created-evaluator:'.$form_state['created-evaluator'].' created-date:'.$form_state['created-date']; + } if ($form_state['values']['or'] != '') { if (preg_match_all('/ ("[^"]+"|[^" ]+)/i', ' '. $form_state['values']['or'], $matches)) { $keys .= ' '. implode(' OR ', $matches[1]);