You are here

function sms_valid_get_ruleset_for_number in SMS Framework 7

Same name and namespace in other branches
  1. 6.2 modules/sms_valid/sms_valid.module \sms_valid_get_ruleset_for_number()
  2. 6 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.

2 calls to sms_valid_get_ruleset_for_number()
SmsValidWebTest::testSmsValidFunctions in modules/sms_valid/sms_valid.test
Tests the internal sms_valid functions.
sms_valid_validate in modules/sms_valid/sms_valid.module
Validates a number.

File

modules/sms_valid/sms_valid.module, line 168
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
  $potential_prefixes = array();
  for ($i = 0; $i < drupal_strlen($number); $i++) {
    $potential_prefixes[] = drupal_substr($number, 0, $i + 1);
  }
  $best_ruleset = NULL;
  if ($potential_prefixes) {
    $last_prefix = NULL;
    $query = db_select('sms_valid_rules', 'u')
      ->fields('u', array(
      'prefix',
      'name',
      'rules',
      'dirs_enabled',
      'iso2',
    ))
      ->condition('prefix', $potential_prefixes, 'IN');
    $result = $query
      ->execute();
    while ($row = $result
      ->fetchAssoc()) {
      if ($row['prefix'] > $last_prefix) {
        $best_ruleset = $row;
        $best_ruleset['rules'] = unserialize($best_ruleset['rules']);
        $last_prefix = $row['prefix'];
      }
    }
  }
  return $best_ruleset;
}