Buenas drupaleros,
en la píldora drupaliana de hoy, os voy mostrar como migrar unos usuarios desde una típica hoja excel a nuestra plataforma Drupal.
Lo primero que debemos hacer es exportar la hoja excel a un XML. La hoja excel vamos a suponer que tiene un aspecto tal que así:
En cuanto al aspecto del XML exportado sería algo así:
<?xml version="1.0" encoding="windows-1252" standalone="yes"?>
<Records>
<Record>
<Row
C="NOMBRE"
D="apellidos"
E="DNI"
F="Telefono"
G="movil"
H="poblacion"
/>
</Record>
<Record>
<Row
C="Felipe"
D="Garcia Garcia"
E="9999999-S"
F="927212121"
G="666666666"
H="Cáceres"
/>
</Record>
Una vez exportada a XML, sólo tenemos que recorrer ese XML e ir añadiendo por cada registro un usuario en nuestro Drupal.
Para ello lo primero que haremos será un módulo o utilizar alguno anteriormente creado. Sobre este módulo lo primero será hacer hook menú para poder llamar a una URL. Seguidamente, para no tener problemas de codificación, haremos que nuestras lecturas sean en UTF-8
function vabadusmodule_menu() {
$items = array();
$items['migrar/socios'] = array(
'title' => 'Migrar socios',
'page callback' => '_migrar_socios',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
function _migrar_socios(){
header('Content-Type: text/html; charset=utf-8');
. . .
}
A continuación leeremos el fichero XML, exportado anteriormente:
function _migrar_socios(){
. . .
$xml = simplexml_load_file('sites/all/modules/vabadusmodule/exportado.xml');
. . .
}
Ahora solo debemos recorrer ese XML
function _migrar_socios(){
. . .
$nombre = $xml->Record[$contador]->Row['C'];
$apellidos = $xml->Record[$contador]->Row['D'];
$dni = $xml->Record[$contador]->Row['E'];
$localidad = $xml->Record[$contador]->Row['H'];
$telefono = $xml->Record[$contador]->Row['F'];
$movil = $xml->Record[$contador]->Row['G'];
. . .
}
y por último solo debemos dar de alta en nuestro Drupal el usuario, con una contraseña aleatoria y en nuestro caso asegurándonos que el email no está ya registrado en el sistema.
function _migrar_socios(){
. . .
$new_user=NULL;
$pass = rand(1,10000);
$new_user = array(
'name' => $email,
'pass' => $pass,
'mail' => $email,
'status' => 1,
'init' => $email,
'roles' => array(
DRUPAL_AUTHENTICATED_RID => 'authenticated user',6 => 'Socio', ),
'field_nombre' => array( 'und' => array(0 => array('value' => $nombre))),
'field_apellidos' => array( 'und' => array(0 => array('value' => $apellidos))),
'field_d_n_i_' => array( 'und' => array(0 => array('value' => $dni))),
'field_tel_fono_fijo_' => array( 'und' => array(0 => array('value' => $telefono))),
'field_tel_fono_m_vil_' => array( 'und' => array(0 => array('value' => $movil))),
'field_poblaci_n' => array( 'und' => array(0 => array('value' => $localidad))),
);
$account = new stdClass();
$account->is_new = true;
$feedback_user = user_load_by_name($email);
if(empty($feedback_user)) {
//Salvamos el usuario
user_save($account, $new_user);
}
. . .
}
Con esto tendremos migrados una típica hoja de cálculo con filas de usuarios, a nuestro Drupal. En otro post, os enseñaré cómo utilizar el servicio de envío de correos Madril para avisar a estos nuevos usuarios.
Drupal y rock and roll