Personalizzare PhpNuke 6.0 Introduzione Capitolo 1: Strumenti 1.1 Siti ufficiali della Relazione 1.2 Risorse 1.3 Manuali, Mailing List e NewsGroup Capitolo 2: Installazione 2.1 All’opera 2.2 Installare Red Hat Apache, MySql, PHP e PHPNuke 2.2.1 Red Hat 2.2.1.1 Partizione necessarie 2.2.1.2 Creazione LILO (LInux LOader) 2.2.1.3 Scelta dell’installazione e dei pacchetti Capitolo 3: Configurazione 3.1 3.2 3.3 3.4 3.5 MySql Apache PhpNuke Configurazione in ambiente windows PhpMyAdmin un utile strumento Capitolo 4: Presentazione della struttura e funzionalità grafiche 4.1 Cosa ci troviamo di fronte 4.2 Alcune sezioni in dettaglio 4.2.1 Downloads 4.2.2 Forum 4.2.3 Ricerca all'interno del portale 4.2.4 Statistiche sugli utenti del portale 4.2.5 Sezione per gli utenti registrati 4.2.6 Sezione di amministrazione Capitolo 5: Architettura e Struttura del PhpNuke 5.1 Struttura delle cartelle 5.1.1 Cartella di root Fabrizio Di Cola & Giovanni De Angelis 2 Personalizzare PhpNuke 6.0 5.1.2 Le altre cartelle 5.2 Gestione della pagina principale Capitolo 6: Gestione remota del portale 6.1 Inserimento di un nuovo tema : V-BlueBaby1.0 6.2 Inserimento di un addon : Internet Radio2.0 6.2.1 Il modulo Internet Radio 6.2.2 Il blocco Internet Radio Capitolo 7: Viaggio all’interno del codice PhpNuke 7.1 Personalizzazione di un Tema 7.1.1 Analisi e creazione di un tema 7.1.2 Selezionare un tema 7.2 Personalizzazione dei blocchi 7.2.1 Analisi e creazione di un blocco 7.2.2 Aggiungere un blocco 7.3 Personalizzazione di un modulo 7.3.1 Parte pubblica 7.3.2 Parte di amministrazione 7.3.3 Inserire un modulo Capitolo 8: Analisi del database Nuke 8.1 Creazione del database 8.2 Uno sguardo sulle tabelle 8.3 Le tabelle principali Fabrizio Di Cola & Giovanni De Angelis 3 Personalizzare PhpNuke 6.0 Introduzione Questa relazione è stata scritta basandoci anche su alcuni passi tratti dalla documentazione indicata qui di seguito : “ Versione Originale di Claudio Erba ([email protected]), www.spaghettibrain.com , PHPnuke italian Mirror, 2002, questo libro, in tutte le sue versioni (anche quelle modificate da terzi in italiano o in qualsiasi ) ,per volontà dell’autore, può essere riprodotto anche integralmente senza violare nessuna legge in quanto questo libro e rilasciato sotto GNU free Documentation License (http://www.gnu.org/licenses/licenses.html ) “ PHPNuke è un sistema che integra al suo interno tutti gli strumenti utili a creare un sito portale di informazione (inteso in senso allargato). Gli ambiti di applicazione sono molteplici: - Portali di informazione, testate giornalistiche Associazioni, No profit Enti Pubblici (Siti di comuni, province, ASL ...) Intranet aziendali, Supporto tecnico, House organ In generale tutti quei siti che hanno bisogno di offrire molte informazioni (e di conseguenza molte pagine) e degli strumenti per gestirne il flusso. Php + MySQL (Il sistema è multipiattaforma e funziona su qualsiasi OS che abbia installato i due sistemi sopra citati. PHPNuke è un sistema sviluppato dal Venezuelano (ma di origini canadesi) Francisco Burzi che tutt’ora ne segue personalmente lo sviluppo. Pur essendo rilasciato sotto licenza GPL ed abbracciando in pieno la filosofia open source PHPnuke non dispone di un CVS e lo sviluppo è seguito unicamente dal suo creatore. Nella correzione di Bug, realizzazione di moduli, traduzioni in lingue diverse dall’inglese ottimizzazione del codice, sono coinvolte molte comunità sparse in tutto il mondo ma lo “scettro” e l’ultima parola spettano sempre a Francisco. E’ stato fatto un tentativo di creazione di un CVS assieme al team di Nukeaddon.com ma il server è stato chiuso poco dopo. Cosa è PHPNuke: - Mezzo milione di files scaricati Più di 100 siti di supporto in tutte le lingue Trecentomila membri attivi nelle varie comunità Nuke Il supporto ufficiale di Linux Mandrake Più di 300 moduli aggiuntivi e 500 diverse proposte grafiche reperibili in rete Perché scegliere PHPNuke: - Perché gestire siti di grandi dimensioni con sole pagine html fa male alla salute Perché attraverso pagine dinamiche gli utenti possono interagire (Forum, chat..) Perché attraverso le pagine dinamiche si possono offrire servizi a valore aggiunto (Aree riservate, servizi diversi in base alle categorie di utenti...) Perché le informazioni sono più facimente catalogabili Perché con poche pagine richiamiamo molte informazioni Fabrizio Di Cola & Giovanni De Angelis 4 Personalizzare PhpNuke 6.0 Capitolo 1: Strumenti Portale del Progetto 1.1 http://login.campus.uniroma2.it/~deangelg/phpnuke/ Siti ufficiali della Relazione Home page del progetto Giovanni De Angelis Fabrizio Di Cola 1.2 Risorse Apache Web Server MySql PHP PHPNuke PhpMyAdmin Linux Php EasyWindows FoxServ V-BlueBaby Internet Radio 1.3 http://www.ii01047x.cjb.net/ http://www.mrguru.net http://dicola.cjb.net http://www.apache.org http://www.mysql.org http://www.php.net http://www.phpnuke.org http://www.phpmyadmin.net http://www.redhat.it http://php.weblogs.com/easywindows http://www.foxserv.net http://vipixel.com http://www.just4me.nl Manuali, Mailing List e NewsGroup Portale italiano dedicato al PHPNuke Apache Web Server MySql PHP PHPNuke Linux Linux Mailing List Linux e PHP italiane Newsgroup Linux Newsgroup Linux Newsgroup PHP Newsgroup PHP http://www.spaghettibrain.com http://www.apache.org http://www.mysql.org http://www.php.net http://www.phpnuke.org http://www.ziobudda.net http://www.start-linux.com http://www.infomedia.it it.comp.os.linux.* comp.os.linux.* it.comp.www.php comp.lang.php Fabrizio Di Cola & Giovanni De Angelis 5 Personalizzare PhpNuke 6.0 Capitolo 2: Installazione 2.1 All’opera Una volta scaricate tutte le risorse necessarie a far funzionare PHPNuke passiamo alla fase di installazione dei pacchetti. PHPNuke è stato interamente scritto in PHP e visto che tale linguaggio è nativo per Linux abbiamo pensato di installare questo sistema operativo. Linux è gratuito e OpenSource perciò lo si può scaricare e installare tranquillamente sulle nostre macchine senza badare a costi di licenze. Da notare il fatto che Linux e Windows possono coesistere su uno stesso computer. Tra le varie distribuzioni che esistono (per esempio Suse, Debian, Slackware, Mandrake..) abbiamo scelto di utilizzare la Red Hat 7.3 e 8.0 su due macchine differenti. La scelta è ricaduta sulla Red Hat perché a nostro avviso si tratta di una distribuzione che riesce ad unire stabilità, leggerezza (sia nell’installazione che non richiede molto spazio rispetto ad altre e sia nella gestione dei processi che non appesantiscono l’utilizzo del computer) e facilità di utilizzo (i suoi motori grafici sono molto user friendly). Per quanto riguarda i tool da noi utilizzati la differenza tra le due versioni è minima. Da notare infatti che sulla 8.0 troviamo il Server Web Apache 2.0 a differenza di una versione più vecchia che si trova nella 7.3 di Red Hat. 2.2 Installare Red Hat Apache, MySql, PHP e PHPNuke 2.2.1 Red Hat Se disponiamo di un computer con un sistema operativo che non sia Linux e vogliamo comunque mantenere anche tale sistema dobbiamo partizionare il nostro Hard Disk in almeno due parti dove in una metteremo Linux e nell’altra il secondo sistema operativo. Fatto ciò, non ci resta che inserire i nostri cd di installazione di Linux Red Hat nel lettore e partire con l’installazione. Se non si dispone di un cd rom autoavviante o se il nostro lettore non è bootable basta creare un floppy disk di boot anche sotto windows servendoci del tool Rawrite esistente in versione Dos e versione a 32 bit per Windows. Tale tool si trova nei CD di installazione. Questo programma permette di creare un dischetto di avvio che lancerà in seguito l’installazione da cdrom. Leggere il readme di tale pacchetto per capire quale è l’immagine da utilizzare per creare il dischetto. L’immagine cambia a seconda del computer che si possiede. Una volta avviata l’installazione (al prompt <boot:> premere tranquillamente <INVIO>) non si dovrà far altro che scegliere la lingua e seguire tutte le richieste di Anaconda (questo è il nome dell’interfaccia che gestisce il setup) passo dopo passo. Passi importanti in questa installazione sono creare le partizioni all’interno di quelle in cui si vuole mettere Linux, configurare il LILO (LInux LOader) e scegliere l’installazione (Workstation, Server o Full). 2.2.1.1 Partizioni necessarie Arrivati alla creazione delle partizioni, per Red Hat ne basta creare due, quella di root (/) e quella di swap che generalmente deve essere dimensione doppia di quella del banco di memoria che si ha sul nostro computer. Fabrizio Di Cola & Giovanni De Angelis 6 Personalizzare PhpNuke 6.0 Anaconda crea già delle partizioni di default, noi consigliamo di cancellarle e procedere come detto sopra. 2.2.1.2 Creazione del LILO (LInux LOader) La creazione del LILO è molto importante in quanto serve a far funzionare il corretto avvio di Linux al boot del computer. Ci sono due opzioni e sono: 1) Creare il LILO sul MBR del nostro Hard Disk 2) Saltare questa fase e creare un dischetto di boot per Linux alla fine dell’installazione quindi il LILO verrà creato su floppy. La differenza tra le due opzioni è che creando il LILO su un floppy saremo schiavi nell’inserire questo ad ogni avvio di Linux ! Nelle ultime versioni di Linux si può far uso di un nuovo loader di nome GRUB che è equivalente al LILO. 2.2.1.3 Scelta dell’installazione e dei pacchetti Per quanto riguarda la scelta dell’installazione, noi consigliamo di scegliere quella Server con la scelta dei pacchetti in maniera personalizzata. Non bisogna essere degli esperti per scegliere i pacchetti e in genere troviamo già dei pacchetti selezionati. A questi se ne possono aggiungere altri a seconda dell’utilizzo che si vuole fare del nostro sistema e dello spazio che abbiamo a disposizione sul disco rigido (generalmente un installazione full richiede circa 2,5 Gb di spazio libero per quanto riguarda red hat 7.3). Detto ciò è molto importante verificare che i pacchetti MySql, Apache e PHP siano selezionati affinché si debba installarli manualmente dopo l’installazione. Durante la fase di setup ci verrà anche chiesta la password di root (amministratore) che si vuole usare e di creare un semplice utente sul sistema. Fatto ciò non ci resta che attendere che Anaconda si prenda cura del nostro computer portando a termine il processo di installazione. Una volta finita l’installazione se non si sono selezionati i pacchetti MySql,PHP e Apache, scaricarli dalla rete o dai propri supporti cd e installarli. Se si sta installando un pacchetto specifico per Red Hat, quindi un RPM, l’installazione sarà molto semplice perché basta utilizzare il programma kpackage (non sempre questi tool mantengono questi nomi nel passare da una versione all’altra delle distribuzioni, basterà però cercarli navigando nel menù grafico del nostro windows manager) che penserà all’installazione del pacchetto sulla nostra macchina. Se invece il pacchetto scaricato è un TAR.GZ o BZ2 allora basterà decomprimere il pacchetto in una directory e seguire le istruzioni che si trovano generalmente nei README o INSTALL files. Fabrizio Di Cola & Giovanni De Angelis 7 Personalizzare PhpNuke 6.0 Capitolo 3: Configurazione 3.1 MySql All’avvio del nostro computer dovremo specificare con quale nome utente ci vogliamo loggare all’interno del nostro Server Linux. Utilizzeremo quindi il nome utente che abbiamo creato durante l’installazione. Una volta entrati apriamo una shell e digitiamo il comando “ su – “ a questo punto inseriamo la password di root che abbiamo scelto precedentemente. Noteremo che il prompt della shell cambierà da username@localhost$ in root@localhost# questo contraddistingue il fatto che adesso siete root e l’utente root può fare tutto ciò che vuole del computer. A questo punto digitiamo il comando setup e muoviamoci sulla sezione relativa ai servizi. Qui non dobbiamo far altro che assicurarci che i demone che si occupano di attivare all’avvio i servizi Apache e MySql siano attivati. Se così non fosse selezioniamo tali demoni tramite il tasto spazio. I demoni in considerazione sono httpd o apache e mysql o mysqld (da notare che generalmente i file che hanno una d alla fine del loro nome sono dei demoni cioè dei programmi che lavorano in background e che si occupano di assicurare dei servizi). Fatto ciò riavviamo il server. Adesso riapriamo una shell e verifichiamo che Mysql sia attivo digitando il comando mysql. Se ci troviamo di fronte al prompt “ mysql> “ ciò vuol dire che il nostro Server Database è attivo e che siamo attualmente connessi a questo! 3.2 Apache Adesso verifichiamo che Apache sia attivo. Apriamo uno dei tanti Browser che troviamo nella nostra macchina e scriviamo nella barra degli indirizzi http://localhost, se si apre una pagina di benvenuto di Apache il nostro Server Web funziona correttamente! Adesso passiamo alla fase di configurazione del Server Web sotto utente, ovvero dell’attivazione della directory virtuale http://localhost/~username dove in seguito andremo a installare PHPNuke. Per configurare la nostra directory apriamo una shell e creiamo una cartella chiamata public_html digitando il comando “ mkdir public_html “. Fatto questo diamo dei permessi a tale cartella facendo così: username@localhost$ su – username@localhost$ password: <scriviamo la password di root> root@localhost# chmod 711 ~username root@localhost# chmod 755 –R ~username/public_html root@localhost# Potremmo dire di aver finito ma in realtà come in molti dei pacchetti Linux dobbiamo editare i files di configurazione. Avendo sempre la nostra shell a portata di mano muoviamoci nella directory /etc/httpd/conf con il comando “ cd /etc/httpd/conf/ “ e andiamo a scrivere il file httpd.conf che è il file di configurazione di Apache. L’httpd.conf è un file molto importante e in esso si trovano molte direttive che permettono di configurare il Server nei modi più flessibili e consoni alle nostre esigenze, sia a livello di sicurezza che a livello di usabilità. Fabrizio Di Cola & Giovanni De Angelis 8 Personalizzare PhpNuke 6.0 Per editare il file basta usare uno dei tanti editor che troviamo sul nostro sistema, noi prediligiamo jed e il comando che dobbiamo digitare è “ jed httpd.conf” ma si possono utilizzare tanti altri tool di testo come emacs e kwrite che sono ache più user friendly di jed. Una volta aperto il file dobbiamo aggiungere delle informazioni per far si che tutto funzioni nella nostra cartella public_html. Ciò che dobbiamo cercare e modificare all’interno del documento è la stringa UserDir. Una volta trovata dobbiamo togliere il # davanti ad essa e modificare la linea facendo in modo che non ci sia nient’altro che questo: UserDir /home/*/public_html Questo farà si che tutti gli utenti sul nostro server potranno creare la cartella public_html ed avere il loro indirizzo sul proprio spazio del tipo http://localhost/~username. Fatto ciò dobbiamo dare dei permessi all’interno di quella cartella ovvero far si che i nostri script php possano essere eseguiti senza problemi da Apache. Andiamo quindi a cercare il tag <Directory /home/*/public_html> … </Directory> Ciò che dobbiamo fare è: 1) Assicurarci che tutto ciò che si trova tra la stringa iniziale e quella finale si preceduta da # 2) Rimuovere tutto ciò che è contenuto tra le due stringhe 3) Rimuovere i # 4) Aggiungere tale codice all’interno delle due stringhe: Options Indexes FollowSymLinks Order allow,deny Allow from all 5) La sintassi risulterà così: <Directory /home/*/public_html> Options Indexes FollowSymLinks Order allow,deny Allow from all </Directory> 6) Se nn si trova tale direttiva nel file httpd.conf inseritela così come è riportata qui sopra all’interno del documento in uno spazio vuoto. Molto Importante Nella nuova versione di Apache la 2.0 si trova una nuova direttiva che non è presente nelle precedenti versioni ed è la seguente: <IfModule mod_userdir.c> # # UserDir is disabled by default since it can confirm the presence # of a username on the system (depending on home directory # permissions). # #UserDir disable Fabrizio Di Cola & Giovanni De Angelis 9 Personalizzare PhpNuke 6.0 # # To enable requests to /~user/ to serve the user's public_html # directory, remove the "UserDir disable" line above, and uncomment # the following line instead: # UserDir public_html </IfModule> Tale direttiva deve essere scritta così, altrimenti l’utente non potrà visualizzare la propria pagina sotto l’indirizzo http://localhost/~username Giunti a questo punto non dobbiamo far altro che salvare il file e chiuderlo, fermare l’esecuzione di Apache e farlo ripartire. Ovvero: 1) Chiudiamo il file salvandolo 2) Sempre nella nostra shell e sotto root eseguire il comando “ apachectl –k stop ” fermando così Apache 3) Eseguire il comando “ apachectl –k start ” per far ripartire il Server. Se non si riscontrano messaggi di errore vuol dire che il file httpd.conf da noi editato non contiene errori ☺ ! 4) Nelle versioni precedenti alla 2.0 di Apache i comandi sopra citati non sono gli stessi ma i seguenti “ apachectl stop ” e “ apachectl start “ Come si può notare non è difficile usare tali strumenti sotto Linux e inoltre la documentazione fornita con tali strumenti è molto chiara e questo permette di avere un semplice controllo del sistema. Da notare che soltanto l’amministratore di sistema può modificare tali file. 3.3 PHPNuke Eccoci giunti alla configurazione di PHPNuke. Una volta scaricato il pacchetto dal sito http://www.phpnuke.org decomprimerlo e spostare tutto il contenuto della cartella html nella cartella public_html con il seguente comando: mv –r /home/username/path_di_phpnuke/* /home/username/public_html Adesso quindi dovremmo avere tutti i file necessari al PHPNuke per poter essere funzionante. Prima di verificare se questo funziona dobbiamo creare le tabelle e il database nuke all’interno di Mysql. Per far ciò entriamo in MySql da root e al prompt di MySql digitiamo il comando “create database nuke” dopo di che spostiamoci nel nuovo database con il comando: \u nuke; e digitiamo: \. /home/username/path_di_phpnuke/sql/nuke.sql; a questo punto se si è passata la directory esatta in cui risiede il file nuke.sql dovremmo ricevere il messaggio di esatta creazione delle tabelle all’interno del database nuke. Fabrizio Di Cola & Giovanni De Angelis 10 Personalizzare PhpNuke 6.0 Come ultima cosa dobbiamo assicurarci che le istruzioni all’interno del file config.php siano corrette. Tale file si trova all’interno della directory public_html adesso che abbiamo spostato tutto il contenuto del PHPNuke in essa. Editiamolo nuovamente con jed digitando il comando: jed /home/username/public_html/config.php e istruzioni che più ci interessano sono: $dbhost = "localhost"; // nome del dominio, localhost se il Server Database è sulla macchina dove risiede PHPNuke $dbuname = "root"; // utente dautilizzare per connettersi $dbpass = ""; // password dell’utente root in MySql $dbname = "nuke"; // nome del database $prefix = "nuke"; // prefisso delle tabelle che è il nome del database utilizzato // in genere $user_prefix = "nuke"; $dbtype = "MySQL"; //tipo di Motore utilizzato in questo caso MySql Tali istruzioni devono rimanere così se non si è cambiata la password di root in Mysql che generalmente è vuota quando lo si installa per la prima volta. Se così non fosse cambiate la variabile $dbpass =”” in $dbpass=”nuovapassword” se è stata cambiata e $dbuname=”root” in un altro utente se l’utente con cui vi volete connettere non è root ma un altro. Ovviamente la password a questo punto non sarà quella dell’utente root ma quella dell’utente che volete utilizzare per connettervi. Adesso si può finalmente accedere da Browser alla pagina http://localhost/~username/index.php e ciò che si dovrà visualizzare sarà la home del nostro portale PHPNuke. 3.4 Configurazione in ambiente Windows Per installare PhpNuke in ambiente windows ( in particolare abbiamo lavorato su win2000 server ) ci sono due strade: 1. La configurazione per così dire “ manuale” del sistema operativo utilizzando internet information server ( nativo di win2000 ) e un installer per il Php come easy windows installer e quindi fare l’installazione vera e propria del PhpNuke 2. La configurazione “ automatica “ di tutto ciò che abbiamo bisogno per far girare phpnuke sulla nostra macchina ( Apache + mysql + php ) con un software freeware come foxserv ( in particolare noi abbiamo usato la versione 2.0 ) e quindi fare l’installazione vera e propria del PhpNuke. Attenzione!!! Non ci addentriamo nelle due tecniche di configurazione perchè l’uso di Php e in particolare di PhpNuke in un ambiente Windows crea molti problemi in quanto abbiamo riscontrato una estrema instabilità nella gestione del PhpNuke sia usando IIS sia con la configurazione tramite foxserv. In particolare con qualsiasi versione di Php si cerchi di installare abbiamo riscontrato problemi con molte delle librerie fornite da Php per Windows. Visti tutti questi problemi riscontrati noi abbiamo Fabrizio Di Cola & Giovanni De Angelis 11 Personalizzare PhpNuke 6.0 deciso di utilizzare il PhpNuke solamente in ambiente linux abbandonando decisamente l’idea di usarlo con win2000 server in attesa di nuovi sviluppi. 3.5 PhpMyAdmin un utile strumento L’utilizzo di MySql in Linux avviene interamente in maniera testuale, ovvero nel pacchetto installato non è compresa una GUI che ci facilita nella gestione del Database. Tra le varie GUI che si possono scaricare dalla rete ne abbiamo trovata una veramente funzionale e User Friendly. Questa si chiama PhpMyAdmin ed è interamente basata su PHP. Scaricato il tool non ci resta altro che decomprimerlo dentro una cartella da noi creata appositamente in public_html. Ad esempio creiamo una cartella phpmyadmin e estraiamone il contenuto del pacchetto in modo tale che una volta configurato potremo accederci tramite l’url: http://localhost/~username/phpmyadmin Per configurare MyAdmin non dobbiamo far altro che aprire il file config.inc.php con un editor testuale e modificarlo secondo le nostre esigenze. MyAdmin ha bisogno di un superuser per essere utilizzato al pieno delle sue funzionalità ma lo si può usare anche come semplice utente sui databases a cui l’utente ha accesso. Aprendo il file config.inc.php la prima variabile da configurare è $cfg['PmaAbsoluteUri'] = ' '; qui dobbiamo inserire l’url in cui abbiamo estratto il nostro pacchetto, ovvero $cfg['PmaAbsoluteUri'] = 'http://localhost/~username/phpmyadmin'; Fatto ciò si passa alla parte Server Configuration: /** * Server(s) configuration */ $i = 0; // The $cfg['Servers'] array starts with $cfg['Servers'][1]. Do not use // $cfg['Servers'][0]. // You can disable a server config entry by setting host to ''. $i++; $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['port'] = ''; $cfg['Servers'][$i]['socket'] // MySQL hostname // MySQL port - leave blank for default port = ''; // Path to the socket - leave blank for default // socket Fabrizio Di Cola & Giovanni De Angelis 12 Personalizzare PhpNuke 6.0 $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['auth_type'] $cfg['Servers'][$i]['user'] $cfg['Servers'][$i]['password'] $cfg['Servers'][$i]['only_db'] // How to connect to MySQL server ('tcp' // or ’socket') = 'config'; // Authentication method (config, http or // cookie based)? = 'root'; = ''; = ''; // MySQL user // MySQL password (only needed // with 'config' auth_type) // If set to a db-name, only // this db is displayed // at left frame // It may also be an array // of db-names La prima cosa che posiamo notare è che troviamo un array di servers ovvero è possibile impostare le stesse variabili per più servers se disponiamo di un accesso a più di questi. Tra le variabili che possiamo passare al file di configurazione per garantirci un accesso sicuro ne abbiamo prese in considerazione otto che sono poi le più importanti e quelle che generalmente bisogna modificare. Host specifica dove risiede il server SQL e generalmente va lasciato localhost se questo si trova sul nostro pc. Port specifica la porta a cui connettersi per sfruttare il database, generalmente si lascia bianca se MySql lavora sulla porta di default. Socket è la variabile che controlla dove risiede il file socket di MySql che ne garantisce la connessione. Connect_Type indica il tipo di connessione al Server MySql, possiamo tranquillamente lasciare Tcp. Auth_type è il tipo di accesso che vogliamo utilizzare per accedere al database tramite PhpMyAdmin, se si lascia config vuol dire che PhpMyAdmin userà il file di configurazione per accedervi, altrimenti con http o cookie viene svolta un autenticazione tramite browser. User indica l’utente con il quale si vuole accedere a MySql, generalmente per motivi di sicurezza se ci troviamo su un pc che è connesso a una rete è meglio evitare di usare l’utente root. Password indica la password dello user specificato sopra. Se si utilizza MySql per la prima volta di default la password del root è vuota, si cosiglia quindi di cambiarla e digitarla all’interno di questo file sempre per motivi di sicurezza. Only_db specifica l’accesso ad un unico database invece che a tutti i database MySql se specificato. PhpMyAdmin non è un tool sicuro se usato su un server che è connesso in rete a Fabrizio Di Cola & Giovanni De Angelis 13 Personalizzare PhpNuke 6.0 meno che non si adottano alcuni accorgimenti: 1) Cercare di nascondere la cartella dove abbiamo installato il pacchetto e comunque far sì che l’accesso a questa sia ristretto. Basta pensare che chiunque riesce ad arrivare al file config.inc.php può entrare in possesso della password di root per mysql e fare così danni nel database. 2) Possiamo usare un approccio http o cookie invece che config nella variabile Auth_type. Per poter utilizzare tali metodi però abbiamo bisogno di un controluser all’interno di MySql che può fare solo una SELECT sul database mysql e sulle tabelle user,db e tables_priv che sono le tabelle in cui si conservano i dati relativi agli utenti e ai databases a cui questi hanno accesso. Una volta creato il controluser dobbiamo impostare i suoi dati nel file config.inc.php al posto dello user standard e per far questo le variabili che entrano in gioco sono: $cfg['Servers'][$i]['controluser'] $cfg['Servers'][$i]['controlpass'] Comunque sia c’è da dire che tra http e cookie è meglio scegliere cookie in quanto usando il primo metodo la password viaggia in modalità text/plain mentre con il secondo metodo la password viene salvata in un cookie temporaneo che verrà cancellato al termine della sessione di lavoro. Fabrizio Di Cola & Giovanni De Angelis 14 Personalizzare PhpNuke 6.0 Capitolo 4: Presentazione della struttura e funzionalità grafiche 4.1 Cosa ci troviamo di fronte Una volta aperto il sito in cui abbiamo installato il PhpNuke notiamo che la grafica è così strutturata: Header: qui troviamo il logo del nostro portale , un messaggio di benvenuto, la data e un piccolo menù di navigazione nel portale. Colonne: all’interno delle colonne sono riportati alcuni link ( blocchi ) per usufruire delle funzionalità e per garantire la navigazione nel portale. In aggiunta troviamo una tendina ( combo box ) per selezionare la lingua, un form per l’accesso agli utenti registrati, e form aggiuntivi a secondo dei moduli che sono stati installati. Tra i moduli che generalmente sono attivati di default troviamo un form per le statistiche configurabile dall’amministratore e un modulo che ci avverte della presenza di altri utenti online sia che essi siano registrati o meno. Blocco centrale: all’interno del blocco centrale troviamo di default il modulo delle news. Il modulo che compare all’interno di tale blocco può essere cambiato dall’amministratore del sito. In ogni news possiamo vedere: - il nome dell’autore con un link al suo profilo il titolo dell’articolo il nome del moderatore che ha visionato la news un link ai commenti fatti da altri utenti su tale news un indice di gradimento se attivato un pulsante di visualizzazione dell’articolo completo la data e l’ora di pubblicazione Oltre a questi articoli si possono trovare dei messaggi inseriti dagli amministratori. Tali messaggi hanno un titolo e un contenuto. Un messaggio nelle news appare in questa forma: Fabrizio Di Cola & Giovanni De Angelis 15 Personalizzare PhpNuke 6.0 Oltre alle parti già analizzate dobbiamo porre l’attenzione sul fondo della pagina. Qui troviamo informazioni sul copyright del portale e dei moduli installati in esso, un messaggio che può essere usato come slogan per il portale settato dall’amministratore. 4.2 Alcune sezioni in dettaglio 4.2.1 Downloads Entrando nella sezione downloads ci troviamo di fronte ad un motore di ricerca interno al portale. Da qui possiamo verificare se un file o un link attinente a ciò che stiamo cercando si trova nel nostro portale. La sezione downloads è divisa in categorie, e all’interno della pagina possiamo trovare una lista di queste. Sotto alla cella in cui possiamo immettere la chiave di ricerca troviamo delle voci che ci permettono di inserire un nuovo download, visionare la lista dei nuovi file aggiunti, ottenere la lista dei file più richiesti o più commentati. Una volta trovato il download del file desiderato possiamo trovare una descrizione su di esso, il nome dell’autore che lo ha inserito, se l’inserzione è nuova o meno e altre informazioni utili. 4.2.2 Forum Fabrizio Di Cola & Giovanni De Angelis 16 Personalizzare PhpNuke 6.0 In questa sezione chiunque può immettere dei messaggi visionabili da tutti gli altri utenti del portale su determinati argomenti. I messaggi sono raggruppati in categorie di discussione. E’ possibile rispondere a tutti gli utenti che postano nel forum e usare il proprio avatar, creato al momento dell’iscrizione, per rendersi riconoscibili. 4.2.3 Ricerca all’interno del portale PhpNuke offre un motore di ricerca che aiuta gli utenti nella ricerca delle informazioni all’interno del portale. Tale strumento ci permette di effettuare una ricerca avanzata tra articoli, commenti e utenti. 4.2.4 Statistiche sugli utenti del portale Il tipo di statistiche a noi offerte sono: Basic Statistics Questa ci fa vedere il tipo di browser e sistema operativo che usa l’utente, se l’utente che ha visitato il sito è registrato, se ci sono autori attivi, il numero di articoli pubblicati, di argomenti attivi, di commenti postati, di articoli in attesa di essere pubblicati e la versione del nostro PhpNuke. Fabrizio Di Cola & Giovanni De Angelis 17 Personalizzare PhpNuke 6.0 Detailed Statistics La statistica dettagliata ci informa sul numero di pagine visitate in un anno, in un mese e in un giorno, nonché la percentuale di pagine visitate ad ogni orario della giornata. 4.2.5 Sezione per gli utenti registrati Una volta che l’utente si è autenticato si trova davanti alla sua pagina di amministrazione personale. Vediamo in dettaglio gli strumenti principali che si presentano all’utente. Cambia tue info: Permette di cambiare le informazioni inserite al momento della registrazione. Cambia Home: Cambia le impostazioni personalizzabili della home page visualizzabile dall’utente una volta autenticato. Come ad esempio il numero di articoli o l’attivazione dei messaggi pubblici in broadcast. Setup Commenti: Selezionando questa opzione si ha la possibilità di gestire la visualizzazione, l’ordinamento e in generale il layout grafico dei commenti Fabrizio Di Cola & Giovanni De Angelis 18 Personalizzare PhpNuke 6.0 WebMail: In questa sezione l’utente può impostare i propri indirizzi di posta elettronica e gestirli da remoto. La sezione offre anche una rubrica e una ricerca dei contatti inseriti. Logout: Permette di chiudere la propria pagina personale e di uscire dall’account. 4.2.6 Sezione di amministrazione Aggiungi Articolo: Permette all’amministratore di aggiungere un articolo all’interno del portale. Backup DB: Permette di fare una copia di sicurezza del database attuale. Banners: Consente di gestire il sistema di scambio banner all’interno del portale. Blocchi: Consente di entrare nel menù di gestione dei blocchi. Fabrizio Di Cola & Giovanni De Angelis 19 Personalizzare PhpNuke 6.0 Download: Permette di aggiungere una categoria principale, una sottocategoria e un nuovo download. Per quest’ultimo possiamo impostare il nome del file, il percorso in cui risiede, la categoria in cui inserirlo, la descrizione, il nome dell’ autore, la sua email, le dimensioni del file, la versione, l’homepage dell’autore e il numero di hits. Edit Amministratori: Gestisce l’aggiunta, la modifica e la cancellazione di un amministratore permettendo di assegnare un certo grado di amministrazione. Edit Utente: Permette di modificare i dati relativi ad un utente esistente o di aggiungerne uno nuovo. Enciclopedia: Permette di gestire un glossario dei termini usati all’interno del sito FAQ: Permette di aggiungere una categoria delle FAQ Forums: Permette di gestire i forums attivi. HTTP Referrers: Visualizza i siti che contengono il nostro link e da cui si proviene. Messaggi: Visualizza un resoconto dei messaggi presenti e la possibilità di inserirne uno nuovo. Moduli: Visualizza la lista dei moduli presenti nel portale e la possibilità di gestirli attivandoli, cancellandoli e editandoli. Newsletter: Permette di mandare una newsletter a tutti gli utenti registrati. Optimize DB: Ottimizza i dati del DB velocizzandone le performance. Recensioni: Consente di inserire una pagina di recensioni. Manager Sezioni: Permette di aggiungere una nuova sezione e un’immagine predefinita per questa. Fabrizio Di Cola & Giovanni De Angelis 20 Personalizzare PhpNuke 6.0 Preferenze: Consente di impostare molti dei parametri utili alla caratterizzazione del sito. Articoli: Gestisce gli articoli inseriti da terzi e l’area di moderazione dell’area news. Sondaggio: Consente di inserirne uno nuovo o editarne e cancellarne uno esistente. Argomenti: Consente di gestire i topics relativi ad un argomento del portale. Web Links: Consente di creare una sezione links ad altri siti. Logout/Exit: Consente di uscire totalmente dalla sezione di amministrazione rendendo invalido il cookie relativo alla sessione. Fabrizio Di Cola & Giovanni De Angelis 21 Personalizzare PhpNuke 6.0 Capitolo 5: Architettura e Struttura del PhpNuke 5.1 Struttura delle cartelle Una volta installato il PhpNuke andiamo a esaminare le cartelle contenute nel pacchetto. Queste sono sette: admin blocks images include language modules themes 5.1.1 Cartella di root PhpNuke ha tre files che hanno il compito di gestire la struttura del portale. Essi sono: index.php: che serve a visualizzare la pagina principale modules.php: che serve ad includere i moduli interni admin.php: che gestisce l’interfaccia amministratore Il compito di questi files è quello di far si che i moduli non possano essere richiamati in maniera diretta dall’esterno per rendere più sicuro il sistema. Un esempio di richiamo di un modulo è il seguente : http://localhost/~username/modules.php?name=Topics Questo non fa altro che richiamare il modulo topics attraverso modules.php. Oltre a questi files principale nella cartella di root troviamo: auth.php: gestiscono l'autenticazione attraverso i cookies. mainfile.php: Contiene tutte le funzioni necessarie alla gestione di PHPNuke header.php: gestisce le variabili relative all'header (Inclusione di Metatag, Javascript ...) footer.php: variabili relative al footer. backend.php: gestisce l'output delle news che possono essere prelevate da altri siti ultramode.txt: come sopra robots.txt: contiene le istruzioni per i motori di ricerca dando come informazione quali sono le cartelle da non indicizzare Fabrizio Di Cola & Giovanni De Angelis 22 Personalizzare PhpNuke 6.0 5.1.2 Le altre cartelle admin: contiene quattro sottocartelle ( links , language , case , modules ) che gestiscono i vari moduli di amministrazione. blocks: all’interno di questa troviamo tutti i blocchi che vengono inclusi nelle sezioni laterali della home page. images: contiene tutte le immagini che servono ad abbellire la grafica del portale. In essa troviamo alcune sottocartelle ( topics, forum, admin, banners, etc… ) in cui sono incluse alcune immagini proprie di queste sottocategorie. include: ci sono files di gestione di particolare applicazioni che non lavorano autonomamente ma che vengono richiamati da altri files, principalmente mainfile.php e header.php che si trovano in root. language: ci sono i files che completano le astrazioni dei linguaggi con i vocabili specifici di ciascuna lingua. Ciascun file deve essere nominato come langnomelingua.php . modules: qui vanno inserite le cartelle dei moduli presenti nel portale che non sono altro che strumenti utilizzabili tramite il portale. themes: qui vengono aggiunte i temi grafici del portale. Ogni cartella ha il nome del tema e contiene un file principale chiamato theme.php oltre ai relativi files di supporto. 5.2 Gestione della pagina principale La prima cosa che appare nella pagina principale è il modulo che noi abbiamo scelto di default per essa. Questo viene richiamato dal file index.php. I passi che vengono eseguiti ogni volta che la pagina principale viene richiamata sono: 1) Viene incluso il file mainfile.php 2) Per vedere quale è il modulo impostato come default per la pagina principale viene eseguita una query al database 3) Viene eseguito un controllo sulla provenienza del visitatore ( qualora venisse da un sito web che linka il portale questo evento viene segnalato e scritto in una tabella apposita del database ) Vengono inoltre fatti dei controlli relativi al collegamento con il database e vengono definiti dei messaggi di errore qualora esso non vada a buon fine. Infine se ci sono problemi nella visualizzazione della pagina scelta come default ne viene visualizzata un’altra contenente un design standard ma con un messaggio di errore definito all’interno. Fabrizio Di Cola & Giovanni De Angelis 23 Personalizzare PhpNuke 6.0 Capitolo 6: Gestione remota del portale 6.1 Inserimento di un nuovo tema : V-BlueBaby1.0 Una volta configurato il portale abbiamo pensato di inserire un nuovo tema grafico, diverso da quelli presenti di default. Per fare questo abbiamo ricercato un tema dal sito phpnuke.org. Tra quelli presenti abbiamo scelto il V-BlueBaby1.0 scaricabile da vipixel.com. Fatto questo si procede nel seguente modo : 1) Si decomprime l’archivio V-BlueBaby.zip in una cartella temporanea 2) Si prende il contenuto della cartella temporanea ( la cartella V-BlueBaby ) e lo si pone in themes ( ad esempio tramite protocollo ftp o ssh ) 3) Si entra nella sezione di amministrazione ( http://mioportale.it/admin.php ) e ci si autentica 4) Si va nella sezione Preferences alla voce “ tema di default “ selezionare VBlueBaby Fatto questo il tema visualizzato sarà quello da noi inserito. modificare il logo del tema. I passi da seguire sono i seguenti : Ci proponiamo ora di 1) Creare un immagine delle dimensioni adatte 2) Chiamarla con il nome del logo del tema ( header_r1_c10.jpg ) 3) Copiarla nella cartella images del tema sovrascrivendo l’immagine esistente Vediamo ora visualizzato il nostro logo al prossimo ingresso nel portale. Abbiamo constatato che nella cartella images era presente un file con nome favicon.ico. Questa è l’icona che compare in alcuni browser quando si inserisce nei preferiti il sito. Usando la stessa tecnica di prima abbiamo personalizzato l’icona visualizzata accanto al nome del sito. 6.2 Inserimento di un addon : Internet Radio2.0 Con questo esempio mostriamo come inserire un nuovo blocco e un nuovo modulo all’interno del portale. Caratteristica di questo addon è il bisogno, oltre al fatto di inserirlo come modulo, di inserire un nuovo blocco apposito. Siamo andati su phpnuke.org e tra i vari link che ci sono apparsi, ce ne è stato uno che ha attirato la nostra attenzione : Internet Radio 2.0. Benché non sia da considerare un modulo che possa aggiungere funzionalità di base, una volta installato, abbiamo pensato fosse un buon esempio su cui basarsi per spiegare in modo chiaro la gestione remota dell’inserimento di moduli e blocchi. Abbiamo scaricato quindi il file InternetRadio_V2.0.zip dal sito www.just4me.nl . 6.2.1 Il modulo Internet Radio I passi da seguire per inserire questo nuovo modulo sono: Fabrizio Di Cola & Giovanni De Angelis 24 Personalizzare PhpNuke 6.0 1) Decomprimere temporanea. l’archivio InternetRadio_V2.0.zip in una cartella 2) Troviamo tre cartelle ( images, blocks, modules ) il cui contenuto va copiato all’interno delle omonime cartelle della directory root del portale. 3) Fatto questo si entra nella sezione di amministrazione e ci si identifica. 4) Si va nella sezione “ modules “ e il modulo inserito viene visualizzato nella lista dei moduli esistenti all’interno del portale. 5) Si attiva il nuovo modulo cliccando su “ Attiva “ Il nuovo modulo è ora attivo all’interno del portale ma bisogna renderlo utilizzabile dagli utenti : 6) Cliccare su “ metti in home “ . Ora il link alla radio appare sul main menù e può essere utilizzato cliccandoci sopra. 6.2.2 Il blocco Internet Radio I passi da seguire per inserire il nuovo blocco sono : 1) , 2) , 3) sono già stati eseguiti nell’inserire il modulo. 4) Si va nella sezione blocks e si arriva nella form “ aggiungi blocco ”. 5) Si compila la form con i seguenti dati : Titolo : Internet Radio Campo RSS/RDF : è stato lasciato vuoto NomeFile : selezionare la voce internet radio Contenuto : è stato lasciato vuoto Posizione : Destra Attivare : Si Tempo Aggiornamento : 30 minuti Chi può vederlo ? : Tutti A questo punto abbiamo fatto tutto ciò che serviva per renderlo disponibile agli utenti del portale. Visto che abbiamo impostato come lingua del portale l’Italiano e in questo modulo non era stato previsto tale linguaggio, nel momento in cui è stato installato, è apparso il messaggio di errore che rilevava l’assenza del file di traduzione. Abbiamo quindi creato tale file e inserito nella cartella modules/Internet_Radio/language. Le scritte nel nostro blocco sono ora nel linguaggio voluto e il modulo funziona correttamente. Per vedere il modulo in funzione bisogna avere windows media player sul nostro personal computer . Fabrizio Di Cola & Giovanni De Angelis 25 Personalizzare PhpNuke 6.0 Capitolo 7 : Personalizzazione 7.1 Personalizzazione di un Tema 7.1.1 Analisi e creazione di un tema Analizziamo il tema NukeNews. E' un tema composto da molti file html che vengono inclusi nel theme.php. Il tema nukenews è strutturato in questo modo: theme.php: Gestisce le funzioni principali e le variabili dei colori di sfondo tables.php: gestisce le funzioni opentable(); e closetable(); La grafica del portale è costituita da alcune pagine html: header.html: footer.html blocks.html center_right.html left_ceter.html story_home.html story_page.html Questi files vengono inclusi nelle funzioni definite in theme.php. Abbiamo poi un foglio di stile chiamato style.css che viene incluso nel file header.php che si trova in root. Per convenzione il foglio di stile deve chiamarsi sempre style.css e deve essere sempre contenuto in una cartella chiamata style all'interno della cartella del nostro tema. Le immagini vengono inserite in una cartella chiamata images che si trova sempre nella cartella del nostro tema. Allora la struttura della cartella del tema NukeNews sarà: themes/NukeNews themes/NukeNews/style/ themes/NukeNews/images/ Il PhpNuke definisce uno standard per cui ogni tema deve definire delle funzioni particolari e themeheader() è una di queste. La funzione themeheader() è la funzione che viene richiamata per prima nel file header.php ed è assolutamente indispensabile crearla quando si crea un nuovo tema. Da questa funzione parte tutto l’aspetto grafico del nuovo tema. Per rendere più facile la creazione della grafica del tema è possibile anziché usare degli echo o dei print per ottenere un output direttamente dalla funzione themeheader() , usare una tecnica che consente di ottenere in output il risultato di un normale file html, lasciando invariate le variabili. In particolare la funzione themeheader() valuta prima il file header.html , poi viene richiamata la funzione blocks con il parametro left e infine valutato left_center.html . Fabrizio Di Cola & Giovanni De Angelis 26 Personalizzare PhpNuke 6.0 La funzione themesidebox() gestisce invece il layout dei blocchi che noi creiamo o che troviamo già fatti, include anch'esso un file chiamato blocks.htm che ne definisce lo stile e il layout. Altri elementi del file theme.php sono le variabili di formattazione del testo, alcune sono inserite nel css (foglio di stile) ma altre sono invece definite all'inizio del file theme.php. Vediamo quelle del tema NukeNews: $bgcolor1 = "#efefef"; $bgcolor2 = "#cfcfbb"; $bgcolor3 = "#efefef"; $bgcolor4 = "#cfcfbb"; $textcolor1 = "#000000"; $textcolor2 = "#000000"; In queste variabili sono espressi i valori in formato esadecimale. Adesso passiamo ad analizzare il file tables.php . Questo file crea 4 funzioni opentable(); closetable(); opentable2(); closetable2(); che non fanno altro che includere dei tag html che aprono e chiudono delle tabelle in modo predefinito. Per creare una tabella possiamo fare così : opentable(); echo”Contenuto della tabella”; closetable(); Diamo uno sguardo per prima opentable(). function OpenTable() { global $bgcolor1, $bgcolor2; echo "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"$bgcolor2\"><tr><td>\n"; echo "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"8\" bgcolor=\"$bgcolor1\"><tr><td>\n"; } Vengono richiamate le variabili necessarie ( $bgcolor1, $bgcolor2). Si apre una tabella larga il 100%. Se ne definisce il colore di background. Apri Riga, Apri Colonna. Si inserisce una nuova tabella larga il 100% (per i bordi). Gli si definiscono le caratteristiche di larghezza, altezza ecc ...riga colonna. Ci si ferma alla colonna perché è qui che andrà inserito il contenuto della tabella . function CloseTable() { echo "</td></tr></table></td></tr></table>\n"; } Chiudi Colonna, Chiudi Riga. Chiudi Tabella Interna. Chiudi Colonna, Chiudi Riga. Chiudi Tabella Esterna. Vediamo ora un esempio di creazione di un file html da includere nel tema: Esempio 1) Il blocco viene creato in questo modo: Fabrizio Di Cola & Giovanni De Angelis 27 Personalizzare PhpNuke 6.0 <table border="0" cellpadding="1" cellspacing="0" bgcolor="#000000" width="150"><tr><td> <table border="0" cellpadding="3" cellspacing="0" bgcolor="#dedebb" width="100%"><tr><td align="left"> <font class="content" color="#363636"><b>$title</b></font> </td></tr></table></td></tr></table> <table border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff" width="150"> <tr valign="top"><td bgcolor="#ffffff"> $content </td></tr></table> <br> Viene creata una tabella di larghezza fissa (nel nostro caso 150) e gli vengono attribuiti dei colori di background ecc.. Vengono inoltre passate due variabili ($title e $content) che, una volta inclusi nel theme.php vanno a richiamare il titolo e il contenuto del blocco. Sarebbe stato utile, per una questione di pulizia del codice, definire anche i valori di Background delle tabelle nel css. 7.1.2 Selezionare un tema Si entra nella sezione di amministrazione tramite la pagina http://localhost/~username/admin.php a questo punto si accede con la username e password dell’amministratore e si clicca sull’icona preferences. A questo punto ci troviamo di fronte una schermata con i settaggi generali del nostro sito. Basta andare sul menù a tendina corrispondente alla voce default theme for your site e selezionare quindi il tema da noi creato che dovrebbe apparire tra quelli nella lista dei temi predefiniti. 7.2 Personalizzazione dei blocchi 7.2.1 Analisi e creazione di un blocco I blocchi di phpnuke possono essere di 3 tipi differenti: RSS/RDF: Sono blocchi che prelevano news da altri siti che mettono a disposzione un File in formato standard per la lettura del testo contenuto in esso. Blocchi di contenuto: Sono blocchi in cui inseriamo del testo semplice o del testo HTML che verrà poi visualizzato all'interno del blocco Blocchi di files: Sono script in PHP che eseguono determinati comandi Per inserire dei links e del testo in un blocco di testo si può fare in questo modo: links da inserire: pippo.com pluto.com Allora il testo andrà formattato in questo modo per poi essere inserito nel blocco: Fabrizio Di Cola & Giovanni De Angelis 28 Personalizzare PhpNuke 6.0 Il <b>webmaster</b> che scrive questo libro gestisce i seguenti siti:<br><br> <a href=”http://www.pippo.com ”>pippo.com</a> <a href=”http://www.pluto.com ”>pluto.com</a> Per creare un blocco del tipo “script php” che si interfaccia al database e ne estrapola i dati bisogna innanzitutto capire come sono strutturati questi blocchi. Essi sono contenuti in una cartella chiamata blocks, il nome del blocco deve essere: block-nomedelblocco.php dove block- va nominato in questo modo obbligatoriamente. Ogni blocco che inizierà con block- verrà incluso nella schermata dei blocchi attivabili nel menu di amministrazione sezione blocchi.nella tendina nomefile. Il nome assegnato, se non assegnato da admin, sarà quello che segue in block- . Non sono ammessi spazi nel nome del blocco, gli spazi vanno sostituiti con l'underscore _ . Tutti i blocchi che rispetteranno queste regole saranno inseriti nell'interfaccia di admin. Per realizzare un blocco si devono fare le seguenti operazioni: a) in ogni blocco inserire il seguente codice all'inizio: if (eregi("block-Nomeblocco.php",$PHP_SELF)) { Header("Location: index.php"); die();} questo protegge il file evitando che gli utenti possano accedere direttamente dalla cartella blocks, il blocco verrà visualizzato solo se richiamato dal portale. b) Nel blocco posso includere script scritti in qualunque linguaggio. c) Tutto quello che è l'output del blocco ( cioè ciò che viene visualizzato in esso ) deve avere un valore richiamabile dalla variabile $content. Bisogna sempre ricordare che lo spazio nel blocco è limitato quando se ne crea il layout. Per creare un blocco che visualizza le pagine web a cui si è acceduti nella giornata precedente a questa in un determinato sito avremo dunque bisogno di una sola query ed un solo valore, questo per facilitare le cose. Chimando il blocco hits, il suo nome completo sarà block-hits.php. Apriamo il tag php: <?php In secondo luogo inseriamo lo script di protezione visto prima: if (eregi("block-hits.php",$PHP_SELF)) { Header("Location: index.php"); die(); } Fabrizio Di Cola & Giovanni De Angelis 29 Personalizzare PhpNuke 6.0 Le variabili che intendiamo richiamare sono il parametro $prefix e $dbi che è l'astrazione del database: global $prefix, $dbi; Inseriamo la query che va a leggere dal database quante pagine sono state visitate sul sito (L'istruzione sarebbe leggi il valore della prima riga della tabella nuke_counter nella cella count) $result = sql_query("select count from ".$prefix."_counter order by type desc limit 0,1", $dbi); list($count) = sql_fetch_row($result, $dbi); Come ultima cosa passiamo la variabile $content che sarà quella che richiamerà il blocco e chiudiamo il tag PHP $content .= $count ?> Per dare una visione di insieme inseriamo ora lo script nella sua interezza : <?php if (eregi("block-hits.php",$PHP_SELF)) { Header("Location: index.php"); die(); } global $prefix, $dbi; $result = sql_query("select count from ".$prefix."_counter order by type desc limit 0,1", $dbi); list($count) = sql_fetch_row($result, $dbi); $content .= $count ?> 7.2.2 Aggiungere un blocco Si entra nella sezione di amministrazione tramite la pagina http://localhost/~username/admin.php e si clicca su l’icona blocks. Ci troviamo una lista dei blocchi e per ognuno di essi possiamo vedere se esso è attivo o inattivo e abbiamo l’opportunità di editarlo o cancellarlo. Più in basso troviamo una form editabile attraverso la quale si può inserire un nuovo blocco. 7.3 Personalizzazione di un modulo 7.3.1 Parte pubblica I moduli di phpnuke sono quelle applicazioni scritte in PHP che gestiscono la parte centrale del portale. Sono moduli le News, Il forum, La lista utenti ecc ... Ogni modulo, a seconda della complessità è strutturato nella sola parte utente e una parte amministratore nel caso vi siano dei contenuti da modificare. Il tutto è gestito dal files modules.php che, già da solo, svolge il lavoro di autenticazione e Fabrizio Di Cola & Giovanni De Angelis 30 Personalizzare PhpNuke 6.0 gestione dei diritti di accesso . Il file modules.php verifica se il modulo è stato attivato o no. Se prendiamo il modulo avantgo, per richiamare il file index.php, basta passare, nella stringa, il nome di questo (di default viene cercato index.php) modules.php?name=AvantGo Se invece volessimo richiamare una pagina diversa da index.php (prendiamo print.php), la stringa che dovremo passare è: modules.php?name=AvantGo&file=print ossia la variabile file con un valore (print) che corrisponde al nome del file senza l'estensione .php . All'interno della cartella modules/nomemodulo è anche presente una sottocartella che si chiama language. Così gestiamo in modo semplice ed immediato la funzione multilinguaggio all'interno dei moduli. Il file modules.php lavora in questo modo: Include il mainfile.php Verifica se il modulo è attivo Verifica se la stringa passa un nome di file diverso da index.php Verifica i permessi sul modulo (Se lo può vedere chinque, solo utenti registrati o solo admin) Per realizzare un modulo per PHPNuke si deve: 1) Realizzare files PHP per la parte pubblica degli utenti 2) Realizzare una interfaccia di admin 3) Verificare che tutto quello che abbiamo realizzato si attenga alle regole di sviluppo di PHPnuke. I moduli devono essere inclusi nella cartella modules/nomemodulo nella parte pubblica e nella cartella admin/modules nella parte amministrativa. Il file principale del modulo incluso in modules/nomemodulo deve essere chiamato index.php. Le tabelle nella sintassi php vengono indicate con il prefisso. Ad esempio Nuke_pages sarà indicata con ".$prefix."_pages dove $prefix prende il valore dal file config.php I percorsi delle eventuali immagini o links devono partire da root e non dalla cartella modules/nomemodulo in quanto i files contenuti in essa vengono inclusi in un file collocato in root che si chiama modules.php. Per gestire in modo ottimale la funzione multilingua bisogna creare delle astrazioni ( variabili in cui si inserisce il testo stesso ) dei testi che dobbiamo inserire nel file creando una cartella language all'interno della cartella del modulo. Il tutto verrà poi richiamato in automatico. Fabrizio Di Cola & Giovanni De Angelis 31 Personalizzare PhpNuke 6.0 Ad esempio per creare un modulo che chiamiamo Topolino dobbiamo dare la possibilità a chi lo legge attraverso l'interfaccia in italiano di leggere “Topolino” e a chi lo legge in inglese di leggere “Mickey Mouse” . 1) Si crea la cartella language nella cartella modules/topolino 2) Si inseriscono due files .php chiamati lang-italian.php e lang-english.php 3) Si crea una astrazione per topolino, nel lang-italian.php sarà: define("_TOPO","Topolino"); In inglese sarà: define("_TOPO","Mickey Mouse"); In questo modo inserendo nel modulo l'astrazione "._TOPO." questo verrà sostituito in automatico da Topolino nell'interfaccia Italiana e da Mickey mouse nell'interfaccia inglese Per creare un modulo che visualizza una gif di topolino con un elenco di 3 nomi predefiniti che sono editabili dagli utenti si prenda in considerazione la versione standard di tutti i moduli: <?php if (!eregi("modules.php", $PHP_SELF)) { die ("You can't access this file directly..."); } $index = 1; require_once("mainfile.php"); $module_name = basename(dirname(__FILE__)); get_lang($module_name); include("header.php"); // QUI CI VA TUTTO LO SCRIPT DEL MODULO include("footer.php"); ?> E’ necessario creare una cartella modules/Topolino, il file riportato in alto (con gli altri contenuti), dovrà chiamarsi index.php e risiedere in quella cartella. Si crea una tabella di database chiamata nuke_topolino che sarà strutturata in questo modo: idpersonaggi : E' una cella che contiene gli id dei personaggi (int 11, primary) nomipersonaggi: E' una cella che contiene i nomi dei personaggi (varchar 60) E inseriamo manualmente i nomi dei 3 personaggi che ci interessano (Il modulo non consente di aggiungere o eliminare personaggi ma solo di editare quelli esistenti). Fabrizio Di Cola & Giovanni De Angelis 32 Personalizzare PhpNuke 6.0 Id 1: Topolino Id 2: Minnie Id 3: Pluto Per l’output si utilizzi una query con un ciclo for che restituirà i valori inseriti nel database. E’ necessario utilizzare la sintassi illustrata nel file include/sql_layer.php La query da compilare sarà strutturata in questo modo: $resultpersonaggi = sql_query("SELECT idpersonaggi, nomepersonaggi FROM ".$prefix."_topolino", $dbi); for ($m=0; $m < sql_num_rows($resultpersonaggi, $dbi); $m++) { list($idpersonaggi, $nomepersonaggi) = sql_fetch_row($resultpersonaggi, $dbi); echo "$idpersonaggi - $nomepersonaggi <br> "; } Ora si inseriscono altri elementi: - una tabella i risultati un titolo una descrizione Si definiscono quindi le astrazioni che vanno a comporre le due frasi di cui abbiamo bisogno, nel file lang-italian.php : <?php define("_BENVETOPOMOD","Modulo Topolino, Benvenuti!"); define("_DESCRITOPOMOD","Questo è un modulo di esempio che serve ad illustrare come si crea un modulo PHPNuke, non ha nessuna velleità funzionale :)"); ?> Si prendano i due pezzi di codice costruiti prima e come risultato finale si avrà: <?php if (!eregi("modules.php", $PHP_SELF)) { die ("You can't access this file directly..."); } $index = 1; require_once("mainfile.php"); $module_name = basename(dirname(__FILE__)); get_lang($module_name); include("header.php"); echo"<br>"; echo""._BENVETOPOMOD.""; echo"<br><br>"; opentable(); echo"<br>"; echo""._DESCRITOPOMOD.""; echo"<br><br>"; Fabrizio Di Cola & Giovanni De Angelis 33 Personalizzare PhpNuke 6.0 $resultpersonaggi = sql_query("SELECT idpersonaggi, nomepersonaggi FROM ".$prefix."_topolino", $dbi); for ($m=0; $m < sql_num_rows($resultpersonaggi, $dbi); $m++) { list($idpersonaggi, $nomepersonaggi) = sql_fetch_row($resultpersonaggi, $dbi); echo "$idpersonaggi - $nomepersonaggi <br> "; } closetable(); include("footer.php"); ?> Si è aggiunto del testo, dei Break per gli “a capo” e un opentable(); closetable(); per includere il testo. 7.3.2 Parte di amministrazione Ora verrà realizzata la parte di amministrazione. In questo modulo l'unica funzione che andrà a lavorare sul DB sarà quella in cui si modifica il testo di una delle tre voci che si sono create. Innanzitutto si devono creare i files da inserire nelle cartelle: admin/case admin/links admin/modules Admin: Contiene 4 sottocartelle (Links, language, case, modules) che gestiscono i vari moduli di amministrazione. La cartella che ospita i files operativi è admin/modules, è qui che sono presenti i file che eseguono le operazioni. La cartella admin/links invece dice che modulo di admin deve richiamare e posiziona una voce in admin per quel determinato modulo. Esempio (Modulo di amministrazione per le FAQ): if (($radminsuper==1) OR ($radminfaq==1)) { adminmenu("admin.php?op=FaqAdmin", ""._FAQ."", "faq.gif"); } Questo modulo: Verifica i diritti di amministrazione (Esso può essere amministrato o dal superadmin o da un admin che ha abilitato il livello per le FAQ. Passa un case (op=FaqAdmin) che dice al file admin.php (che include tutti i moduli di admin) che modulo andare a richiamare, associa un valore per tradurre il termine faq e associa una immagine per l'amministrazione visuale (faq.gif). La cartella admin/case invece serve a definire che modulo usare in determinati case. Questo è importante quando, usando lo stesso file di admin si vogliono fare più operazioni usando i case. Case1 = inserisci Case2 = cancella ecc ... Infatti dice che modulo richiamare al verificarsi di un case. Fabrizio Di Cola & Giovanni De Angelis 34 Personalizzare PhpNuke 6.0 Ad esempio, nel modulo faq i case sono molti, vediamo solo gli ultimi 2: case "FaqAdmin": case "FaqCatGo": include ("admin/modules/adminfaq.php"); break; Entrambi i case richiamano il file adminfaq.php ma gli fanno fare operazioni diverse. Il primo richiama il file nella schermata di default, il secondo invece dà l'ok ad inserire una nuova categoria. Questo avviene attraverso una stringa tipo: admin.php?op=FaqAdmin nel primo caso e admin.php?op=FaqCatGo nel secondo. Andremo poi a creare, nell'ordine, i files: admin/modules/topolino.php admin/case/case.topolino.php admin/links/links.topolino.php Per creare il file all'interno della cartella modules (modules/topolino.php) dobbiamo immaginare una struttura di questo tipo: Parte inziale dei files (Simile per tutti i moduli) Definizione delle funzioni necessarie Definizione dei case necessari per richiamare le diverse funzioni del modulo di admin Parte finale del file La sintassi della parte inziale del file è la seguente: <?php if (!eregi("admin.php", $PHP_SELF)) { die ("Access Denied"); } $result = sql_query("select radminsuper, admlanguage from ".$prefix."_authors where aid='$aid'", $dbi); list($radminsuper,$admlanguage) = sql_fetch_row($result, $dbi); if ($radminsuper==1) { Il lavoro che fa questa parte di file è un controllo sui diritti di amministrazione di chi lo invoca, un controllo sulla lingua da utilizzare e (non in questo modulo) un controllo sui diritti dell'amministratore. Un admin può avere solo dei diritti parziali di amministrazione su certi moduli o alcuni moduli possono essere amministrati solo da un superadmin. Nel nostro caso specifico il modulo può essere gestito solo da un superadmin in quanto il controllo è solo: if ($radminsuper==1) Nel caso vi fossero dei diritti specifici (prendiamo come esempio il modulo reviews) i diritti da controllare sarebbero stati: if (($radminreviews==1) OR ($radminsuper==1)) Per attivare i diritti su nuovi moduli bisogna infatti andare a specificare nella tabella nuke_authors un nuovo campo che specifici i diritti, modificare poi il modulo admin/modules/authors.php aggiungendo la checkbox per i diritti del nuovo modulo e modificare le relative query di update. Fabrizio Di Cola & Giovanni De Angelis 35 Personalizzare PhpNuke 6.0 Tornando al modulo, la parte inziale della sintassi è obbligatoriamente (salvo il caso sopracitato): <?php if (!eregi("admin.php", $PHP_SELF)) { die ("Access Denied"); } $result = sql_query("select radminsuper from ".$prefix."_authors where aid='$aid'", $dbi); list($radminsuper) = sql_fetch_row($result, $dbi); if ($radminsuper==1) { e quella finale è invece: } else { echo "Access Denied"; } ?> Tutto quello che ci sta in mezzo sono le funzioni di gestione e i case che devono essere richiamati che ora andremo a costruire. Ci sono un paio di regole da rispettare per costruire le funzioni di admin: 1) Includere all'inizio della funzione l'header e alla fine il footer include("header.php"); include("footer.php"); 2) Includere subito dopo l'header anche la funzione GraphicAdmin(); che visualizza il pannello di navigazione che conduce a tutti gli altri links di admin. Le funzioni che andremo ora a creare sono: Visualizzazione dei record Scelta del record e richiamo in un campo di testo modificabile Modifica del record con inserimento del valore modificato nel database. Ecco la visualizzazione della funzione relativa alla selezione del record: function Topodisplay() { global $admin, $bgcolor2, $prefix, $dbi, $multilingual; include ("header.php"); GraphicAdmin(); Opentable(); $resultpersonaggi = sql_query("SELECT idpersonaggi, nomepersonaggi FROM ".$prefix."_topolino", $dbi); for ($m=0; $m < sql_num_rows($resultpersonaggi, $dbi); $m++) { list($idpersonaggi, $nomepersonaggi) = sql_fetch_row($resultpersonaggi, $dbi); echo "$idpersonaggi - $nomepersonaggi <a href=\"admin.php=Toposeleziona&idtopo=$idpersonaggi\">Selcttopo</a> <br> "; } closetable(); include("footer.php"); } Fabrizio Di Cola & Giovanni De Angelis 36 Personalizzare PhpNuke 6.0 La prossima funzione da implementare è quella relativa alla selezione di uno dei tre record: function Toposelect() { global $admin, $bgcolor2, $prefix, $dbi, $multilingual, $idtopo; include ("header.php"); GraphicAdmin(); Opentable(); $resultpersonaggi = sql_query("SELECT idpersonaggi, nomepersonaggi FROM ".$prefix."_topolino where idpersonaggi='$idtopo'", $dbi); for ($m=0; $m < sql_num_rows($resultpersonaggi, $dbi); $m++) { list($idpersonaggi, $nomepersonaggi) = sql_fetch_row($resultpersonaggi, $dbi); echo"<form action=\"admin.php\" method=\"post\">"; echo"<input type=\"text\" name=\"nomepersonaggio\" size=\"20\" maxlength=\"20\" value=\"$nomepersonaggi\"><br><br>"; echo"<input type=\"hidden\" name=\"idpersonaggio\" value=\"$idtopo\">"; echo"<input type=\"hidden\" name=\"op\" value=\"topomodifica\">"; echo"<input type=\"submit\" value=\""._ADDTOPO."\">"; echo"</form>"; } closetable(); include("footer.php"); } E importantissimo notare alcune cose: 1) Le variabili vanno richiamate, infatti $idtopo è stata inserita nella dichiarazione delle variabili 2) Il valore del case viene passato da un campo hidden del form ( <input type=\"hidden\" name=\"op\" value=\"topomodifica\"> ). L'Ultima funzione presa in considerazione è quella relativa all'aggiornamento dei valori nel database (Anche qui abbiamo aggiunto due variabili che ci interessavano ($nomepersonaggio, $idpersonaggio): function Topomodifica() { global $admin, $bgcolor2, $prefix, $dbi, $multilingual, $idtopo, $nomepersonaggio, $idpersonaggio; include ("header.php"); GraphicAdmin(); Opentable(); sql_query("update ".$prefix."_topolino set nomepersonaggi='$nomepersonaggio' where idpersonaggi=$idpersonaggio", $dbi); echo"OK"; die(mysql_error()); closetable(); include("footer.php"); } Gli ultimi due elementi da inserire sono la definizione dei case (Ossia quale funzione richiamare a seconda delle variabili passate nel modulo) e la chiusura del file. Definizione dei case: Fabrizio Di Cola & Giovanni De Angelis 37 Personalizzare PhpNuke 6.0 switch($op) { case "": Topodisplay(); break; case "topolino": Topodisplay(); break; case "toposeleziona": Toposelect(); break; case "topomodifica": Topomodifica(); break; } Chiusura del file: } else { echo "Access Denied"; } ?> La pagina di definizione dei case definisce richiamandoli quali sono i case compresi nel file admin/modules/topolino.php nel file admin/case/case.topolino.php Eccone la sintassi: <?php if (!eregi("admin.php", $PHP_SELF)) { die ("Access Denied"); } switch($op) { case "topolino": include("admin/modules/topolino.php"); break; case "toposeleziona": include("admin/modules/topolino.php"); break; case "topomodifica": include("admin/modules/topolino.php"); break; } ?> Ora passiamo a compilare il file admin/links/link.topolino.php : Compilazione del file link.topolino.php: <?php if ($radminsuper==1) { adminmenu("admin.php?op=topolino", ""._EDITTOPOLINO."", "topolino.gif"); } ?> Fabrizio Di Cola & Giovanni De Angelis 38 Personalizzare PhpNuke 6.0 Dove: admin.php?op=topolino definisce quale modulo deve andare a richiamare ""._EDITTOPOLINO."" è la voce da tradurre (Va compilata in admin/language) Per la modifica del modulo di linguaggio vi rimando al paragrafo precedente con una sola nota. Il file di linguaggio della sezione di admin è comune per tutti (admin/language), le voci relative vanno aggiunte in coda a quelle già presenti. 7.3.3 Inserire un modulo Si entra nella sezione di amministrazione tramite la pagina http://localhost/~username/admin.php e quindi si clicca sull’icona modules. Troviamo una lista dei moduli presenti all’interno del nostro portale PhpNuke. Tali moduli si possono attivare, disattivare, modificare e inserire direttamente nella home page. Una volta creato un nuovo modulo esso apparirà all’interno di questa lista e conseguentemente si può agire su di esso come su tutti gli altri moduli. Capitolo 8: Analisi del database nuke 8.1 Creazione del database Della creazione del database nuke si è già fatto riferimento nel paragrafo 3.3 quando si è parlato della installazione del PhpNuke. 8.2 Uno sguardo sulle tabelle Vediamo ora come è strutturato il database del PhpNuke. Cominciamo dall’analizzare le tabelle del portale : nuke_access : Definisce i vari profili utenti nuke_authors : Definisce gli admin e i loro livelli nuke_autonews : Gestisce le news temporizzate nuke_banlist : Gestisce gli utenti bannati (esclusi dalla visualizzazione del portale) nuke_banner : Gestisce le campagne banner, le impression e i click nuke_bannerclient : Gestisce i clienti delle campagne banner nuke_bbtopics : Gestisce il BBCode nuke_blocks : Elenco dei blocchi creati nuke_catagories : Elenco delle categorie Fabrizio Di Cola & Giovanni De Angelis 39 Personalizzare PhpNuke 6.0 nuke_comments : Gestisce i commneti e le risposte nuke_config : Gestisce alcune configurazioni tipo la possibilità di postare in HTML ecc... nuke_counter : Gestisce le statistiche nuke_disallow : Blocca un utente nuke_downloads_categories : Gestisce categorie e sottocategorie dell'area download nuke_downloads_downloads : Gestisce i files presenti in area download nuke_downloads_editorials : Gestisce i commenti sui files nuke_downloads_modrequest : Gestisce la segnalazione di Brken Files Link nuke_downloads_newdownload : Gestisce l'inserimento di files da parte di terzi nuke_encyclopedya : Sono elencate le varie enciclopedia presenti nuke_encyclopedia_text : Sono elencati i termini delle enciclopedie nuke_ephem : Gestisce gli eventi ricorrenti nuke_faqAnswer : Archivia le risposte delle faq nuke_faqCategories : Gestisce le categorie in cui sono suddivise le FAQ nuke_forum_access : Registra gli utlimi accessi degli utenti nuke_forum_mods : Definisce i moderatori dei forum nuke_forums : Definisce i forum attivi nuke_forumtopics : Definisce le categorie dei forum nuke_headlines : Definisce le fonti da cui prendere news con i blocchi nuke_links_categories : Definisce le categorie in cui sono suddivisi i link nuke_links_editorials : Gestisce i giudizi sui links nuke_links_links : Archivia i links nuke_links_modrequest : Archivia i messaggi relativi ai link (Broken link ecc ...) nuke_links_newlink : Archivia le richieste di aggiunta di nuvi links nuke_links_votedata : Archivia i voti dei link nuke_main : Definisce quale è il modulo principale che deve essere incluso in index.php Fabrizio Di Cola & Giovanni De Angelis 40 Personalizzare PhpNuke 6.0 nuke_message : Gestisce i messaggi in home page nuke_modules : Elenca e gestisce i moduli installati nuke_pages : Contiene i contenuti della sezione Content nuke_pages_categories : Contiene la lista delle categorie che si trovano nella sezione Content nuke_poll_check : Elenco di ip che hanno già votato nelle ultime 24 ore nuke_poll_data : Elenco di risposte ai sondaggi nuke_poll_desc : Elenco dei sondaggi presenti e passati nuke_pollcomments : Commento al sondaggio nuke_posts : Sono i titoli principali dei post del forum nuke_priv_msgs : Gestisce il modulo private messages nuke_queue : Elenca i testi in attesa di essere pubblicati nuke_ranks : Registra i voti delle news nuke_referer : Elenca da dove arrivano le ultime x righe nuke_related : Associa eventuali links ai topics nuke_reviews_comments : Commenti alle reviews nuke_reviews_main : Tabella principale delle reviews nuke_seccont : Elenca i testi delle sezioni nuke_sections : Elenca le sezioni attive nuke_session : Elenca le sessioni attive nuke_smiles : Elenca le faccine supportate nuke_stats_date : Modulo statistiche nuke_stats_hour : Modulo statistiche nuke_stats_month : Modulo statistiche nuke_stats_year : Modulo statistiche nuke_stories : Testi delle news nuke_stories_cat : Categorie delle news nuke_topics : Elenco dei topics Fabrizio Di Cola & Giovanni De Angelis 41 Personalizzare PhpNuke 6.0 nuke_users : Elenco utenti nuke_words : Parole da censurare 8.3 Le tabelle principali nuke_blocks title titolo del blocco content contenuto del blocco position posizione del blocco nella pagina active blocco attivo/non attivo refresh intervallo di ricarimento blanguage linguaggio del blocco blockfile nome del file del blocco view indica il tipo di utente che può visualizzare il blocco nuke_config sitename nome del sito che appare nella barra superiore del browser nukeurl url del sito site_logo il nome del file del logo ( esempio: logo.gif ) slogan è lo slogan del portale startdate è la data di inizio del progetto adminmail email dell’amministratore del portale anonpost variabile per il permesso di immissione Fabrizio Di Cola & Giovanni De Angelis 42 Personalizzare PhpNuke 6.0 commmenti da parte di utenti non registrati Default_Theme è il tema di default impostato dell’amministratore per il portale foot1 informazioni, messaggi o immagini che vengono visualizzate in fondo ad ogni pagina del portale foot2 vedi sopra foot3 vedi sopra commentlimit è la dimensione massima in byte dei commenti con un limite di nove cifre anonymous come viene chiamato l’utente non registrato che interagisce con il portale minpass numero minimo di caratteri della password pollcomm consente di attivare i commenti nei sondaggi articlecomm consente di attivare i commenti agli articoli broadcast_msg consente di attivare messaggi scritti da un utente e visualizzabili da tutti gli altri user_news banners consente agli utenti di cambiare il numero di news in home consente di scegliere se attivare i banners language imposta la lingua del portale multilingual consente di attivare le caratteristiche multilinguaggio notify consente di scegliere se ricevere la notifica via email in seguito a nuovi inserimenti notify_email email a cui mandare le notifiche notify_subject soggetto della email di notifica notify_message testo della email di notifica notify_from account da cui ricevo la email footermessage messaggio a piè di pagina in tutte le email inviate email_send permette agli utenti di inviare email attachmentdir directory temporanea degli allegati Fabrizio Di Cola & Giovanni De Angelis 43 Personalizzare PhpNuke 6.0 permette agli utenti di inviare allegati attachments attachments_view permette agli utenti di vedere/leggere gli allegati download_dir directory da dove scaricare gli allegati defaultpopserver server di posta da cui scaricare le email numaccounts numero massimo di account registrabili imgpath percorso di default delle immagini mailbox moderator permette di selezionare il tipo di moderazione CensorMode tipo di censura applicata CensorReplace parola da sostituire a quelle censurate copyright testo del coyright version_Num versione del PhpNuke nuke_main main_module modulo caricato di default nella home page nuke_modules title titolo del modulo custom_title titolo visualizzato nel modulo active se il modulo è attivo o meno view indica il tipo di utente che può vedere il modulo nuke_user name nome reale dell’utente uname user name dell’utente Fabrizio Di Cola & Giovanni De Angelis 44 Personalizzare PhpNuke 6.0 email email reale dell’utente femail email che verrà visualizzata url sito dell’utente user_avatar immagine con cui l’utente viene riconosciuto nel portale user_regdate data di registrazione user_icq icq number dell’utente user_occ occupazione dell’utente user_from provenienza del’utente user_intrest interessi dell’utente user_sig firma dell’utente user_viewemail abilita gli altri utenti alla visualizzare della email reale user_aim aim number dell’utente user_yim yim number dell’utente user_msmn messanger number dell’utente pass password dell’utente theme nome del tema scelto dall’utente commentmax lunghezza massima in byte del commento da parte dell’utente newsletter dice se l’utente ha aderito alle newsletter user_posts numero di post fatti dall’utente user_level livello dell’utente sulla base del proprio punteggio Fabrizio Di Cola & Giovanni De Angelis 45