Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Hy
It should be enable
1, add two people with same number, but differnet country prefix
2, add new phone number if same number is not already confirmed(and of course is not in db)
3, after phone confirmation delete same numbers(with country prefix) from sms_user table
Changes in table:
table sms_user - switch primary and index key
sms_user.module
Add gateway option into sms_user_get_uid
-function sms_user_get_uid($number, $status = NULL) {
+function sms_user_get_uid($number, $status = NULL, $gateway = null) {
$sql = "SELECT uid FROM {sms_user} WHERE number = '%s'";
$arguments = array($number);
if (isset($status)) {
$sql .= " AND status = %d";
$arguments[] = $status;
}
+ if (isset($gateway)) {
+ $sql .= " AND gateway = '%s'";
+ $arguments[] = serialize($gateway);
+ }
$data = db_fetch_array(db_query($sql, $arguments));
return $data['uid'];
}
Add gateway and SMS_USER_CONFIRMED options
-function sms_user_validate_number(&$number) {
+function sms_user_validate_number(&$number,$gateway) {
if ($error = sms_validate_number($number)) {
return $error;
}
- elseif (sms_user_get_uid($number)) {
+ elseif (sms_user_get_uid($number,SMS_USER_CONFIRMED,$gateway)) {
return t('This phone number is already registered to another user.');
}
}
function sms_user_user
- if ($error = sms_user_validate_number($edit['sms_user']['number'])) {
+ if ($error = sms_user_validate_number($edit['sms_user']['number'],$edit['sms_user']['gateway'])){
function sms_user_settings_add_form_validate
- if ($error = sms_user_validate_number($form_state['values']['number'])) {
+ if ($error = sms_user_validate_number($form_state['values']['number'],$form_state['values']['gateway'])) {
Maybe we should also change code in sms_user_authenticate function, but i am not sure.
3, after phone confirmation delete same numbers(with country prefix) from sms_user table
function sms_user_settings_confirm_form_submit($form, &$form_state) {
$account = user_load(array('uid' => $form_state['values']['uid']));
if ($form_state['clicked_button']['#value'] == t('Delete & start over')) {
sms_user_delete($account->uid);
}
else {
$data = array(
'number' => $account->sms_user['number'],
'status' => SMS_USER_CONFIRMED,
'gateway' => $account->sms_user['gateway'],
);
+ $delete_data = array($account->sms_user['number'],serialize($account->sms_user['gateway']));
+ db_query("DELETE FROM {sms_user} WHERE number = %d and gateway = '%s' ",$delete_data);
user_save($account, array('sms_user' => $data), 'mobile');
// If the rule module is installed, fire rules
if (module_exists('rules')) {
rules_invoke_event('sms_user_validated', $account);
}
}
}
What do you think?
Comment | File | Size | Author |
---|---|---|---|
#3 | smsframework-1021340.patch | 4.07 KB | marekhattas |
Comments
Comment #1
marekhattas CreditAttribution: marekhattas commentedMysql command
Comment #2
univate CreditAttribution: univate commentedUploading a patch would make this a lot easier for me to commit.
Comment #3
marekhattas CreditAttribution: marekhattas commentedI am not sure about db patch, please check it.
Comment #4
dpi