View source
<?php
function profile_user_import_form_field_match() {
$fields = _user_import_profile('fid', 'title');
$options['profile'] = $fields;
return $options;
}
function profile_user_import_form_update_user() {
$form['profile'] = array(
'title' => t('Profile'),
'description' => t('Affected: Profile fields.'),
);
return $form;
}
function profile_user_import_data($settings, $update_setting, $column_settings, $module, $field_id, $data, $column_id) {
if ($module != 'profile') {
return;
}
return trim($data[$column_id]);
}
function profile_user_import_after_save($settings, $account, $password, $fields, $updated, $update_setting_per_module) {
$profile_fields = profile_get_fields();
$data = $old_data = unserialize($account->data);
foreach ($profile_fields as $field) {
profile_user_import_save_profile($field, $account->uid, $fields['profile'][$field->fid][0], $updated, $update_setting_per_module['profile'], $data);
}
if ($data != $old_data) {
db_query("UPDATE {users} SET data = '%s' WHERE uid = %d LIMIT 1", serialize($data), $account->uid);
}
return;
}
function profile_user_import_save_profile($field, $uid, $value, $updated, $update_setting, &$data) {
$exists = db_result(db_query("SELECT value FROM {profile_values} WHERE fid = %d AND uid = %d LIMIT 1", $field->fid, $uid));
if ($updated) {
switch ($update_setting) {
case UPDATE_NONE:
return;
case UPDATE_ADD:
if (empty($value) || !empty($exists) && $exists != '') {
return;
}
case UPDATE_REPLACE:
if (empty($value) && $update_setting == UPDATE_REPLACE) {
db_query("DELETE FROM {profile_values} WHERE fid = %d AND uid = %d", $field->fid, $uid);
unset($data[$field->name]);
return;
}
if (empty($exists) && $exists != '' || $exists === FALSE) {
db_query("INSERT INTO {profile_values} (fid,uid,value) VALUES(%d,%d,'%s')", $field->fid, $uid, $value);
}
else {
db_query("UPDATE {profile_values} SET value = '%s' WHERE fid = %d AND uid = %d LIMIT 1", $value, $field->fid, $uid);
}
$data[$field->name] = $value;
return;
}
}
else {
if (empty($value)) {
return;
}
if (empty($exists) && $exists != '' || $exists === FALSE) {
db_query("INSERT INTO {profile_values} (fid,uid,value) VALUES(%d,%d,'%s')", $field->fid, $uid, $value);
}
else {
db_query("UPDATE {profile_values} SET value = '%s' WHERE fid = %d AND uid = %d LIMIT 1", $value, $field->fid, $uid);
$data[$field->name] = $value;
}
}
return;
}
function profile_get_fields() {
static $fields = array();
if (empty($fields)) {
$results = db_query("SELECT * FROM {profile_fields}");
while ($row = db_fetch_object($results)) {
$fields[] = $row;
}
}
return $fields;
}