$this->client_error(_t('No confirmation code.'));
return;
}
- $confirm_email = Confirm_email::staticGet('code', $code);
- if (!$confirm_email) {
+ $confirm = Confirm_address::staticGet('code', $code);
+ if (!$confirm) {
$this->client_error(_t('Confirmation code not found.'));
return;
}
$cur = common_current_user();
- if ($cur->id != $confirm_email->user_id) {
+ if ($cur->id != $confirm->user_id) {
$this->client_error(_t('That confirmation code is not for you!'));
return;
}
- if ($cur->email == $confirm_email->email) {
- $this->client_error(_t('That email address is already confirmed.'));
- return;
- }
+ $type = $confirm->address_type;
+ if (!in_array($type, array('email', 'jabber', 'sms'))) {
+ $this->server_error(_t('Unrecognized address type ') . $type);
+ return;
+ }
+ if ($cur->$type == $confirm->address) {
+ $this->client_error(_t('That address has already been confirmed.'));
+ return;
+ }
$cur->query('BEGIN');
$orig_user = clone($cur);
+
+ $cur->$type = $confirm->address;
+
+ if ($type == 'sms') {
+ $cur->carrier = ($confirm->address_extra)+0;
+ }
- $cur->email = $confirm_email->email;
- $result = $cur->updateKeys($orig_user);
+ $result = $cur->updateKeys($orig_user);
if (!$result) {
common_log_db_error($cur, 'UPDATE', __FILE__);
return;
}
- $result = $confirm_email->delete();
+ $result = $confirm->delete();
if (!$result) {
- common_log_db_error($confirm_email, 'DELETE', __FILE__);
+ common_log_db_error($confirm, 'DELETE', __FILE__);
$this->server_error(_t('Couldn\'t delete email confirmation.'));
return;
}
$cur->query('COMMIT');
-
- common_show_header(_t('Confirm E-mail Address'));
+
+ common_show_header(_t('Confirm Address'));
common_element('p', NULL,
- _t('The email address "') . $cur->email .
+ _t('The address "') . $cur->email .
_t('" has been confirmed for your account.'));
- common_show_footer(_t('Confirm E-mail Address'));
+ common_show_footer();
}
}
# We don't update email directly; it gets done by confirmemail
- $confirm = new Confirm_email();
$confirm->code = common_good_rand(16);
$confirm->user_id = $user->id;
- $confirm->email = $email;
+ $confirm->address = $email;
+ $confirm->address_type = 'email';
$result = $confirm->insert();
common_server_error(_t('Couldnt confirm email.'));
return FALSE;
}
+
# XXX: try not to do this in the middle of a transaction
mail_confirm_address($confirm->code,
if ($email) {
- $confirm = new Confirm_email();
+ $confirm = new Confirm_address();
$confirm->code = common_good_rand(16);
$confirm->user_id = $user->id;
- $confirm->email = $email;
+ $confirm->address = $email;
+ $confirm->address_type = 'email';
$result = $confirm->insert();
if (!$result) {
public $code; // varchar(32) primary_key not_null
public $user_id; // int(4) not_null
public $address; // varchar(255) not_null
- public $address_type; // varchar(32) not_null
+ public $address_extra; // varchar(255) not_null
+ public $address_type; // varchar(8) not_null
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
/* Static get */
--- /dev/null
+<?php
+/**
+ * Table Definition for sms_carrier
+ */
+require_once 'DB/DataObject.php';
+
+class Sms_carrier extends DB_DataObject
+{
+ ###START_AUTOCODE
+ /* the code below is auto generated do not remove the above tag */
+
+ public $__table = 'sms_carrier'; // table name
+ public $id; // int(4) primary_key not_null
+ public $name; // varchar(64) unique_key
+ public $email_pattern; // varchar(255) not_null
+ public $created; // datetime() not_null
+ public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
+
+ /* Static get */
+ function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('Sms_carrier',$k,$v); }
+
+ /* the code above is auto generated do not remove the tag below */
+ ###END_AUTOCODE
+}
public $email; // varchar(255) unique_key
public $jabber; // varchar(255) unique_key
public $sms; // varchar(64) unique_key
+ public $carrier; // int(4)
public $uri; // varchar(255) unique_key
public $created; // datetime() not_null
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
function updateKeys(&$orig) {
$parts = array();
- foreach (array('nickname', 'email') as $k) {
+ foreach (array('nickname', 'email', 'jabber', 'sms', 'carrier') as $k) {
if (strcmp($this->$k, $orig->$k) != 0) {
$parts[] = $k . ' = ' . $this->_quote($this->$k);
}
code = 130
user_id = 129
address = 130
+address_extra = 130
address_type = 130
modified = 384
id = K
uri = U
+[sms_carrier]
+id = 129
+name = 2
+email_pattern = 130
+created = 142
+modified = 384
+
+[sms_carrier__keys]
+id = K
+name = U
+
[subscription]
subscriber = 129
subscribed = 129
email = 2
jabber = 2
sms = 2
+carrier = 1
uri = 2
created = 142
modified = 384
index avatar_profile_id_idx (profile_id)
) ENGINE=InnoDB;
+create table sms_carrier (
+ id integer primary key comment 'primary key for SMS carrier',
+ name varchar(64) unique key comment 'name of the carrier',
+ email_pattern varchar(255) not null comment 'sprintf pattern for making an email address from a phone number',
+ created datetime not null comment 'date this record was created',
+ modified timestamp comment 'date this record was modified'
+) ENGINE=InnoDB;
+
/* local users */
create table user (
email varchar(255) unique key comment 'email address for password recovery etc.',
jabber varchar(255) unique key comment 'jabber ID for notices',
sms varchar(64) unique key comment 'sms phone number',
+ carrier integer comment 'foreign key to sms_carrier' references sms_carrier (id),
uri varchar(255) unique key comment 'universally unique identifier, usually a tag URI',
created datetime not null comment 'date this record was created',
modified timestamp comment 'date this record was modified'
code varchar(32) not null primary key comment 'good random code',
user_id integer not null comment 'user who requested confirmation' references user (id),
address varchar(255) not null comment 'address (email, Jabber, SMS, etc.)',
- address_type varchar(32) not null comment 'address type ("email", "jabber", "sms")',
+ address_extra varchar(255) not null comment 'carrier ID, for SMS',
+ address_type varchar(8) not null comment 'address type ("email", "jabber", "sms")',
modified timestamp comment 'date this record was modified'
-);
+) ENGINE=InnoDB;