Ecco l'help e la sintasi del parser (che ho dovuto ridurre per postarlo sul form) che gira su ePHP3

Il PARSER è l'interprete di un linguaggio studiato per permette anche ad un utente non esperto di programmazione di poter realizzare operazioni logicamente complesse con semplicità.
Ad ogni modo il PARSER è uno strumento molto potente e se conosciuto profondamente può essere personalizzato nelle sue funzionalità più complesse con nuove classi scritte seguendo le direttive descritte più avanti, permettendo così di arricchire i comandi disponibili su ePHP.

Il parser, oltre a essere usato in alcuni campi della gestione del sito, può essere invocato direttamente dalla pagina php scrivendo:
codice
<?= parser($to_parse) ?>
dove la variabile $to_parse contiene la stringa da interpretare.

I comandi principali di ePHP sono sostanzialmente 2, il richiamo di variabile e l'invocazione di una funzione.

Richiamo di variabili
Il richiamo di variabile è lo strumento più semplice che ePHP offre, ma tuttavia è molto versatile.
codice
<?
...
$lettori = 125; ...
?>
<?= parser("Questa pagina &grave; stata visitata [lettori] volte") ?>
output
Questa pagina è stata visitata 125 volte
è possibile anche comporre il nome di una variabile usando un'altra variabile
codice
<?
...
$lettoriTotali = 125;
$lettoriOggi = 3;
$view = $mostraTotali ? "Totali" : "Oggi";
...
?>
<?= parser("Questa pagina &grave; stata visitata [lettori[view]] volte") ?>
output
Questa pagina è stata visitata 3 volte //se $view == "Oggi"
Questa pagina è stata visitata 125 volte //se $view == "Totali"
Questa pagina è stata visitata volte //altrimenti
l'incapsulamento di varabili è possibile a più livelli, ma si sconsiglia di progettare strutture troppo complesse

Inoltre è possibile recuperare valori contenuti in array mappati o in resultSet usando il carattere # all'intrno del nome della variabile
codice
<?
$pagine['Totali'] = 10; $pagine['Attuale'] = 3;
?>
<?= parser("Stai leggendo [pagine#Attuale] di [pagine#Totali]") ?>
output
Stai leggendo pagina 7 di 10

naturalmente è possibile combinare il richiamo di Array con l'incapsulamento delle variabili
codice
<?= parser("[array#[campo]]") ?>
Invocazione di funzioni
Seconda caratteristica peculiaria di ePHP è l'invocazione di funzioni.
Il PARSER di ePHP è in grado di interpretare già delle funzioni standard, inoltre è possibile aumentare il numero di comandi riconosciuti per alcune funzioni speciali.
La sintassi per invocare una funzione è
codice
<?= parser("{FUNZ:condizione)") ?>
dove FUNZ è il tipo di funzione da eseguire e condizione è una stringa dove viene specificata la condizione o il comando che la funzione deve eseguire.
Faremo ora una panoramica sulle funzioni disponibili.

SET
La funzione SET viene usata per assegnare un valore ad una variabile o un gruppo di variabili.
sintassi
{SET:var_1=val_1;var_2=val_2;...;var_n=val_n}
Può essere usato nelle proprietà dei campi del QueryMaster.
esempio
{SET:id_archivio=[ID_ARCHI];my_nome_file=[T_TITOLO]}
All'interno del SET non possono essere specificate altre funzioni
La funzione SET non restituisce nessun output a video

IF e IF-ELSE
Le funzioni IF e IF-ELSE sono due funzioni decisionali simili tra loro
sintassi
{IF:condizione?condVera}
{IF-ELSE:condizione?condVera:condFalsa}
Come si può notare dalla sintassi l'unica differenza fra le due funzioni è la possibilità di specicare o meno una azione da fare in caso la condizione sia falsa o meno.
condizioni possibili
operator
==
!=
>=
<=
>
<
IS NULL
NOT NULL

All'interno della condizione, prima o dopo l'operatore, possono essere dichiarate solo variabili, valori di tipo numerio o stringhe, mentre all'interno dei rami decisionali si possono inserire anche altre funzioni
esempio
{IF-ELSE:[goalFatti] == [goalSubiti] ? Hai pareggiato : {IF-ELSE:[goalFatti] > [goalSubiti] ? Hai vinto : Hai perso}} output
Pisa ha perso !!!

