? 378830-2.project_solr_sort_facet.patch
? 378830-3.project_solr_sort_facet.patch
? projecps.diff
? relevancy-394352-1.patch
Index: solr/project_solr.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/solr/project_solr.module,v
retrieving revision 1.50
diff -u -p -r1.50 project_solr.module
--- solr/project_solr.module	19 Feb 2009 10:06:48 -0000	1.50
+++ solr/project_solr.module	7 Mar 2009 19:03:42 -0000
@@ -75,14 +75,14 @@ function project_solr_apachesolr_update_
     $query = db_query("SELECT DISTINCT(tn.tid) FROM {node} n INNER JOIN {project_release_nodes} prn ON n.nid = prn.nid INNER JOIN {term_node} tn ON n.nid = tn.nid INNER JOIN {term_data} td ON tn.tid = td.tid WHERE prn.pid = %d AND td.vid = %d", $node->nid, _project_release_get_api_vid());
     while ($term = db_fetch_object($query)) {
       $document->setMultiValue('im_project_release_api_terms', $term->tid);
-      $key = 'is_project_latest_release_timestamp_'. $term->tid;
+      $key = 'ds_project_latest_release_timestamp_'. $term->tid;
       $filetime = db_result(db_query_range("SELECT f.timestamp FROM {project_release_nodes} prn INNER JOIN {project_release_file} prf ON prn.nid = prf.nid INNER JOIN {term_node} tn ON prn.nid = tn.nid INNER JOIN {files} f ON prf.fid = f.fid WHERE prn.rebuild = 0 AND tn.tid = %d AND prn.pid = %d ORDER BY f.timestamp DESC", $term->tid, $node->nid, 0, 1));
-      $document->$key = $filetime;
+      $document->$key = apachesolr_date_iso($filetime);
       if ($filetime > $max_filetime) {
         $max_filetime = $filetime;
       }
     }
-    $document->is_project_latest_release_timestamp = $max_filetime;
+    $document->ds_project_latest_release_timestamp = apachesolr_date_iso($max_filetime);
     
     if (module_exists('project_usage')) {
       $weeks = variable_get('project_usage_active_weeks', array());
@@ -90,11 +90,11 @@ function project_solr_apachesolr_update_
       $total_usage = 0;
       $query = db_query("SELECT * FROM {project_usage_week_project} WHERE nid = %d AND timestamp = %d", $node->nid, $week);
       while ($usage = db_fetch_object($query)) {
-        $key = 'is_project_release_api_usage_'. $usage->tid;
+        $key = 'sis_project_release_api_usage_'. $usage->tid;
         $document->$key = $usage->count;
         $total_usage += $usage->count;
       }
-      $document->is_project_release_total_usage = $total_usage;
+      $document->sis_project_release_total_usage = $total_usage;
     }
   }
 }
@@ -153,7 +153,7 @@ function project_solr_browse_page($term_
     $query->add_field_aliases(array('im_project_release_api_terms' => 'drupal_core'));
 
     $params = array(
-      'fl' => 'id,nid,title,body,format,comment_count,type,created,changed,score,url,uid,name,is_project_release_total_usage,is_project_latest_release_timestamp',
+      'fl' => 'id,nid,title,body,format,comment_count,type,created,changed,score,url,uid,name,sis_project_release_total_usage,ds_project_latest_release',
       'rows' => variable_get('apachesolr_rows', 10),
       'facet' => 'true',
       'facet.mincount' => 1,
@@ -330,19 +330,31 @@ function project_solr_block($op = 'list'
       return;
     }
     else if ($delta == 'project_solr_order') {
+      $fields = $query->get_fields();
       $sorts = array(
         'title_sort' => array('name' => t('Title'), 'default' => 'asc'),
         'created' => array('name' => t('Creation date'), 'default' => 'desc'),
       );
+      $core = 0;
+      foreach ($fields as $field) {
+        if ($field['#name'] == 'im_project_release_api_terms') {
+          $core = $field['#value'];
+          break;
+        }
+      }
       if (module_exists('project_release')) {
-        $sorts['is_project_latest_release_timestamp'] = array('name' => t('Last release'), 'default' => 'desc');
+        $sort_field = 'ds_project_latest_release';
+        if (!empty($core)) {
+          $sort_field .= "_$core";
+        }
+        $sorts[$sort_field] = array('name' => t('Last release'), 'default' => 'desc');
       }
       if (module_exists('project_usage')) {
-        $sorts['is_project_release_total_usage'] = array('name' => t('Usage statistics'), 'default' => 'desc');
+        $sorts['sis_project_release_total_usage'] = array('name' => t('Usage statistics'), 'default' => 'desc');
       }
 
       $solrsorts = array();
-      $sort_parameter = isset($_GET['solrsort']) ? check_plain($_GET['solrsort']) : FALSE;
+      $sort_parameter = isset($_GET['solrsort']) ? check_plain($_GET['solrsort']) : '';
       foreach (explode(',', $sort_parameter) as $solrsort) {
         $parts = explode(' ', $solrsort);
         if (!empty($parts[0]) && !empty($parts[1])) {
@@ -396,7 +408,9 @@ function project_solr_block($op = 'list'
           }
           else {
             $new_query->add_field('im_project_release_api_terms', $tid);
-            $querystring = $new_query->get_url_querystring();
+            $querystring = project_solr_append_api_term($new_query->get_url_querystring(), $tid);
+            
+            
             $unclick_link = '';
           }
           $terms[$term_name] = theme('project_solr_no_count_facet_item', $term_name, $path, $querystring, $active, $unclick_link, $response->numFound);
@@ -421,6 +435,17 @@ function project_solr_block($op = 'list'
 }
 
 /**
+ * Append the API tid to slected fields that might be in the string.
+ */
+function project_solr_append_api_term($string, $tid) {
+  $api_fields = array('ds_project_latest_release', 'sis_project_release_api_usage', 'ds_project_latest_activity');
+  foreach($api_fields as $field) {
+    $replace[] = $field .'_'. $tid;
+  }
+  return str_replace($api_fields, $replace, $string);
+}
+
+/**
  * Form callback; display a free text form.
  */
 function project_sort_freetext() {
