Proceso de migración de módulos de JAMES a JAMES2
Se usa el config.xml modelo para hacerlo. La conversión es bastante directa. Se ignora la parte de configOption que ya no es útil. En cuanto a los implements y requires, de momento no sirven, se utilizarán en un futuro.
No es obligatorio, pero se recomienda la siguiente nomenclatura:
Nombre del módulo: En mayúsculas la primera letra de cada palabra (por ejemplo: ControlCenter).
Nombre de permisos: En minúscula la primera letra, en mayúsculas las restantes de comienzo de palabra (por ejemplo: removeMessage).
Nombre de clave de configuración: En mayúsculas la primera letra de cada palabra (por ejemplo: DefaultFormat).
El eventHandler.inc de todos los módulos ha cambiado de nombre. Ahora se llama MiModulo.class.php. Sin embargo, las diferencias internas son realmente pequeñas:
Ahora no hereda de la clase Mod sino de IJamesModule que está en core/modules/IJamesModule.class.php.
Como se recomienda que el nombre del módulo sea la primera en mayúscula, en general habrá que cambiar el nombre de la clase (ej. de forum a Forum).
El constructor no tiene que hacer nada ahora (antes hacía $this->Mod("forum");), pero recibe un parámetro: su objeto Module asociado.
Ya no se usa el método Event en el que se ponían los distintos eventos con un switch. Ahora cada evento es un método de la clase MiModulo.
Añadir en las páginas a las que pueda acceder el usuario la línea JSystem::InitModule(“MiModulo”)
Cambiar los include_once por los correspondientes en el nuevo núcleo. En general, se sustituye:
inc/dbjames.inc por core/db/dbjames.class.php
inc/session-james.inc por core/system/JSystem.class.php
En las que pueda acceder el usuario, incluir también core/html/HtmlInterface.class.php
Ejecutar el script para ver las llamadas al núcleo antiguo que hay en el módulo e ir realizando las siguientes sustituciones.
Ahora en lugar de crear un objeto User de la forma:
$obj = new User($id);
se hace de:
$obj =& $GLOBALS[JUGRSYSTEM]->GetUser($id);
Para acceder a información sobre el usuario se hacía
$obj->data[“name”];
ahora se hace
$obj->GetLogin(); //Mirar los métodos de la clase user para más detalle
Igual a la clase user :-)
Si queríamos acceder a configuración del sistema era:
$config = new ConfigJames();
$value = $config->GetSystemConf(“clave”, “default”);
Ahora es
$value = JSystem::GetConfig(“clave”, “default”);
Para la configuración del módulo:
$value = $config->GetModuleConf(“clave”, “default”);
Ahora es:
$value = $GLOBALS[CURRENT_MODULE]->GetConfig(“clave”, “default”);
Se cambia por:
$html = new HtmlInterface(“MiModulo”);
Se cambia por
$user =& $GLOBALS[CURRENT_USER];
que devuelve el objeto correspondiente al usuario actual, para obtener su id, sería:
$uid = $GLOBALS[CURRENT_USER]->GetId();
También es posible hacer lo mismo mediante
$user =& JSystem::GetCurrentUser();
$user->GetId();
Ha pasado a ser
$GLOBALS[CURRENT_USER]->HasPermission(“permiso”);
Se cambia por
$group =& $GLOBALS[CURRENT_USER];
que devuelve el objeto correspondiente al usuario actual, para obtener su id, sería
$gid = $GLOBALS[CURRENT_USER]->GetId();
También es posible hacer lo mismo mediante
$group =& JSystem::GetCurrentGroup();
$gid = $group->GetId();
Antes se usaba
../../estilo/james.css // o bien
getJamesWebDir().”/estilo/james.css”.
Ahora se hace:
$html = new HtmlInterface();
$html->GetCSSPath();
Ha pasado a ser
include(“core/html/header.inc.php”)