jueves, noviembre 30, 2006

Proceso de migracion ewiki´s

En un post anterior se comenta las versiones de la ewiki que puede exisitir en Moodle 1.6.
Tomando como base dicha versión de Moodle, describo los pasos generales del proceso de migración de la ewiki a la newwiki.
Este proceso reliza la migración del esquema de la bd y el contenido, manteniendo prácticamente la misma sintaxis que será interpretada por el parser con formato ewiki de la newiki .


  1. Ver si tenemos la dfwiki.
    • Si la tenemos, y la versión es mayor que la versión que estamos controlando, cancelamos la migración y notificamos al usuario.
    • Si la tenemos y la versión es menor o igual que la versión que estamos controlando ejecutamos la actualización llamando a la función dfwiki_installed_upgrade($oldversion).
    • Si no tenemos la dfwiki intalamos una nueva dfwiki actualizada mediante la instrucción modify_database($CFG->dirroot.'/mod/wiki/wikimigrate/dfwiki_'. $CFG->dbtype .'.sql')
  2. De esta manera, conseguimos que antes de convertir la ewikis a dfwiki, la estructura de las tablas dfwiki sean la misma tanto con dfwiki temporal o si ya estaba instalada. Concretamente la versión de dfwiki 2006052502.
  3. Pasamos las páginas ewikis a dfwiki.
  4. Borramos las tablas wiki, wiki_entries y wiki_pages del esquema wiki
  5. Migramos la dfwiki a newwiki.
    • Renombramos las tablas dfwiki como wiki
    • Si se utiliza una dfwiki instalada, creamos nuevamente las tablas dfwiki para evitar que se instale nuevamente la dfwiki debido a que la carpeta mod/dfwiki continúa existiendo.
  6. Actualizamos la newwiki, partiendo de una misma estructura de bd tanto si existía la dfwiki como si no y tratando los casos que son diferentes en la actualización de la newwiki como proceso de la migración de la newwiki si ésta ya estaba previamente instalada (actualización en lugar de migración).
Resultado
  • Con este planteo conseguimos migrar cualquier versión antigua de la ewiki o de la ewiki+dfwiki simpre sobre moodle1.6, o de moodle.1.5 actualizado a moodle 1.6.
  • Cualquier actualización posterior de la newwiki se podrá distribuir de manera habitual.
  • Cualquier actualización de la dfwiki posterior tendrá una versión mayor que la que controlamos, aspecto que deberemos contemplar ya que el usuario puede querer migrar de ewiki a newwiki más adelante con la nueva versión de la dfwiki. ( O en moodle 1.8 si la newwiki es la oficial).
    • En este caso, siempre que salga una versión de dfwiki nueva, se deberá sacar una versión de newwiki que permita migrar dicha dfwiki a newwiki. Para esto, la versión de newiki deberá:
      • Contener el archivo migratelib/mysql.sql y migratelib/postgres.sql (Para la instalación de una dfwiki temporal actualizada)
      • Contener el código para actualizar cualquier dfwiki anterior a la última versión de dfwiki dentro de dfwiki_installed_upgrade ($oldversión) en el archivo migratlib.php.
      • Controlar en los bloques if($oldversio...) cualquier modificación sobre la estructura de la bd, que se haya aplicado con anterioridad en la dfwiki. Esto solo en el caso de que se modifique la estructura de la bd en la última dfwiki.
      • Modificar la condición para que no permita migrar si existe una versión de dfwiki mayor.

Pruebas:

A continuación se comentan los entronos en que se han realizado las pruebas para garantizar que el proceso de migración se realiza correctamente:

  1. Migración de ewikis a newwiki en Moodle 1.5/1.6
  2. Migración de ewikis+dfwiki a newwiki en Moodle 1.5/1.6
  3. Migración de ewikis a newwiki en Moodle 1.6
  4. Migración de ewikis+dfwiki a newwiki en Moodle 1.6
Observaciones:

  • DFWIKI RESIDUAL:
    • En el caso que la dfwiki ya estuviera instalada, mantenemos la versión de la dfwiki que había antes de actualizar. Esto ha de ser así, ya que si cambiamos la versión de la tabla de módulos por la nueva versión, el archivo dfwiki/version.php sigue haciendo referencia a la versión de la dfwiki anterior, con lo que Moodle ejecutaría el proceso de actualización y daría error ya que no puede hacer un downgrade del módulo.
    • Como se comentó arriba, si el usuario tenía la dfwiki instalada, luego de renombrar las tablas dfwiki a wiki, se vuelven a crear las tablas dfwiki para evitar que se instale la dfwiki.
    • Lo que debe hacer el usuario, una vez a migrado a newwiki, es que si tiene la dfwiki instalada, ha de desinstalarla (módulo y bloques) utilizando el menú de admin de moodle, y luego borrar las carpetas dfwiki de modulo, y si lo tuviera, las carpetas de bloques también.
  • Campo studentmode:
    • Si este campo vale 1, entonces ownerid debe tener el mismo valor que userid, o la newwiki no funciona.
    • En el caso de las ewikis, studentmode ha de ser siempre 0, por lo que ownerid también debe valer 0.
    • En el caso de las dfwiki, a partir de la versión en que se introduce este campo, hay que ver el valor de dicho campo, y si vale 1, hay que hacer ownerid=userid.

No hay comentarios: