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	9 Jul 2008 20:49:21 -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,31 @@
       '#size' => 30,
       '#maxlength' => 255,
     );
+    $form['advanced']['keywords']['author'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Author'),
+      '#size' => 30,
+      '#maxlength' => 255,
+    );
+    if (user_access('access user profiles')) {
+      $form['advanced']['keywords']['author']['#autocomplete_path'] = 'user/autocomplete';
+    }
+    $form['advanced']['created'] = array(
+      '#prefix' => '<div class="criterion">',
+      '#suffix' => '</div>',
+    );
+    $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 +2030,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]);
