Migrar de Drupal 1.5 a Joomla 1.5.X

Hace una semana Víctor Barragán se acerco a mi para preguntarme si dominaba Joomla, porque deseaban cambiar su excelente Drupal por el citado CMS (nótese el sesgo y posicionamiento).

Luego de 30 minutos de argumentos y contraargumentos comprendí su motivo, buscaban simplicidad para iniciar su gestión, Yo uso y me encanta Drupal por su flexibilidad pero se que comprender como usarlo tiene una curva de aprendizaje algo dura.

En un inicio me declare incompetente para migrarlo, pero al ver que la solicitud de Werner Westermann se declaraba desierta, me anime a invertir algo de mi tiempo para ayudar al colectivo Educalibre.

La cosa fue más simple de lo que pensaba, la migración sólo tiene sentencias sql, no hay php, así que si hay un Joomlafilico por ahí pues puede hacerlo en php e integrarlo, esto tan sólo son las notas que he tomado del proceso esperando le sirva a alguien que guste de abandonar un excelente CMS por otro CMS :D

Se que tiene algún problema en la migración de permisos de usuarios en Joomla y además hay que migrar los timestamp de Drupal a formato fecha en Joomla por métodos rupestres... por ejemplo sacrificando una vaca.

Todos los comentarios son bienvenidos, si alguien lo convierte en un php pues avisen.

Migrar comentarios de drupal a joomla

Paso 1
# respaldar y borrar los datos de su base Joomla, particularmnete la cuenta de administrador

Paso 2
#desactivar los el auto incrementar de la tabla joomla usuarios
ALTER TABLE joomla.jos_users CHANGE id id INT(11) NOT NULL;

Paso 3
#copiar de la base drupal a la joomla, es necesario cambiarel nombre de la base (joomla y drupal)

INSERT INTO joomla.jos_users (joomla.jos_users.id, joomla.jos_users.name, joomla.jos_users.username, joomla.jos_users.email, joomla.jos_users.password, joomla.jos_users.registerDate, joomla.jos_users.lastvisitDate)
SELECT drupal.users.uid, drupal.users.name, drupal.users.name, drupal.users.mail, drupal.users.pass, drupal.users.created, drupal.users.access
FROM drupal.users

Paso 4
# agregar tipo de grupo
UPDATE joomla.jos_users SET gid = '18' WHEREgid = '1';

Paso 5
#actualizar el autoincrement último id màs uno
ALTER TABLE joomla.jos_users AUTO_INCREMENT = 9711;

Paso 6
#activar nuevamente el autoincrement
ALTER TABLE jos_users CHANGE id id INT(11) NOT NULL AUTO_INCREMENT

Paso 7 #respaldar y borrar tabla- datos

Paso 8
#grupo para usurios, desactivar autoincrement
ALTER TABLE jos_core_acl_aro CHANGE id id INT(11) NOT NULL;

Paso 9
# insertar usurios en tabla jos_core_acl_aro
INSERT INTO joomla.jos_core_acl_aro (joomla.jos_core_acl_aro.id, joomla.jos_core_acl_aro.value, joomla.jos_core_acl_aro.name)
Select joomla.jos_users.id, joomla.jos_users.id, joomla.jos_users.name
FROM joomla.jos_users

Paso 10
#añadir setion
UPDATE joomla.jos_core_acl_aro SET section_value = 'users' WHERE jos_core_acl_aro.section_value = 0;

Paso 11
#autoincrement no de id usuraios mas uno
ALTER TABLE joomla.jos_core_acl_aro AUTO_INCREMENT = 9711;

Paso 12
#activar autoincrement jos_core_acl_aro
ALTER TABLE jos_core_acl_aro CHANGE id id INT(11) NOT NULL AUTO_INCREMENT;

Paso 11
#respaldar y borrar jos_core_acl_groups_aro_map

Paso 12
#anadir usuarios a grupos.
INSERT INTO joomla.jos_core_acl_groups_aro_map (group_id, aro_id)
Select joomla.jos_users.gid, joomla.jos_users.id
FROM joomla.jos_users

Paso 13;
#anadir superpermisos a usuarios clave (segun lo que habia abrasol, werner, robertux y pooka no se espanten este ultimo lo borro al final sólo me sirve para ver que si hay cambios)
UPDATE joomla.jos_core_acl_groups_aro_map SET group_id = '25' WHERE jos_core_acl_groups_aro_map.aro_id = 2 LIMIT 1;
UPDATE joomla.jos_core_acl_groups_aro_map SET group_id = '25' WHERE jos_core_acl_groups_aro_map.aro_id = 448 LIMIT 1;
UPDATE joomla.jos_core_acl_groups_aro_map SET group_id = '25' WHERE jos_core_acl_groups_aro_map.aro_id = 4294 LIMIT 1;
UPDATE joomla.jos_core_acl_groups_aro_map SET group_id = '25' WHERE jos_core_acl_groups_aro_map.aro_id = 618 LIMIT 1;

