You are here

function sms_valid_get_ruleset_for_number in SMS Framework 6.2

Same name and namespace in other branches
  1. 6 modules/sms_valid/sms_valid.module \sms_valid_get_ruleset_for_number()
  2. 7 modules/sms_valid/sms_valid.module \sms_valid_get_ruleset_for_number()

Get the best ruleset for a given phone number

Parameters

$number: A phone number.

Return value

A ruleset array or NULL.

1 call to sms_valid_get_ruleset_for_number()
sms_valid_validate in modules/sms_valid/sms_valid.module
Validate a number

File

modules/sms_valid/sms_valid.module, line 183
Number validation feature module for Drupal SMS Framework.

Code

function sms_valid_get_ruleset_for_number($number) {

  // Strip all non-digit chars including whitespace
  $number = preg_replace('/[^0-9]/', '', $number);

  // Make an array of potential prefixes from the given number
  for ($i = 0; $i < strlen($number); $i++) {
    $potential_prefixes[] = substr($number, 0, $i + 1);
  }

  // Get the potential rulesets from the DB
  $result = db_query("SELECT * FROM {sms_valid_rules} WHERE prefix IN (" . db_placeholders($potential_prefixes, 'int') . ")", $potential_prefixes);

  // Choose the ruleset with the best match (most chars = highest prefix)
  $best_ruleset = NULL;
  $last_prefix = NULL;
  while ($row = db_fetch_array($result)) {
    if ($row['prefix'] > $last_prefix) {
      $best_ruleset = $row;
    }
    $best_ruleset['rules'] = unserialize($best_ruleset['rules']);
  }
  return $best_ruleset;
}