You are here

function discussthis_autocomplete in Discuss This! 6

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

\brief 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.)

\param[in] $string The user string so far

1 string reference to 'discussthis_autocomplete'
_discussthis_menu in ./discussthis.admin.inc
\brief Actual implementation of hook_menu().

File

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

Code

function discussthis_autocomplete($string = '') {

  // anything yet?
  if (!$string) {
    echo drupal_to_js(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 by the user 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%%')";
  }
  $result = db_query_range(db_rewrite_sql($sql), $string, 0, 10);
  $matches = array();
  while ($node = db_fetch_object($result)) {
    $matches[$node->nid] = check_plain($node->title) . ' [nid:' . $node->nid . ']';
  }
  echo drupal_to_js($matches);
  exit;
}