You are here

function _user_relationship_process_query_argument in User Relationships 6

Same name and namespace in other branches
  1. 5.3 user_relationships_api/user_relationships_api.module \_user_relationship_process_query_argument()
  2. 5.2 user_relationships.module \_user_relationship_process_query_argument()

Helper function to process the various argument types allowed

1 call to _user_relationship_process_query_argument()
_user_relationships_generate_query in user_relationships_api/user_relationships_api.module
Helper function to generate the main and count queries from a list of parameters and options

File

user_relationships_api/user_relationships_api.module, line 186
User Relationships API. Module shell. @author Jeff Smick (creator) @author Alex Karshakevich (maintainer) http://drupal.org/user/183217

Code

function _user_relationship_process_query_argument($key, &$value) {
  if ($key == 'between') {
    return array(
      _user_relationship_process_query_argument(NULL, $value[0]),
      _user_relationship_process_query_argument(NULL, $value[1]),
    );
  }
  if (is_array($value)) {
    if (count($value) == 1) {
      $value = array_shift($value);
      return _user_relationship_process_query_argument($key, $value);
    }
    else {
      $type = is_numeric(current($value)) ? 'int' : 'varchar';
      return 'IN (' . db_placeholders($value, $type) . ')';
    }
  }
  elseif (is_numeric($value) || is_bool($value)) {
    $value = (int) $value;
    return '= %d';
  }
  elseif (is_float($value)) {
    return '= %f';
  }
  elseif (preg_match('/([<>=]{1,2})\\s*(.+)/', $value, $matches)) {
    $marker = "'%s'";
    $value = $matches[2];
    if (is_numeric($value)) {
      $marker = '%d';
      $value = (int) $value;
    }
    return "{$matches[1]} {$marker}";
  }
  else {
    return "= '%s'";
  }
}