Index: modules/node/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.module,v retrieving revision 1.967 diff -u -r1.967 node.module --- modules/node/node.module 26 May 2008 17:12:55 -0000 1.967 +++ modules/node/node.module 6 Jul 2008 02:08:30 -0000 @@ -1260,6 +1260,33 @@ $keys = search_query_insert($keys, 'type'); } + if ($author = search_query_extract($keys, 'author')) { + $join1 .= ' INNER JOIN {users} u ON u.uid = n.uid'; + $conditions1 .= " AND u.name = '%s'"; + $arguments1[] = $author; + $keys = search_query_insert($keys, 'author'); + } + + if (($created_comparison = search_query_extract($keys, 'created-comparator')) && + ($created_date = search_query_extract($keys, 'created-date'))) { + if ($created_comparison == "=") { + $created = "n.created BETWEEN %d AND %d"; + $arguments1[] = strtotime($created_date); + $arguments1[] = strtotime($created_date) + 24*60*60; + } + else { + // No quotes on the %s because it's just for the insertion of the + // comparator. + $created = "n.created %s %d"; + $arguments1[] = $created_comparison; + $arguments1[] = strtotime($created_date); + } + + $conditions1 .= ' AND ('. $created .')'; + $keys = search_query_insert($keys, 'created-comparator'); + $keys = search_query_insert($keys, 'created-date'); + } + if ($category = search_query_extract($keys, 'category')) { $categories = array(); foreach (explode(',', $category) as $c) { @@ -1906,6 +1933,28 @@ '#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-comparator'] = array( + '#type' => 'select', + '#title' => t('Created date comparison'), + '#options' => array('' => '---', '<' => 'Before', '=' => 'On', '>' => 'After'), + '#multiple' => FALSE, + ); + $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)) { @@ -1978,6 +2027,15 @@ if (isset($form_state['values']['language']) && is_array($form_state['values']['language'])) { $keys = search_query_insert($keys, 'language', implode(',', array_filter($form_state['values']['language']))); } + if (isset($form_state['values']['author']) && $form_state['values']['author'] != '') { + $keys = search_query_insert($keys, 'author', $form_state['values']['author']); + } + if (isset($form_state['values']['created-comparator']) && $form_state['values']['created-comparator'] != '') { + $keys = search_query_insert($keys, 'created-comparator', $form_state['values']['created-comparator']); + } + if (isset($form_state['values']['created-date']) && $form_state['values']['created-date'] != '' && strtotime($form_state['values']['created-date']) !== FALSE) { + $keys = search_query_insert($keys, 'created-date', strtotime($form_state['values']['created-date'])); + } if ($form_state['values']['or'] != '') { if (preg_match_all('/ ("[^"]+"|[^" ]+)/i', ' ' . $form_state['values']['or'], $matches)) { $keys .= ' ' . implode(' OR ', $matches[1]);