Questa sezione descrive le logiche interne e le caratteristiche tecniche della piattaforma Glis\-Web.

\hyperlink{caratteristiche}{Caratteristiche di Glis\-Web}

\hyperlink{concetti}{Concetti generali di Glis\-Web}

\hyperlink{moduli}{Moduli di Glis\-Web}

\hyperlink{licenza}{Licenze di Glis\-Web} \hypertarget{caratteristiche}{}\section{Caratteristiche di Glis\-Web}\label{caratteristiche}
Questa sezione tratta le principali caratteristiche di Glis\-Web.

\subsection*{autenticazione}


\begin{DoxyItemize}
\item Glis\-Web supporta l'\hyperlink{autenticazione}{autenticazione} tramite cookies che vengono salvati sul pc dell'utente;
\end{DoxyItemize}

\subsection*{performances}


\begin{DoxyItemize}
\item Glis\-Web è progettato per essere leggero e veloce;
\item ogni nuova versione dev'essere più veloce della precedente; 
\end{DoxyItemize}\hypertarget{concetti}{}\section{Concetti generali di Glis\-Web}\label{concetti}
Questa sezione tratta i principali concetti che sono alla base della piattaforma Glis\-Web.

\subsection*{Standard e locale}

Il primo concetto fondamentale da comprendere è la distinzione fra parte standard e parte locale del framework. Glis\-Web infatti è organizzato in modo che gli sviluppatori possano ridefinire la maggior parte del framework stesso a seconda delle esigenze della specifica implementazione che stanno realizzando. Nella maggior parte dei casi questo si tradurrà nella definizione di valori diversi per alcune variabili; ma volendo è possibile riscrivere anche singole funzioni o intere librerie. Ovviamente più massiccie saranno tali riscritture \char`\"{}locali\char`\"{} del framework più approfondita sarà la conoscenza richiesta del framework stesso per effettuarle.

La parte \char`\"{}framework\char`\"{} è facilmente identificabile per il fatto che il nome di tutte le sue componenti nel filesystem (fatta eccezione per i files speciali, come ad esempio i files .htaccess) inizia per underscore. Ad esempio il file \hyperlink{__config_8php}{\-\_\-src/\-\_\-config.\-php} è parte del framework mentre \hyperlink{src_2config_8php}{src/config.\-php} è la sua controparte locale.