Migrar nodos de Drupal a contenido en Joomla

Paso 1
#desactivar el auto increment de la tabla jos_content
ALTER TABLE jos_content CHANGE id id INT(11) UNSIGNED NOT NULL;

Paso 2
#respaldar y eliminar contenidos de la tabla jos_content

Paso 3
#Copiar los datos los datos de drupal.node a joomla.jos_content
# pasar la cuenta de nodos de drupal.node_counter a el campo joomla.jos_content.hits
# pasar el contenido del nodo de drupal.node_revisions a joomla.jos_content campos introtext y fulltext

INSERT INTO joomla.jos_content (joomla.jos_content.id,
joomla.jos_content.title,
joomla.jos_content.alias,
joomla.jos_content.created_by,
joomla.jos_content.modified_by,
joomla.jos_content.created,
joomla.jos_content.modified,
joomla.jos_content.publish_up,
joomla.jos_content.hits,
joomla.jos_content.introtext,
joomla.jos_content.fulltext)
SELECT
drupal.node.nid,
drupal.node.title,
drupal.node.title,
drupal.node.uid,
drupal.node.uid,
drupal.node.created,
drupal.node.changed,
drupal.node.created,
(SELECT drupal.node_counter.totalcount FROM drupal.node_counter WHERE drupal.node.nid = drupal.node_counter.nid),
(SELECT drupal.node_revisions.teaser FROM drupal.node_revisions WHERE drupal.node.nid = drupal.node_revisions.nid),
(SELECT drupal.node_revisions.body FROM drupal.node_revisions WHERE drupal.node.nid = drupal.node_revisions.nid)
FROM drupal.node;

#hay problemas con el timestamp... hay que hacer un update con este campo manualmente o encontrar una forma automatica

Paso 4
#actualizar secciones a blog
UPDATE joomla.jos_content
SET
joomla.jos_content.sectionid = 5,
joomla.jos_content.ordering = 1,
joomla.jos_content.state = 1,
joomla.jos_content.mask = 1,
joomla.jos_content.catid = 40
WHERE joomla.jos_content.sectionid = 0;

Paso 5
#modificar autoincrement al numero de nodos mas uno
ALTER TABLE joomla.jos_content AUTO_INCREMENT = 1190;

Paso 6
#reactivar autoincrement
ALTER TABLE jos_content CHANGE id id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT;

Migrar comentarios Drupal > Joomla

#Migrar comentarios de drupal a joomla.
#

Paso 1
#desactivar el auto increment de la tabla jos_idoblog_comments
ALTER TABLE `jos_idoblog_comments` CHANGE `id` `id` INT(11) NOT NULL

Paso 2
#respaldar y eliminar contenidos de la tabla jos_idoblog_comments

Paso 3
#Copiar los datos los datos de drupal.comments a jos_idoblog_comments
INSERT INTO joomla.jos_idoblog_comments (joomla.jos_idoblog_comments.id,
joomla.jos_idoblog_comments.parent,
joomla.jos_idoblog_comments.idarticle,
joomla.jos_idoblog_comments.created_by,
joomla.jos_idoblog_comments.text,
joomla.jos_idoblog_comments.username,
joomla.jos_idoblog_comments.email)
SELECT
drupal.comments.cid,
drupal.comments.pid,
drupal.comments.nid,
drupal.comments.uid,
drupal.comments.comment,
drupal.comments.name,
drupal.comments.mail
FROM drupal.comments;

#no se incluye timestamp, pero es necesario trabajar en la conversión a tipo fecha

Paso 4
# actualizar campo de publicación
UPDATE joomla.jos_idoblog_comments SET publish = '1' WHERE publish = '0';

Paso 5
#actualizar el autoincrement de los comentarios más uno
ALTER TABLE joomla.jos_idoblog_comments AUTO_INCREMENT = 3752;

Paso 6
#Acivar el autoincrement
ALTER TABLE `jos_idoblog_comments` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;

-o-o-o-
Roberto de Joomla chile dice que el probelma en la asignación de permisos se debe a la falta de:

  • coloca que no deben borrar e usuario admin
  • y que el id de los usuarios debe seguir al usuario admin

.

Ni idea e que signifique eso (son lo día y medio de ver la bd de joomla no me imagino qué y en dónde), pero seguro a alguien si.

Comentarios

Imagen de sheik

Nooo pues entendí la mitad de lo que escribiste, pero si pillé el comentario sarcástico, oh maestro que lejos estoy aún de tu nivel!!

(este no lo borrarás verdad..)

:D

Imagen de pooka

Naaaaa, es vil SQL que con puro copiar y pegar puedes ejecutar hasta en un phpmyadmin.

Y efectivamente este se queda!!!