<h1>Linee guida per il programmatore di Moodle</h1>
<pclass="normaltext">Ogni progetto di tipo collaborativo ha bisogno che coerenza e stabilit<69> siano veramente robuste.</p>
<pclass="normaltext">Queste linee guida vogliono rappresentare un riferimento da osservare da parte di tutti i programmi di Moodle. E' vero che parte dei programmi pi<70> vecchi non lo rispettano, ma alla fine saranno tutti corretti. Tutta la nuova programmazione deve aderire definitivamente, il pi<70> possibile, a questi standard.</p>
<h2>Regole generali</h2>
<olclass="normaltext">
<liclass="spaced">Tutti i files contenenti programmi devono usare l'estensione .php.</li>
<liclass="spaced">Tutti i files modello devono usare l'estensione .html.</li>
<liclass="spaced">Tutti i files testo devono usare il formato testo Unix-style (la maggior parte degli editor hanno questa opzione).</li>
<liclass="spaced">Tutti i tag php devono essere tag 'completi' come <fontcolor="#339900"><?php
?></font> ... e non tag 'abbreviati' come <fontcolor="#339900"><? ?></font>.
</li>
<liclass="spaced">Tutte le note di copyright esistenti devono essere mantenute. Potete aggiungerne di vostre ove necessario.</li>
<liclass="spaced">Ogni file deve includere il file principale config.php.</li>
<liclass="spaced">Ogni file deve controllare che l'utente sia autenticato correttamente, usando require_login() e isadmin(), isteacher(), iscreator() oppure isstudent().</li>
<liclass="spaced">Tutti gli accessi ai database devono usare le funzioni presenti in lib/datalib.php, ogni volta che <20> possibile - questo garantisce la compatibilit<69> con un gran numero di database. Troverete che, usando queste funzioni, <20> possibile quasi qualunque operazione sui dati. Se dovete scrivere istruzioni SQL, assicuratevi che siano: multi-piattaforma; limitate a funzioni specifiche del vostro programma (di solito un file lib.php); e chiaramente idendificate.</li>
<liclass="spaced">Non create o usate variabili globali ad eccezione di quelle standard $CFG, $SESSION, $THEME e $USER.</li>
<liclass="spaced">Tutte le variabili devono essere inizializzate o almeno la loro esistenza deve essere testata, prima dell'uso, con isset() o empty().</li>
<liclass="spaced">Tutte le stringhe devono essere traducibili - create nuove stringhe nei file in "lang/en" con nomi concisi in inglese e minuscolo e utilizzatele nei vostri programmi tramite get_string() or print_string().</li>
<liclass="spaced">Tutti gli help file devono essere traducibili - create i testi nella cartella "lang/en/help" e richiamateli usando la funzione helpbutton().</li>
<liclass="spaced">I dati inseriti tramite il browser (inviati tramite GET o POST) hanno automaticamente le virgolette applicate (a prescindere dalle impostazioni del PHP) per cui possono essere inseriti direttamente nel database. Tutti gli altri dati (da files, o da database) devono essere "escaped" con <fontcolor="#339900">addslashes()</font> prima dell'inserimento nel database.</li>
</ol>
<p> </p>
<h2>Stile di codifica</h2>
<pclass="normaltext">So che pu<70> essere un p<> antipatico cambiare il proprio stile, se ne avete uno, ma paragonate, per un momento, questa antipatia con quella di tutte le persone che successivamente cercheranno di capire i programmi di Moodle scritti con stili diversi. Ci sono ovviamente tante buone ragioni a favore e contro ogni stile usato in giro, ma lo stile di Moodle <strong><EFBFBD> definito</strong>, quindi, per favore, attenetevi strettamente ad esso. </p>
<olclass="normaltext">
<liclass="spaced">L'<strong>indentazione</strong> deve essere di 4 spazi. Non usate ASSOLUTAMENTE i tab.</li>
<liclass="spaced">I <strong>nomi di variabile</strong> devono essere sempre facili da leggere, costituiti da parole in inglese minuscole. Se avete proprio necessit<69> di pi<70> di una parola, attaccate le parti, ma sceglietele pi<70> corte possibile. Usate nomi plurali per gli "arrays" di oggetti.
<liclass="spaced">Le <strong>costanti</strong> devono essere sempre maiuscole, e iniziare sempre col nome del modulo. Devono anche avere le parti separate da trattini di sottolineatura.
<liclass="spaced">I <strong>nomi delle funzioni</strong> devono essere semplici parole in inglese minuscole, e cominciare col nome del modulo per evitare conflitti tra moduli. Le parti di nome devono essere separate da sottolineature. I parametri devono sempre avere una valore di default, se possibile. Da notare che non c'<27> alcuno spazio tra il nome della funzione e le (parentesi) che seguono.<br/>
} else if (empty(</font><fontcolor="#0000BB">$USER</font><fontcolor="#007700">-></font><fontcolor="#0000BB">mode</font><fontcolor="#007700">))
<liclass="spaced">I <strong>blocchi</strong> devono essere sempre racchiusi tra parentesi graffe (anche se c'<27> solo una riga). Moodle usa questo stile:
<liclass="spaced">Gli <strong>spazi</strong> devono essere usari liberamente - non abbiate paura di sparpagliare un p<> le istruzioni per guadagnare in chiarezza. Normalmente, ci dovrebbe essere uno spazio tra le parentesi e le frasi normali, ma nessuno spazio tra le parentesi e le variabili o le funzioni:<br/>
<liclass="spaced">Ogni tabella deve avere un campo <strong>id</strong> (INT10) ad auto-incremento come indice primario.</li>
<liclass="spaced">La tabella principale contenente le istanze di ogni modulo deve avere lo stesso nome del modulo (per esempio <strong>tizio</strong>) e contenere almeno i seguenti campi:
<ul>
<li><strong>id</strong> - come sopra descritto</li>
<li><strong>course</strong> - l'id del corso cui ogni istanza appartiene</li>
<li><strong>name</strong> - il nome completo di ogni istanza del modulo</li>
</ul>
</li>
<liclass="spaced">Le altre tabelle, associate col modulo, che contengono informazioni su 'cose' si devono chiamare <strong>tizio_cose</strong> (notare il plurale).</li>
<liclass="spaced">I nomi delle colonne devono essere semplici e corti, e seguire le stesse regole dei nomi delle variabili.</li>
<liclass="spaced">Ove possibile, le colonne che contengono un riferimento al campo 'id' di un'altra tabella (per esempio <strong>tizio</strong>) si devono chiamare <strong>tizioid</strong>. (Da notare che questa convenzione <20> nuova e non <20> seguita in alcune vecchie tabelle)</li>
<liclass="spaced">I campi Booleani devono essere definiti come campi small integer (per esempio INT4) contenenti 0 o 1, per permettere eventuali future estensioni dei valori.</li>
<liclass="spaced">La maggior parte delle tabelle deve avere un campo (INT10) <strong>timemodified</strong> che viene aggiornato col timestamp corrente ottenuto dalla funzione PHP <strong>time</strong>().</li>
</ol>
<hr>
<palign="CENTER"><fontsize="1"><ahref="."target="_top">Documentazione di Moodle</a></font></p>