jueves, noviembre 09, 2006

Analisis de versiones ewiki 1.6

Luego de los problemas que han tenido algunos usuarios al intentar instalar la wiki_candidate, debido a un fallo en el proceso de migración de la ewiki a la newwiki, hemos realizado el siguiente análisis de las diferentes versiones de la ewiki sobre moodle 1.6 para garantizar que dicho proceso se realice correctamente.

Con motivo de utilizar una versión que sirva de eje comparativo, he tomado la version Moodle_1.61 cuyas versiones de archivos de definición de la estructura de la base de datos son los siguientes: Version.php 1.17.2.1: 2006042801 (Mysql.php 1.9/Mysql.sql 1.8)

A continuación se describen las diferentes versiones de la ewiki sobre la distribución de Moodle 1.6.

Todos los datos se han recopilado del sourceforge.


Moodle_1.6_AUTHREFACTOR_PRE

Moodle_1.6_AUTHREFACTOR

Moodle_1.6_MULTIENROL_MP1

Moodle_1.6_MULTIENROL_PRE

Moodle_1.6_UTF8_PRE

Moodle_UTF81.6_MULTIENROL

Todas estas versiones, utilizan los archivos:

Version.php 1.14 2005031000 (Mysql.php v_1.7/Mysql.sql v_1.6)

Descripción del archivo Mysql.sql v_1.6

CREATE TABLE `prefix_wiki` (

`id` int(10) unsigned NOT NULL auto_increment,

`course` int(10) unsigned NOT NULL default '0',

`name` varchar(255) NOT NULL default '',

`summary` text NOT NULL,

`pagename` varchar(255) default NULL,

`wtype` enum('teacher','group','student') NOT NULL default 'group',

`ewikiprinttitle` tinyint(4) NOT NULL default '1',

`htmlmode` tinyint(4) NOT NULL default '0',

`ewikiacceptbinary` tinyint(4) NOT NULL default '0',

`disablecamelcase` tinyint(4) NOT NULL default '0',

`setpageflags` tinyint(4) NOT NULL default '1',

`strippages` tinyint(4) NOT NULL default '1',

`removepages` tinyint(4) NOT NULL default '1',

`revertchanges` tinyint(4) NOT NULL default '1',

`initialcontent` varchar(255) default NULL,

`timemodified` int(10) NOT NULL default '0',

PRIMARY KEY (`id`),

KEY `course` (`course`)

) TYPE=MyISAM COMMENT='Main wiki table';

CREATE TABLE `prefix_wiki_entries` (

`id` int(10) NOT NULL auto_increment,

`wikiid` int(10) NOT NULL default '0',

`course` int(10) NOT NULL default '0',

`groupid` int(10) NOT NULL default '0',

`userid` int(10) NOT NULL default '0',

`pagename` varchar(255) NOT NULL default '',

`timemodified` int(10) NOT NULL default '0',

PRIMARY KEY (`id`),

KEY `wikiid` (`wikiid`),

KEY `course` (`course`),

KEY `gropuid` (`groupid`),

KEY `userid` (`userid`),

KEY `pagename` (`pagename`)

) TYPE=MyISAM COMMENT='Holds entries for each wiki start instance.';

CREATE TABLE `prefix_wiki_pages` (

`id` int(10) unsigned NOT NULL auto_increment,

`pagename` VARCHAR(160) NOT NULL,

`version` INTEGER UNSIGNED NOT NULL DEFAULT 0,

`flags` INTEGER UNSIGNED DEFAULT 0,

`content` MEDIUMTEXT,

`author` VARCHAR(100) DEFAULT 'ewiki',

`userid` INTEGER UNSIGNED NOT NULL DEFAULT 0,

`created` INTEGER UNSIGNED DEFAULT 0,

`lastmodified` INTEGER UNSIGNED DEFAULT 0,

`refs` MEDIUMTEXT,

`meta` MEDIUMTEXT,

`hits` INTEGER UNSIGNED DEFAULT 0,

`wiki` int(10) unsigned NOT NULL,

PRIMARY KEY `id` (`id`),

UNIQUE KEY `wiki_pages_uk` (`pagename`, `version`, `wiki`)

) TYPE=MyISAM COMMENT='Holds the Wiki-Pages';



Moodle_1.6_BETA

Utiliza las siguientes versiones de archivos:

Version.php 1.17 2006042800 (Mysql.php 1.8/Mysql.sql 1.9)

Descripción del archivo Mysql.sql v_1.8

CREATE TABLE `prefix_wiki` (

`id` int(10) unsigned NOT NULL auto_increment,

`course` int(10) unsigned NOT NULL default '0',

`name` varchar(255) NOT NULL default '',

`summary` text NOT NULL default '',

`pagename` varchar(255) NOT NULL default '',

`wtype` enum('teacher','group','student') NOT NULL default 'group',

`ewikiprinttitle` tinyint(4) NOT NULL default '1',

`htmlmode` tinyint(4) NOT NULL default '0',

`ewikiacceptbinary` tinyint(4) NOT NULL default '0',

`disablecamelcase` tinyint(4) NOT NULL default '0',

`setpageflags` tinyint(4) NOT NULL default '1',

`strippages` tinyint(4) NOT NULL default '1',

`removepages` tinyint(4) NOT NULL default '1',

`revertchanges` tinyint(4) NOT NULL default '1',

`initialcontent` varchar(255) NOT NULL default '',

`timemodified` int(10) NOT NULL default '0',

PRIMARY KEY (`id`),

KEY `course` (`course`)

) TYPE=MyISAM COMMENT='Main wiki table';

