// 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();