function sms_valid_get_ruleset_for_number in SMS Framework 7
Same name and namespace in other branches
- 6.2 modules/sms_valid/sms_valid.module \sms_valid_get_ruleset_for_number()
- 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;
}