\subsection*{Inizio dell'esecuzione del framework}

Per utilizzare il framework in una pagina php è necessario includerlo. L'inclusione e l'esecuzione del framework sono effettuate a partire dal file \hyperlink{__config_8php}{\-\_\-src/\-\_\-config.\-php} che va incluso all'inizio della pagina stessa, ad esempio\-:


\begin{DoxyCode}
\textcolor{comment}{// livelli}
    \hyperlink{__dbStatus_8php_a08270b9f1a24515b86e909a32ce07f62_a08270b9f1a24515b86e909a32ce07f62}{$cf}[\textcolor{stringliteral}{'folders'}][\textcolor{stringliteral}{'levels'}] = NULL;

\textcolor{comment}{// pagina corrente}
    \hyperlink{__dbStatus_8php_a08270b9f1a24515b86e909a32ce07f62_a08270b9f1a24515b86e909a32ce07f62}{$cf}[\textcolor{stringliteral}{'folders'}][\textcolor{stringliteral}{'page'}] = NULL;

\textcolor{comment}{// il file di configurazione locale collega i files delle pagine al cms vero e
       proprio}
    require \hyperlink{__dbStatus_8php_a08270b9f1a24515b86e909a32ce07f62_a08270b9f1a24515b86e909a32ce07f62}{$cf}[\textcolor{stringliteral}{'folders'}][\textcolor{stringliteral}{'levels'}] . \textcolor{stringliteral}{'\_src/\_config.php'};

\textcolor{comment}{// build della pagina}
    \hyperlink{__pages_8build_8php_af464184cc9788516d051bec840fe1a1c_af464184cc9788516d051bec840fe1a1c}{buildPage}( 
        \hyperlink{__dbStatus_8php_a08270b9f1a24515b86e909a32ce07f62_a08270b9f1a24515b86e909a32ce07f62}{$cf}[\textcolor{stringliteral}{'folders'}][\textcolor{stringliteral}{'page'}]
    );
\end{DoxyCode}


Questo è il file più semplice che possiamo costruire nel framework Glis\-Web. Le variabili \$cf\mbox{[}'folders'\mbox{]}\mbox{[}'levels'\mbox{]} e \$cf\mbox{[}'folders'\mbox{]}\mbox{[}'page'\mbox{]} vengono inizializzate in quanto occorrono al framework stesso per funzionare; dopodiché viene incluso il framework vero e proprio tramite l'istruzione require.

Riguardo alle due variabili di cui sopra, come si può vedere la prima è immediatamente necessaria per la costruzione del percorso di inclusione del file \hyperlink{__config_8php}{\-\_\-src/\-\_\-config.\-php}; questo opera implicitamente un controllo di correttezza sul valore della variabile stessa, infatti essendo utilizzata per includere il framework se il suo valore è errato questo non viene neppure incluso e quindi non c'è modo di avviare il framework con un valore errato nella variabile \$cf\mbox{[}'folders'\mbox{]}\mbox{[}'levels'\mbox{]}.

Riguardo invece alla variabile \$cf\mbox{[}'folders'\mbox{]}\mbox{[}'page'\mbox{]}, si può vedere che è utilizzata come parametro per la funzione \hyperlink{__pages_8build_8php_af464184cc9788516d051bec840fe1a1c_af464184cc9788516d051bec840fe1a1c}{build\-Page()} la quale effettua la renderizzazione dell'output della pagina. Dettagli su questo punto si trovano nella documentazione della funzione \hyperlink{__pages_8build_8php_af464184cc9788516d051bec840fe1a1c_af464184cc9788516d051bec840fe1a1c}{build\-Page()} e dei files di configurazione.

\begin{DoxyRefDesc}{Da fare}
\item[\hyperlink{todo__todo000040}{Da fare}]individuare espressamente i files di configurazione più rilevanti su questo argomento\end{DoxyRefDesc}


\subsection*{Moduli e sezioni}

Il secondo concetto da assimilare prima di iniziare a lavorare con Glis\-Web è il fatto che la piattaforma è strutturata concettualmente come una matrice. Glis\-Web infatti è suddiviso in moduli, i quali sono a loro volta organizzati in sezioni. I moduli raggruppano le funzionalità della piattaforma in blocchi che possono essere attivati e disattivati a seconda delle necessità.

Le sezioni rappresentano i gruppi di caratteristiche e specifiche tecniche che compongono i moduli; possono essere viste come una suddivisione orizzontale rispetto ad essi che forma dunque una matrice intersecandoli. Questa struttura è rappresentata all'interno del framework dall'array bidimensionale \$cf\mbox{[}'mods'\mbox{]}, come illustrato nella documentazione del file \hyperlink{__config_8php}{\-\_\-src/\-\_\-config.\-php}.

\begin{TabularC}{2}
\hline
\rowcolor{lightgray}{\bf sezione }&{\bf descrizione}\\\cline{1-2}
debug &debug della piattaforma \\\cline{1-2}
session &gestione delle sessioni P\-H\-P \\\cline{1-2}
site &configurazione generale della piattaforma \\\cline{1-2}
performances &monitoraggio e settaggio delle performances della piattaforma \\\cline{1-2}
filesystem &gestione del filesystem e dei files \\\cline{1-2}
commons &impostazioni generali \\\cline{1-2}
localization &localizzazione della piattaforma \\\cline{1-2}
mysql &gestione e utilizzo di db My\-S\-Q\-L \\\cline{1-2}
mssql &gestione e utilizzo di db M\-S\-S\-Q\-L \\\cline{1-2}
auth &autenticazione utenti \\\cline{1-2}
user &gestione e configurazione utenti \\\cline{1-2}
cache &gestione e configurazione della cache \\\cline{1-2}
rewrite &gestione e configurazione dell'url rewriting \\\cline{1-2}
pages &configurazione e contenuto delle pagine della piattaforma \\\cline{1-2}
templates &templates delle pagine della piattaforma \\\cline{1-2}
\end{TabularC}


\begin{DoxyRefDesc}{Da fare}
\item[\hyperlink{todo__todo000041}{Da fare}]le sezioni user e auth potrebbero essere fuse in una futura release.\end{DoxyRefDesc}


\subsection*{Step di esecuzione}

Il terzo concetto realmente essenziale da tenere presente nell'utilizzo di Glis\-Web all'interno di un progetto web è il modo in cui la piattaforma gestisce i files principali che la compongono (comunemente si fa riferimento a questi files con il termine \char`\"{}files di configurazione\char`\"{}, ma è abbastanza riduttivo). In particolare, questi vengono inclusi, e quindi eseguiti, in un ordine specifico che rispetta la struttura a matrice del framework suddivisa in moduli e sezioni.

L'inclusione di questi files, che corrisponde in larga parte all'esecuzione stessa dello script, è organizzata in step successivi, ad ognuno dei quali sono associate determinate caratteristiche e funzioni. Per esempio, allo step 010 la connessione al database non è ancora disponibile, in quanto viene effettuata generalmente attorno allo step 120 (dipende da quale db utilizzate). Comprendere questi step è essenziale per collocare il proprio codice in quello giusto, in modo che disponga delle risorse necessarie e al tempo stesso non comprometta gli step successivi.

\subsection*{Organizzazione del file system}

La gerarchia del file system della piattaforma rispecchia l'organizzazione interna del codice. Inizialmente è utile prendere confidenza con le cartelle del framework in modo da potersi muovere agilmente fra di esse quando si inizia a realizzare la propria implementazione.

\begin{TabularC}{2}
\hline
\rowcolor{lightgray}{\bf cartella }&{\bf descrizione}\\\cline{1-2}
\-\_\-mods &contiene i moduli del framework, uno per cartella; il nome delle cartelle corrisponde alle chiavi di \$cf\mbox{[}'mods'\mbox{]} \\\cline{1-2}
\-\_\-mods/$\ast$/\-\_\-src &contiene il codice del modulo \\\cline{1-2}
\-\_\-mods/$\ast$/\-\_\-src/\-\_\-config &contiene i files di configurazione del modulo \\\cline{1-2}
\-\_\-src &contiene il codice del framework base \\\cline{1-2}
\-\_\-src/\-\_\-ajax &contiene pagine che possono essere chiamate in Ajax (webservice, ecc.) \\\cline{1-2}
\-\_\-src/\-\_\-bin &contiene frammenti di codice che vengono inclusi nel corso dell'esecuzione del framework \\\cline{1-2}
\-\_\-src/\-\_\-config &contiene i files di configurazione del framework base \\\cline{1-2}
\-\_\-src/\-\_\-lib &contiene le librerie del framework base \\\cline{1-2}
\-\_\-src/\-\_\-templates &contiene i templates standard del framework, uno per cartella \\\cline{1-2}
\-\_\-var &contiene files vari non necessari al funzionamento del framework \\\cline{1-2}
\-\_\-var/\-\_\-docs &contiene le pagine extra della documentazione del framework \\\cline{1-2}
\-\_\-var/\-\_\-pages &contiene pagine statiche di default del framework \\\cline{1-2}
\-\_\-var/\-\_\-version &contiene i files informativi relativi alla versione corrente \\\cline{1-2}
mods &cartella locale corrispondente a \-\_\-mods \\\cline{1-2}
src &cartella locale corrispondente a \-\_\-src \\\cline{1-2}
tmp &contiene i files temporanei del framework \\\cline{1-2}
var &cartella locale corrispondente a \-\_\-var \\\cline{1-2}
var/docs &contiene la documentazione del framework \\\cline{1-2}
var/docs/html &contiene la versione html della documentazione del framework \\\cline{1-2}
var/log &contiene i files di log del framework \\\cline{1-2}
\end{TabularC}


\subsection*{Flusso di esecuzione}

L'esecuzione del framework è organizzata in tre grandi blocchi consecutivi (inclusione librerie, inclusione files di configurazione, render della pagina) come mostrato nello schema seguente. All'interno di ogni blocco vengono eseguiti degli specifici sottoinsiemi di operazioni anch'essi riportati in forma generale nello schema.



\subsection*{Struttura del database}

Il database My\-S\-Q\-L standard del framework comprende le tabelle necessarie al modulo base. Ogni modulo opzionale ha un suo schema aggiuntivo collegato a quello del modulo base.

 \hypertarget{moduli}{}\section{Moduli di Glis\-Web}\label{moduli}
Questa sezione tratta nel dettaglio tutti i moduli standard della piattaforma Glis\-Web. \hypertarget{licenza}{}\section{Licenze di Glis\-Web}\label{licenza}
In questa pagina vengono illustrate le varie licenze sotto le quali e' disponibile la piattaforma Glis\-Web. 