HTML
La funzione HTML viene usata per formattare il testo in html, sostituendo in automatico i caratteri speciali con la loro codifica html
sintassi
{HTML:[testo]}
Può essere usato per formattare un testo recuperato da database
esempio
{HTML:L'utente [riga#utente] però ha scritto:\n[riga#oldPost]} output html
L'utente Pippo per&ograve; ha scritto

Perch&eacute; non c'&egrave; pi&ugrave;?
All'interno di HTML possono essere specificate variabili di ogni tipo e altre funzioni
esempio
{HTML:[squadra] ha {IF-ELSE:[[squadra]#puntiFatti] > [[squadra]#puntiSubiti] ? vinto : perso} !!!} output
Pisa ha perso !!!

DATA
La funzione DATA serve per convertire il formato di ua data, da aaaa-mm-gg a gg/mm/aaaa
sintassi
{DATA:dataDaConvertire}
Viene usato per convertire date lette da Database
esempio
{DATA:[utente#compleanno]} //ad es: 1976-02-17 output
17/02/1976

SESSION
La funzione SESSION serve per leggere una variabile in Sessione
sintassi
{SESSION:variabile} recupera una varibile del tipo $_SESSION['variabile']
{SESSION:array#chiave} recupera una varibile del tipo $_SESSION['array']['chiave']
Può essere usato per recuperare informazioni residenti in sessione
esempio
Benvenuto {SESSION:[utente]} output
Benvenuto Pippo
Esistono 2 funzioni alias di SESSION: CSS e ELEMENTO

CSS
La funzione CSS recupera informazioni sulla grafica residenti in Sessione
sintassi
{CSS:variabile} recupera dati del CSS, residenti in Sessione

ELEMENTO
La funzione ELEMENTO recupera informazioni riguardanti il template corrente memorizzate in sessione
sintassi
{ELEMENTO:template,elemento} recupera dati del Template, residenti Sessione

FORM
La funzione FORM viene usata per inserire elementi form all'interno di una pagina, come ad esempio una select o un campo testuale. La funzione FORM è una funzione speciale, e le sue funzionalità possono essere ampliate dall'utente scrivendo nuove classi e mettendole nella directory parser/form
Le funzioni FORM implementate e utilizzabli sul sito sono:

FORM:calendario
Scrive un elemento di tipo <input type="text" ... > con JS per la scrittura di date

Variabili:

* name (obbligatorio)
* value

Sintassi:
{FORM:calendario(name=portale,value=17-02-1976)}

FORM:editor
Scrive un elemento di tipo <textarea name="area" mce_editable="true" ... >testo</textarea> ovvero una textarea con comandi JS di editing testuale

* name (obbligatorio)
* value
* rows (default = 10)
* cols (default = 80)
* stille (corrisponde a class)
* id
* title
* readonly
* disable
* onChange (comandi javascript)
* onClick (comandi javascript)
* onMouseOver (comandi javascript)
* onMouseOut (comandi javascript)
* onSelect (comandi javascript)

Sintassi:
{FORM:editor(name=area,value=ePHP3, ...)}

FORM:hidden
Scrive un elemento di tipo <input type="hidden" ... >

Variabili:

* name (obbligatorio)
* value
* id

Sintassi:
{FORM:hidden(name=portale,value=ePHP3, ...)}

FORM:nextvalue
Scrive un elemento di tipo <input type="hidden" ... > inserndo come valore un progressivo numerico calcolato da una query

Variabili:

* name (obbligatorio)
* tabella (obbligatorio)
* campo (obbligatorio)
* where
* visualizza
* id

Sintassi:
{FORM:nextvalue(name=livello,tabella=classifica,ca mpo=livello,...)}

FORM:selectArray
Scrive un elemento di tipo <select ... > prendendo come option il contenuto di un array, il cui nome viene preso dal parametro option

Variabili:

* name (obbligatorio)
* option (obbligatorio)
* value
* stile (corrisponde a class)
* id
* alt
* title
* readonly
* disable
* onChange (comandi javascript)
* onClick (comandi javascript)
* onMouseOver (comandi javascript)
* onMouseOut (comandi javascript)
* onSelect (comandi javascript)

Sintassi:
{FORM:selectArray(name=portale,option=array,value= ePHP3, ...)}

FORM:selectTable
Scrive un elemento di tipo <select ... > prendendo come option il contenuto di una tabella

Variabili:

* name (obbligatorio)
* table (obbligatorio)
* key (obbligatorio)
* label (obbligatorio)
* filtro
* ordine (default == label)
* value
* stile (corrisponde a class)
* id
* alt
* title
* readonly
* disable
* onChange (comandi javascript)
* onClick (comandi javascript)
* onMouseOver (comandi javascript)
* onMouseOut (comandi javascript)
* onSelect (comandi javascript)

Sintassi:
{FORM:selectTable(name=citta,table=citta_italiane, key=targa,label=provincia,value=LI, ...)}

FORM:text
Scrive un elemento di tipo <input type="text" ... >

Variabili:

* name (obbligatorio)
* value
* size
* maxlen
* stille (corrisponde a class)
* id
* alt
* title
* readonly
* disable
* onChange (comandi javascript)
* onClick (comandi javascript)
* onMouseOver (comandi javascript)
* onMouseOut (comandi javascript)
* onSelect (comandi javascript)

Sintassi:
{FORM:text(name=portale,value=ePHP3, ...)}

FORM:textarea
Scrive un elemento di tipo <textarea name="area" ... >testo</textarea>

* name (obbligatorio)
* value (se specificato deve essere l'ultimo parametro)
* rows (default = 10)
* cols (default = 50)
* stille (corrisponde a class)
* id
* title
* readonly
* disable
* onChange (comandi javascript)
* onClick (comandi javascript)
* onMouseOver (comandi javascript)
* onMouseOut (comandi javascript)
* onSelect (comandi javascript)

Sintassi:
{FORM:textarea(name=area, ..., value=ePHP3)}

JS
La funzione JS è stata pensata per poter inserire in automatico complessi JavaScript all'interno di pagine html. La funzione JS è una funzione speciale, e le sue funzionalità possono essere ampliate dall'utente scrivendo nuove classi e mettendole nella directory parser/js
Le funzioni FORM implementate e utilizzabli sul sito sono:

JSperazioni
JS per eseguire operazioni sui dati delle tabelle

Variabili:

* qmt (obbligatorio) : nome della tabella del QueryMaster
* ico : pulsanti da stampare, scrivere una stringa usando i caratteri: e per attivare la modifica; d per il link dei dettagli; c per attivare la cancellazione. default = ec
* id : (obbligatorio per la stampa dei link) id della riga
* id2 : id della riga nel caso di chiavi multiple
* key : (obbligatorio per la stampa del form e dei JS) nome della colonna chiave primaria tabella del querymaster *
* key2 : nome della seconda colonna chiave primaria nel caso di chiavi multiple
* action : pagina di arrivo. default: l pagina stessa
* openDett : pagina usata per i dettagli. (obbligatorio se ico comprende l'opzione 'd')
* : recuperabili d QM

Sintassi:
{JSperazioni(qmt=ALIAS,ico=ed,key=alias)} per stampare il form e codice javascript necessario per gestire le operazioni
{JSperazioni(qmt=ALIAS,ico=ed,id=[row#alias])} per stampare l'invocazione al javascript sulle righe

JSrdina
JS di Ordinameto per l'ordinamento dei dati nelle tabelle

Variabili:

* form (obbligatorio) : nome del form
* numero (obbligatorio per stampare l'invocazione al javascript) : identificativo della colonna
* colonna : nome della colonna associato all'identificativo
* label : etichetta della colonna
* ordine : identificativo della colonna su cui è stata fatto l'ultimo ordinameto. il segno indica se l'ordinamento è stato fatto in ordine ascendente o discendente

Sintassi:
{JSrdina(form=risultati)} per stampare il form e codice javascript necessario per gestire l'ordinamentto
{JSrdina(form=ordinaTabella,numero=3,ordine=1)} per stampare l'invocazione al javascript sulle colonne

Per sfruttare tutte le potenzialità del JS è consigliato inserire prima tutte le invocazioni al javascript per ordinare le colonne completo di tutti i dati, e solo in seguito richiamare la stampa del codice javascript per la gesione del form. In questo modo la variabile $ordine conterrà il criterio d ordinamento da aggiungere in coda alla query che genera la lista.