Guida base per creare un'estensione phpbb 3.1.x

Regole del forum
ATTENZIONE! QUESTA SEZIONE E' STATA BLOCCATA !!
brunino
Utente
Utente
Messaggi: 22
Iscritto il: 10/03/2013, 17:29
Versione: 3.0.11
Seo: No
Server: UNIX/Linux
Php: 5.3.1
Database: Mysql
Località: Toscana

Guida base per creare un'estensione phpbb 3.1.x

Messaggio da brunino » 15/11/2014, 20:35

Questa guida l'ho creata su richiesta di un altro forum, ma ve la rilascio anche a voi... vi potesse mai essere utile :grin:

La base per sviluppare un'estensione é scegliere i nomi delle directory che la ospiteranno. esempio ext/staffit/toptentopics
All'interno di quella cartella vanno tutti i file dell'estensione.
Il primo file da creare obbligatoriamente é il composer.json va messo nella directory della nostra estensione e va compilato come segue:

Codice: Seleziona tutto

 {
    "name": "staffit/toptentopics",
    "type": "phpbb-extension",
    "description": "Aggiunge un box nell'indice con ultimi topic, topic più visti e ultimi post",
    "homepage": "https://brunino.altervista.org",
    "version": "0.1.0-a1",
    "time": "2014-11-10",
    "license": "GPL-2.0",
    "authors": [
        {
            "name": "brunino",
            "email": "brunino@altervista.org",
            "homepage": "http://www.brunino.altervista.org",
            "role": "Developer"
        },
 {
            "name": "Carlo",
            "email": "carlo@phpbbitalia.net",
            "homepage": "http://www.phpbbitalia.net",
            "role": "Helper"
        }, 
        {
            "name": "Micogian",
            "email": "giannidose@tin.it",
            "homepage": "http://www.actafungorum.org/actaforum/",
            "role": "Previous Developer"
        }
    ],
    "require": {
        "php": ">=5.3"
    },
    "extra": {
        "display-name": "Top Ten Topics",
        "soft-require": {
             "phpbb/phpbb": "3.1.*@dev"
        },
        "version-check": {
            "host": "brunino.altervista.org",
            "directory": "/version/",
            "filename": "toptentopics.json"
        }
    }
}

A questo punto inizia lo sviluppo vero e proprio.

MODIFICHE AI TEMPLATE
con le estensioni non si può più andare a pescare un punto dei ttemplate e aggiungere/rimuovere/cambiare una parte del codice bensì bisogna usare gli eventi proposti da phpbb e che trovate qui: https://wiki.phpbb.com/Event_List#Template_Events
[se non trovate un evento che vi serve dovete richiederlo e sperare che lo inseriscano nella prossima versione phpbb]
gli eventi servono per aggiungere codice ai template.
per eseguirne uno è sufficiente creare un file directory_tua_estensioe/styles/all/template/event/nome_evento.html e all'interno mettere il codice da aggiungere.

MODIFICARE PHP
Le problematiche nascono se si vuol modificare php.
Anche in questo caso c'é una lista di eventi utilizzabili. Questa volta bisogna creare alcuni file in base a cosa si deve fare.
un file necessario é il config/services.yml
Qui bisogna specificare le variabili che ci serviranno nel php (es $db per le query sql, $template per passare dati da php a template).
Esempio di services.yml

Codice: Seleziona tutto

 services:
    phpbbitalia.topten.listener:
        class: staffit\toptentopics\event\listener
        arguments:
            - @dbal.conn
            - @template
            - @auth
            - @user
            - %core.root_path%
            - %core.php_ext%
        tags:
            - { name: event.listener }

Gli eventi php li gestiamo nel file event/listener.php vediamo come:

Codice: Seleziona tutto

 <?php
namespace staffit\toptentopics\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements
EventSubscriberInterface{
protected $db;
//protected $table_prefix;
//protected $request;
//protected $search_engines;
protected $template;
protected $auth;
protected $user;
protected $root_path;
protected $phpEx;

//costruttore
public function __construct(\phpbb\db\driver\driver_interface $db, \phpbb\template\template $template, \phpbb\auth\auth $auth, \phpbb\user $user, $root_path, $phpEx) 
{
   $this->db = $db;
   $this->template = $template; 
   $this->auth = $auth;
   $this->user = $user;
   $this->root_path = $root_path;
   $this->phpEx   = $phpEx ;
}

static public function getSubscribedEvents()	{		return array(			'core.user_setup'						=> 'mia_funzione',					);	}	
public function mia_funzione($event)	{		
//codice da eseguire nell'evento
//return $event
}
}

Nella prima parte definiamo le variabili che già abbiamo richiesto nel services così
protected $db;
poi dobbiamo creare il costruttore sempre per definire quelle variabili.
tutte le variabili infatti in phpbb3.1 sono passate da $db->sql_query a $this->db->sql_query e così anche per user e template ecc...
E poi definiamo gli eventi che vogliamo usare e cosa far eseguire per ognuno di essi. Esattamente definiamo l'evento e gli associamo una nuova funzione che andiamo a creare sotto. La funzione avrà come unico parametro $event nel quale verrà passato qualcosa in base all'evento come scritto nella lista.

Qui non ho ancora scritto come creare una pagina personalizzata, moduli PCA e modificare il database perché ancora neanche io l'ho capite benissimo.

Spero vi sia utile.
Qualsiasi domanda é accetta.

Questa guida non é completa... per vedere la guida completa (in sviluppo ma quasi del tutto finita) vai qui

Avatar utente
Tiger
Amministratore
Amministratore
Messaggi: 2611
Iscritto il: 02/11/2011, 1:19
Versione: 3.2.X
Seo: Si
Server: UNIX/Linux
Php: 5.4.31
Database: MySQL(i) 5.1.60-community-log
Località: Roma

Re: Guida base per creare un'estensione phpbb 3.1.x

Messaggio da Tiger » 15/11/2014, 22:22

Grazie Brunino .?. .?. .?.

Utilissima :hi: :hi: :hi:
Immagine