/[drupal]/contributions/modules/nodequeue/nodequeue.module
ViewVC logotype

Diff of /contributions/modules/nodequeue/nodequeue.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.77, Fri May 1 00:00:05 2009 UTC revision 1.78, Fri May 1 00:26:37 2009 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: nodequeue.module,v 1.76 2009/04/30 23:54:30 ezrag Exp $  // $Id: nodequeue.module,v 1.77 2009/05/01 00:00:05 ezrag Exp $
3    
4  // --------------------------------------------------------------------------  // --------------------------------------------------------------------------
5  // Drupal Hooks  // Drupal Hooks
# Line 294  function nodequeue_link($type, $node = N Line 294  function nodequeue_link($type, $node = N
294  /**  /**
295   * Implementation of hook_views_api()   * Implementation of hook_views_api()
296   */   */
   
297  function nodequeue_views_api() {  function nodequeue_views_api() {
298    return array(    return array(
299      'api' => 2,      'api' => 2,
300      'path' => drupal_get_path('module', 'nodequeue') .'/includes/views',      'path' => drupal_get_path('module', 'nodequeue') .'/includes/views',
301    );    );
302  }  }
303    
304    /**
305     * Implementation of hook_form_$form-id_alter().
306     */
307    function nodequeue_form_apachesolr_search_bias_form_alter(&$form, $form_state) {
308      // setup for the form building
309      $weights = drupal_map_assoc(array('21.0', '13.0', '8.0', '5.0', '3.0', '2.0', '1.0', '0.8', '0.5', '0.3', '0.2', '0.1'));
310      $weights['0'] = t('Normal');
311      $queues = nodequeue_load_subqueues_by_queue(array_keys(nodequeue_get_all_qids()));
312    
313      // build the form
314      $form['biasing']['nodequeue_boost'] = array(
315        '#type' => 'fieldset',
316        '#title' => t('Nodequeue Biasing'),
317        '#weight' => -5,
318        '#collapsible' => TRUE,
319        '#collapsed' => TRUE,
320      );
321      $form['biasing']['nodequeue_boost']['nodequeue_apachesolr_boost'] = array(
322        '#type' => 'item',
323        '#description' => t("Specify to bias the search result when a node is in a queue. Any value except <em>Normal</em> will increase the socre for the given queue in the search results"),
324      );
325      foreach ($queues as $sqid => $queue) {
326        $boost = variable_get("nodequeue_apachesolr_boost_$sqid", 0);
327        // add in setting for each queue
328        $form['biasing']['nodequeue_boost']['nodequeue_apachesolr_boost']["nodequeue_apachesolr_boost_$sqid"] = array(
329          '#type' => 'select',
330          '#title' => t('Weight for %title nodequeue', array('%title' => $queue->title)),
331          '#options' => $weights,
332          '#default_value' => $boost,
333        );
334      }
335    }
336    
337    /**
338     * Implementation of hook_apachesolr_update_index().
339     */
340    function nodequeue_apachesolr_update_index(&$document, $node) {
341      $queues = nodequeue_load_queues(array_keys(nodequeue_get_all_qids()));
342      $subqueues = nodequeue_get_subqueues_by_node($queues, $node);
343    
344      nodequeue_set_subqueue_positions($subqueues, $node->nid);
345      foreach ($subqueues as $sqid => $subqueue) {
346        if (!empty($subqueue->position)) {
347          $key = _nodequeue_solr_qid_key();
348          $document->$key = $sqid;
349        }
350      }
351    }
352    
353    /**
354     * return the apachesolr index key for group id
355     */
356    function _nodequeue_solr_qid_key() {
357      $qid_key = array(
358        'index_type' => 'sint',
359        'multiple' => TRUE,
360        'name' => "nodequeue",
361      );
362    
363      return apachesolr_index_key($qid_key);
364    }
365    
366    /**
367     * Implementation of hook_apachesolr_modify_query().
368     */
369    function nodequeue_apachesolr_modify_query($query, &$params, $caller) {
370      $queues = nodequeue_load_subqueues_by_queue(array_keys(nodequeue_get_all_qids()));
371      foreach ($queues as $sqid => $queue) {
372        $boost = variable_get("nodequeue_apachesolr_boost_$sqid", 0);
373        if (!empty($boost)) {
374          $params['bq'][] = _nodequeue_solr_qid_key() . ":$sqid^$boost";
375          $params['facet.field'][] = _nodequeue_solr_qid_key();
376        }
377      }
378    }
379    
380  // --------------------------------------------------------------------------  // --------------------------------------------------------------------------
381  // Nodequeue Admin operations  // Nodequeue Admin operations
382    
# Line 1923  function nodequeue_load_subqueues_by_que Line 1999  function nodequeue_load_subqueues_by_que
1999   *   A keyed array of references to load. The key is the $qid and each value   *   A keyed array of references to load. The key is the $qid and each value
2000   *   is another array of references.   *   is another array of references.
2001   */   */
2002  function nodequeue_load_subqueues_by_reference($references) {  function nodequeue_load_subqueues_by_reference($references, $bypass_cache = FALSE) {
2003    static $cache = array();    static $cache = array();
2004    $subqueues = array();    $subqueues = array();
2005      if ($bypass_cache) {
2006        $cache = array();
2007      }
2008    
2009    // build strings for the query based upon the qids and references.    // build strings for the query based upon the qids and references.
2010    $keys = $values = array();    $keys = $values = array();
# Line 2108  function nodequeue_subqueue_add($queue, Line 2187  function nodequeue_subqueue_add($queue,
2187    
2188    db_query("INSERT INTO {nodequeue_nodes} (sqid, qid, nid, position, timestamp) VALUES (%d, %d, %d, %d, %d)", $subqueue->sqid, $queue->qid, $nid, $subqueue->count + 1, time());    db_query("INSERT INTO {nodequeue_nodes} (sqid, qid, nid, position, timestamp) VALUES (%d, %d, %d, %d, %d)", $subqueue->sqid, $queue->qid, $nid, $subqueue->count + 1, time());
2189    $subqueue->count++;    $subqueue->count++;
2190      if (module_exists('apachesolr')) {
2191        apachesolr_mark_node($nid);
2192      }
2193  }  }
2194    
2195  /**  /**
# Line 2123  function nodequeue_subqueue_add($queue, Line 2205  function nodequeue_subqueue_add($queue,
2205  function nodequeue_subqueue_remove_node($sqid, $nid) {  function nodequeue_subqueue_remove_node($sqid, $nid) {
2206    if ($pos = nodequeue_get_subqueue_position($sqid, $nid)) {    if ($pos = nodequeue_get_subqueue_position($sqid, $nid)) {
2207      nodequeue_subqueue_remove($sqid, $pos);      nodequeue_subqueue_remove($sqid, $pos);
2208        if (module_exists('apachesolr')) {
2209          apachesolr_mark_node($nid);
2210        }
2211    }    }
2212  }  }
2213  /**  /**
# Line 2291  function nodequeue_set_subqueue_position Line 2376  function nodequeue_set_subqueue_position
2376  function nodequeue_get_subqueues_by_node($queues, $node) {  function nodequeue_get_subqueues_by_node($queues, $node) {
2377    // Determine which subqueues are valid for each queue.    // Determine which subqueues are valid for each queue.
2378    $references= array();    $references= array();
2379      static $last_nid = 0;
2380    foreach ($queues as $queue) {    foreach ($queues as $queue) {
2381      if ($result = nodequeue_api_subqueues($queue, $node)) {      if ($result = nodequeue_api_subqueues($queue, $node)) {
2382        $references[$queue->qid] = is_array($result) ? $result : array($result);        $references[$queue->qid] = is_array($result) ? $result : array($result);
# Line 2300  function nodequeue_get_subqueues_by_node Line 2386  function nodequeue_get_subqueues_by_node
2386    if (empty($references)) {    if (empty($references)) {
2387      return;      return;
2388    }    }
2389      // only allow the static cache to be used if the nid is the same as the last
2390    return nodequeue_load_subqueues_by_reference($references);    $subqueues = nodequeue_load_subqueues_by_reference($references, ($last_nid != $node->nid));
2391      $last_nid = $node->nid;
2392    
2393      return $subqueues;
2394  }  }
2395    
2396  /**  /**

Legend:
Removed from v.1.77  
changed lines
  Added in v.1.78

  ViewVC Help
Powered by ViewVC 1.1.2