En mi proyecto dentro de los Laboratorios de Computo-Docencia de CBI (ixil.izt.uam.mx) tengo como trabajo la migración del sitio que se encuentra actualmente manejado con Joomla a uno que se maneje mediante Drupal, entonces tenía la tarea de hacer la migracion de datos, paginas, usuarios, etc.

Entonces, lo que encontre dentro de estos sistemas es que existe un modulo en Drupal que ya hace eso, migrar usuarios y contenido de Joomla a Drupal, para que finalmente se cambie el manejador de contenido y se haga una actualización del sistema, que buena falta le hace. Luego de hacer la migración con este modulo que me hizo la vida facilisima, me tope con el gravisimo problema de que los usuarios ademas de tener un nombre de usuario y una contraseña (que es lo que maneja Drupal por default), tambien tiene un Nombre propio, un Apellido Paterno, un Apellido Materno y algo importantisimo para el sistema el Número de empleado… putsssssssssssssssssssssssssssssssssssss…..

Entonces me di a la tarea de investigar como es que se tenia que hacer todo este bisnes (bussines) y poder así migrar todos los datos de los usuarios que estan en la base de datos de Joomla. Encontre varias respuestas, pero casí todas me llevaban a un Drupal antaño que claro no quería instalar ya que lo que se necesita es una actualización. Así que despues de tres días de buscar en foros, blogs y en la documentación de Drupal (la deje al final por que me da weba leer en ingles…), encontre algo que me llamo la atención, el modulo llamado Content Profile, con el cual pude hacer los campos para el Nombre, Apellidos y Número de empleado, pero putsssssssssssssssssssssssssssssssssss otra vez….. ahora como le hacia para terminar de migrar los datos de Joomla a Drupal, bien… me puse a buscar otra vez, ahora por menos tiempo, por que me seguian saliendo los resultados de la busqueda anterior… entonces dije… que maldita sea, yo sé programar… y me puse a hacer un script de PHP que me costo como 20 mins. de mi vida que lo que hace es copiar registro por registro (que creo que cualquier otro modulo haría lo mismo), los datos de los usuarios de la tabla xxx_users de Joomla a xxx_profile_values. El script es el siguiente.

//

$mysql_config = array(
		'hostname'	=>	'',		// Servidor MySQL
		'username'	=>	'',		// nombre de usuario
		'userpass'	=>	'',		// password
		'dbsename'	=>	''		// base de datos
	);
	
	
	if ( $idcnx = @mysql_connect($mysql_config['hostname'], $mysql_config['username'], $mysql_config['userpass']) ){
		if ( @mysql_select_db($mysql_config['dbsename'],$idcnx) ){
			
			
			$sql_dplusers = 'SELECT uid,name FROM dpl_users;';
			if ( $res_dplusers = @mysql_query($sql_dplusers) ){
				
				if ( mysql_num_rows($res_dplusers) > 0 ){
					
					while ( $dplusers = mysql_fetch_array($res_dplusers) ){
						
						$sql_josusers = 'SELECT name,apellido1,apellido2,idEscolar FROM jos_users WHERE username="' . $dplusers['name'] . '" LIMIT 1;';
						if ( $res_josusers = @mysql_query($sql_josusers) ){
							
							if ( mysql_num_rows($res_josusers) == 1 ){
								
								$josusers = mysql_fetch_array($res_josusers);
								
								$sql_profilevalue_employenumber = 'INSERT INTO dpl_profile_values VALUES(4,' . $dplusers['uid'] . ',"' . $josusers['idEscolar'] . '");';
								@mysql_query($sql_profilevalue_employenumber);
								$sql_profilevalue_firstname = 'INSERT INTO dpl_profile_values VALUES(2,' . $dplusers['uid'] . ',"' . $josusers['name'] . '");';
								@mysql_query($sql_profilevalue_firstname);
								$sql_profilevalue_lastname_father = 'INSERT INTO dpl_profile_values VALUES(3,' . $dplusers['uid'] . ',"' . $josusers['apellido1'] . '");';
								@mysql_query($sql_profilevalue_lastname_father);
								$sql_profilevalue_lastname_mother = 'INSERT INTO dpl_profile_values VALUES(5,' . $dplusers['uid'] . ',"' . $josusers['apellido2'] . '");';
								@mysql_query($sql_profilevalue_lastname_mother);
								echo 'Query Ok for user ' . $dplusers['name'] . '';
								
							}
							else
								echo 'No user data for ' . $dplusers['name'] . '';
						}
						else
							echo 'No user data for ' . $dplusers['name'] . '';
					}
					
				}
				else
					echo 'No results!!!...';
				
			}
			else
				echo 'No results!!!....';
			
			
		}
		else
			echo 'conected but no data base selected :(';
		mysql_close($idcnx);
	}
	else
		echo 'Not connected!!!!....';
	

//



Como pueden ver, no esta optimizado, tienes que investigar cuales son los ids’ de los campos que creaste con el modulo profiles, pero funciona, yo ya tengo todos los datos dentro de la tabla de xxx_profile_values. Si les gusta o quieren modificarlo aca les dejo el fuente para que se lo descargue, pero no tiene nada de explicación así que tendran que valerse de su entendimiento de PHP

Saludos

Anuncios