[phpBB] Mods, Buen viaje!

Estado
Cerrado para nuevas respuestas.

Franeg95

CARP
Ex-Staff
Sin que todavía esté cocinado del todo les traígo información sacada del horno :p.

Como ya sabemos phpBB es uno de los CMS más utilizados por razones como ser gratuito, amigable con el usuario y por tener hoy en día una inmensa comunidad que aporta modificaciones entre otras. Y respecto a las MODificaciones es que quiero hablar ahora.
Desde que tengo memoria y veo cosas sobre este sistema de foros, se han inventado las mil y una modificaciones que incluyen desde gigantes sistemas que modifican por completo todo, nuevas funciones, bbcodes, temas, estilos, etc.
Desde hace un tiempo se viene gestando un nuevo modo de realizar modificaciones en este sistema y evitar coaliciones con otras modificaciones y a la vez aumentar la compatibilidad. Recordemos que un gran motivo por el cual uno no actualiza a las nuevas versiones de phpBB es porque siempre hay que andar corrigiendo incompatibilidades que quedan de entre versión y versión con los MODs que instalamos.
Yendo al punto de la cuestión, se ha lanzado la primera beta de la versión 3.1.0. ¿Qué significa esto? Para los que tienen su sistema ya con muchos usuarios tal vez no mucho por el momento, pero para aquellos aficionados a la tecnología que ya andan pensando en como esto los va a afectar, en como van a actualizar todo, etc. va a ser muy importante. Eso se debe ni más ni menos a que la nueva herramienta que trae hará más fácil modificar el sistema sin comprometer el nucleo de phpbb mas necesitará que se adapten los MODs a este nueva forma de trabajo que son las Extensiones.

¿Qué son las extensiones?

Las extensiones son la sucesoras de los MODS en phpBB 3.1. Las extensiones son diferentes de los mods ya que estas no realizan ninguna modificación en los archivos del núcleo de phpBB. En su lugar, las extensiones están totalmente alojadas dentro del directorio ./ext/ en la raíz de phpBB.
La estructura básica de las extensiones será: %directorio_raiz%/ext/<AUTOR>/<NOMBRE EXT>/
<AUTOR> es un carpeta y corresponderá al creador de la extensión.
<NOMBRE EXT> es otra carpeta (solo de numeros y letras) y dentro de ella tendremos los archivos composer.json y ext.php

Archivo composer.json: En este archivo estarán los datos de la extensión. Un ejemplo de este archivo:

{
"name": "acme/blog",
"type": "phpbb3-extension",
"description": "This will add an AI with mind reading capabilities to your board who will post your thoughts to a blog",
"homepage": "http://yourdomain.com/",
"version": "1.0.0",
"time": "2012-02-15",
"license": "GPLv2",
"authors": [
{
"name": "Unknown Bliss",
"email": "[email protected]",
"homepage": "http://yourdomain.com"
},
{
"name": "imkingdavid",
"email": "[email protected]",
"homepage": "http://yourdomain.com"
}
},
"require": {
"php": ">=5.4",
"phpbb": ">=3.1.0"
},
"extra": {
"display-name": "phpBB Blog Extension",
"author-notes": "This extension requires PHP 10.4 RC2 and only works with MySQL 20.4 because AI and Mindreading is not supported in earlier versions. Donate via head transfer to address MCJFIDEO29495"
}
}
Como vemos es muy importante ya que además de los datos de la extensión será crucial para determinar desde que versión de PHP es compatible entre otras cosas que serán develadas seguramente en la salida de la beta.

El otro archivo es ext.php que vendría a ser el instalador de la extensión. No he conseguido mucha información de fuentes confiables, pero por lo que se puede ver en la página de phpbb contendrá comandos como enable_step(), disable_step() y purge_step(), métodos los cuáles son declarados en phpbb_extension_base, clase desde la cual son heredados en esta (ext.php).

Un ejemplo:

PHP:
namespace example\foobar;

class ext extends \phpbb\extension\base
{
}
Eventos y Listeners

Aquí daré una explicación un tanto extensa que servirá para iniciar en la idea.
Cuando uno necesitaba crear un MOD para phpBB era necesario conocer bien la estructura del proyecto para saber donde meter el código y que este funcionase sin provocar que el sistema central tuviera errores. A medida que el código central (el núcleo del sistema) era actualizado, el MOD debía hacerlo o volverse incompatible.
Desde ahora las extensiones tendrán lo que se llama EVENTs que no es más ni menos que señales que son disparadas desde el núcleo del sistema para informar que suceden determinadas cosas. Los Listeners son la parte operativa. Es el código mismo de la modificación invocado por el evento. De esta manera desde el sistema se disparan diferentes eventos o señales que hacen ejecutar código externo, entonces por más que se actualice el código interno, nuestra extensión no necesitará actualización ya que responderá ante la misma señal de igual manera. Será mucho más vistoso cuando haya ejemplo de estas dos maravillosas herramientas.

Migraciones. Más info!!

Este item tiene importancia para las actualizaciones que se dan en la base de datos con las modificaciones. Su implementación hará mucho más eficiente y transparente la instalación de extensiones ya que evitará, mientras se cumplan los items que detalla, que se corrompan datos entre otras cosas, además de que facilita el trabajo con varias extensiones y que una no pise la actualización de otra.

Sin animos de hacer más largo el post ni de tirar información errada, ya que lo que hay es lo que se puede conseguir rasguñando por varios sitios, me despido. Espero que la información les haya sido útil y por mi parte espero con ansias esta nueva era de phpBB que de seguro marcará precedente para las nuevas movilidades y posibilidades que brindará a la plataforma en el futuro.

Más info y links de referencias:
https://wiki.phpbb.com/Category:Extensions
https://wiki.phpbb.com/Developing_Extensions
https://wiki.phpbb.com/Category:Events_and_Listeners
https://wiki.phpbb.com/Migrations/Extensions
 
Última edición por un moderador:

Lucas96

'Simply issue of love♥
La verdad que esto va a abrir posibilidades, y facilitar muchas cosas.(a mi opinión) Buen aporte, fue entretenido de leer.
 

Franeg95

CARP
Ex-Staff
Gracias, era la idea :D !

Esto ni hablar aunque no es abrir posibilidades sino mantenerlas en el tiempo. En cada cambio de versión hay muchos MODS que quedan en el camino o hay que actualizarlos. Por fin ahora va a haber un entorno de trabajo independiente donde vos haces lo tuyo y el sistema lo interpreta, por ende el sistema puede cambiar como trabaja internamente pero va a seguir haciendo el mismo resultado (sería un principio de POO básicamente).
 
Estado
Cerrado para nuevas respuestas.
Arriba