You are here

function discussthis_autocomplete in Discuss This! 7

Same name and namespace in other branches
  1. 5 discussthis.module \discussthis_autocomplete()
  2. 6 discussthis.autocomplete.inc \discussthis_autocomplete()
  3. 7.2 discussthis.autocomplete.inc \discussthis_autocomplete()

Autocomplete a forum topic discussion title.

The function does not return if the auto-complete feature worked. Otherwise, it returns NULL.

NOTE : The previous version included a $tid parameter. It was not being used and it would not work properly if the user was creating a new node (i.e. you cannot select a forum, then a title, at least, not dynamically... and it was shown as being like that before.)

Parameters

$string The user string so far:

1 string reference to 'discussthis_autocomplete'
discussthis_menu in ./discussthis.module
Implements hook_menu().

File

./discussthis.autocomplete.inc, line 24
Function to compute the auto-complete string used in the discussion title.

Code

function discussthis_autocomplete($string = '') {

  // Anything yet?
  if (!$string) {
    echo drupal_json_encode(array());
    exit;
  }

  // Current user has the right to do that?!
  if (!user_access('access content')) {
    drupal_access_denied();
    return;
  }

  //   // Grab the first 10 forum nodes with titles like the string typed so far
  //   $sql = "SELECT n.nid, n.title FROM {node} n"
  //     . " WHERE n.type = 'forum' AND LOWER(n.title) LIKE LOWER";
  //   if (variable_get('discussthis_autocomplete_contains', 0)) {
  //     // a LIKE pattern that starts with % can be slow...
  //     $sql .= "('%%%s%%')";
  //   }
  //   else {
  //     $sql .= "('%s%%')";
  //   }
  //   // TODO Please convert this statement to the D7 database API syntax.
  //   $result = db_query_range(db_rewrite_sql($sql), $string);
  $result = db_select('node', 'n')
    ->fields('n', array(
    'nid',
    'title',
  ))
    ->condition('type', 'forum', '=')
    ->condition('title', db_like($string) . '%', 'LIKE')
    ->execute()
    ->fetchAssoc();
  $matches = array();
  $matches[$result['nid']] = check_plain($result['title']) . ' [nid:' . $result['nid'] . ']';
  echo drupal_json_encode($matches);
  exit;
}