CREATE TABLE `prefix_wiki_entries` (

`id` int(10) NOT NULL auto_increment,

`wikiid` int(10) NOT NULL default '0',

`course` int(10) NOT NULL default '0',

`groupid` int(10) NOT NULL default '0',

`userid` int(10) NOT NULL default '0',

`pagename` varchar(255) NOT NULL default '',

`timemodified` int(10) NOT NULL default '0',

PRIMARY KEY (`id`),

KEY `wikiid` (`wikiid`),

KEY `course` (`course`),

KEY `gropuid` (`groupid`),

KEY `userid` (`userid`),

KEY `pagename` (`pagename`)

) TYPE=MyISAM COMMENT='Holds entries for each wiki start instance.';

CREATE TABLE `prefix_wiki_pages` (

`id` int(10) unsigned NOT NULL auto_increment,

`pagename` VARCHAR(160) NOT NULL,

`version` INTEGER UNSIGNED NOT NULL DEFAULT 0,

`flags` INTEGER UNSIGNED DEFAULT 0,

`content` MEDIUMTEXT default '',

`author` VARCHAR(100) DEFAULT 'ewiki',

`userid` INTEGER UNSIGNED NOT NULL DEFAULT 0,

`created` INTEGER UNSIGNED DEFAULT 0,

`lastmodified` INTEGER UNSIGNED DEFAULT 0,

`refs` MEDIUMTEXT default '',

`meta` MEDIUMTEXT default '',

`hits` INTEGER UNSIGNED DEFAULT 0,

`wiki` int(10) unsigned NOT NULL default 0,

PRIMARY KEY `id` (`id`),

UNIQUE KEY `wiki_pages_uk` (`pagename`, `version`, `wiki`)

) TYPE=MyISAM COMMENT='Holds the Wiki-Pages';



Moodel_1.6/Moodle_1.61

Ambas distribuciones de Moodle utiliza las siguientes versiones de archivos:

Version.php 1.17.2.1: 2006042801 (Mysql.php 1.9/Mysql.sql 1.8)

Las versiones de Mysql.php y Mysql.sql son las mismas que la versión 1.6_BETA.

Luego de analizar el archivo Mysql.php se observa que no se realiza ningún cambio en la estructura de la Base de Datos respecto a la versión 1.6_BETA.


Moodle_1.62

Moodle_1.63

Moodle_MERGED

Moodle_STABLE

Todas estas distribuciones de Moodle utiliza las siguientes versiones de archivos:

Version.php 1.17.2.2 2006080701 (Mysql.php 1.9/Mysql.sql 1.8)

Las versiones de Mysql.php y Mysql.sql son las mismas que la versión Moodle_1.6_BETA.

Luego de analizar el archivo Mysql.php se observa que no se realiza ningún cambio en la estructura de la Base de Datos respecto a la versión Moodle_1.6_BETA.



Moodle 1.6_HEAD

Utiliza las siguientes versiones de archivos:

Version.php 1.27 2006092602 (Mysql.php 1.12/Mysql.sql 1.8)

Descripción del archivo Mysql.php v_1.12 (Se muestran solo los cambios respecto al archivo Mysql.php v_1.9)

if ($oldversion <>

modify_database("","

CREATE TABLE prefix_wiki_locks(

id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

wikiid INT(10) UNSIGNED NOT NULL,

pagename VARCHAR(160) NOT NULL DEFAULT '',

lockedby INT(10) NOT NULL DEFAULT 0,

lockedsince INT(10) NOT NULL DEFAULT 0,

lockedseen INT(10) NOT NULL DEFAULT 0,

PRIMARY KEY(id),

UNIQUE INDEX wiki_locks_uk(wikiid,pagename),

INDEX wiki_locks_ix(lockedseen)

);");

}

Esta versión (Moodle_HEAD), es la única que modifica la estructura de la base de datos.
Todas las demás versiones de la ewiki en Moodle 1.6, si bien se observa algunos cambios de versión del módulo, se puede afirmar que mantienen la misma estructura de la base de datos que la versión Moodle_1.6.1, que he utilizado para efectuar las pruebas de migración.

Sin embargo esta tabla nueva que se genera debería estar definida a su vez en el archivo Mysql.php, ya que de al no ser así, esta tabla solamente se crea en la base de datos en el caso de estar migrando desde las versiones de módulos ewiki anteriores a la versión 2006092502, mientras que si se realiza una instalación desde cero de la ewiki con la version Moodle_HEAD, dicha tabla no se instalará. El por qué de este comportamiento particular de esta tabla debeerá analizarse con mayor detalle.

2 comentarios:

Ludo dijo...

Ahora pongo un comentario para que paren de modificar el ewiki.

Pablo dijo...

Ok. Gracias Marc.
Link a moodle donde se trata el tema:
http://moodle.org/mod/forum/discuss.php?d=58704