示例#1
0
// Perform import as admin user
global $user;
$user = user_load(array('uid' => 1));
// Absolute path to csv file.
$settings = array('filename' => "/home/drupal/kms.dev/scripts/import_users/Siteminder_users_incl_TermID_abt_13122012_latin_min1.csv", 'roles' => array(6 => TRUE), 'nonmail' => '*****@*****.**');
// Mapping configuration.
// What is being used where...
$mapping_1 = array(array('col' => 'USERID', 'field' => 'field_kms_user_id'), array('col' => 'NAME', 'init_field' => 'name'), array('col' => 'PASSWORD', 'init_field' => 'pass'), array('col' => 'LASTNAME', 'field' => array('field_address', 'last_name')), array('col' => 'FIRSTNAME', 'field' => array('field_address', 'first_name')), array('col' => 'EMAILADDRESS', 'init_field' => 'mail', 'value_callback' => 'import_users_process_empty_email'), array('col' => 'TELEPHONENUMBER', 'field' => 'field_phone'), array('col' => 'DISABLED', 'ignore' => TRUE), array('col' => 'PIN', 'ignore' => TRUE), array('col' => 'MILEAGE', 'ignore' => TRUE), array('col' => 'DEBITORNO', 'field' => 'field_debtor_nr'), array('col' => 'PASSWORDDATA', 'ignore' => TRUE), array('col' => 'USERID_1', 'ignore' => TRUE), array('col' => 'STARTDATO', 'ignore' => TRUE), array('col' => 'SLUTDATO', 'ignore' => TRUE), array('col' => 'FIRMANAVN', 'field' => array('field_address', 'organisation_name')), array('col' => 'FAKTURAADRESSE', 'field' => array('field_address', 'thoroughfare')), array('col' => 'POSTNR', 'field' => array('field_address', 'postal_code')), array('col' => 'UBY', 'field' => array('field_address', 'locality')), array('col' => 'LAND', 'field' => array('field_address', 'country')), array('col' => 'USERREMARK', 'field' => 'field_user_remark'), array('col' => 'OPRETTET', 'ignore' => TRUE), array('col' => 'OPRETTETDATO', 'init_field' => 'created', 'value_callback' => 'strtotime'), array('col' => 'REDIGERET', 'ignore' => TRUE), array('col' => 'REDIGERETDATO', 'field' => 'field_updated', 'value_callback' => 'strtotime'), array('col' => 'SYSTEMACCOUNT', 'role' => 7));
$mapping_2 = array(array('col' => 'SYSTEMACCOUNT', 'role' => 7), array('col' => 'TERMID', 'field' => 'field_user_type', 'field_type' => 'term_ref_hierarical'), array('col' => 'DEBITORNO', 'field' => 'field_debtor_nr'), array('col' => 'FIRMANAVN', 'field' => array('field_address', 'organisation_name')), array('col' => 'FIRSTNAME', 'field' => array('field_address', 'first_name')), array('col' => 'LASTNAME', 'field' => array('field_address', 'last_name')), array('col' => 'NAME', 'init_field' => 'name'), array('col' => 'OPRETTETDATO', 'init_field' => 'created', 'value_callback' => 'import_users_fuckedup_kms_time2unix'), array('col' => 'SLUTDATO', 'ignore' => TRUE), array('col' => 'REDIGERETDATO', 'field' => 'field_updated', 'value_callback' => 'import_users_fuckedup_kms_time2unix'), array('col' => 'USERREMARK', 'field' => 'field_user_remark'), array('col' => 'TELEPHONENUMBER', 'field' => 'field_phone'), array('col' => 'USERID', 'field' => 'field_kms_user_id'), array('col' => 'DISABLED', 'ignore' => TRUE), array('col' => 'PIN', 'ignore' => TRUE), array('col' => 'PASSWORD', 'init_field' => 'pass'), array('col' => 'MILEAGE', 'ignore' => TRUE), array('col' => 'PASSWORDDATA', 'ignore' => TRUE), array('col' => 'STARTDATO', 'ignore' => TRUE), array('col' => 'FAKTURAADRESSE', 'field' => array('field_address', 'thoroughfare')), array('col' => 'POSTNR', 'field' => array('field_address', 'postal_code')), array('col' => 'UBY', 'field' => array('field_address', 'locality')), array('col' => 'LAND', 'field' => array('field_address', 'country')), array('col' => 'OPRETTET', 'ignore' => TRUE), array('col' => 'REDIGERET', 'ignore' => TRUE), array('col' => 'EMAILADDRESS', 'init_field' => 'mail', 'value_callback' => 'import_users_process_empty_email'));
// Add default values.
array_walk($mapping_2, function ($v, $k) use(&$mapping_2) {
    $mapping_2[$k] += array('field' => NULL, 'ignore' => FALSE, 'init_field' => NULL, 'value_callback' => NULL);
});
// Import those babes.
// TODO: remove limit when it is for real.
$users = import_users($mapping_2);
// Remove duplicate emails.
if (!empty($users)) {
    $mails = $dupes = array();
    foreach ($users as $user) {
        $mails[$user->mail]++;
        if ($mails[$user->mail] > 1) {
            $dupes[] = $user->mail;
        }
    }
    if (!empty($dupes)) {
        $query = "UPDATE {users} set mail = :nonmail WHERE mail IN (:dupes)";
        db_query($query, array(':nonmail' => $settings['nonmail'], ':dupes' => array_unique($dupes)));
    }
}
/**
include_once dirname(__FILE__) . '/ressources/class.users.menus.inc';
include_once dirname(__FILE__) . '/ressources/class.mysql.inc';
include_once dirname(__FILE__) . "/framework/class.unix.inc";
include_once dirname(__FILE__) . "/framework/frame.class.inc";
include_once dirname(__FILE__) . '/ressources/class.emailings.inc';
include_once dirname(__FILE__) . '/ressources/class.ldap.inc';
include_once dirname(__FILE__) . '/ressources/class.user.inc';
if (preg_match("#--verbose#", implode(" ", $argv))) {
    $GLOBALS["VERBOSE"] = true;
}
if ($argv[1] == "--id") {
    parse_db($argv[2]);
    die;
}
if ($argv[1] == "--import-id") {
    import_users($argv[2]);
    die;
}
if ($argv[1] == "--make-unique") {
    make_database_unique($argv[2]);
    die;
}
if ($argv[1] == "--get-prefix") {
    get_prefix($argv[2]);
    die;
}
$unix = new unix();
$pidfile = "/etc/artica-postfix/" . basename(__FILE__) . ".pid";
$pid = trim(@file_get_contents($pidfile));
if ($unix->process_exists($pid)) {
    $pid = getmypid();