Moodle Docs: Porosi pėr kodet
Porosi pėr kodimin e Moodle
Ēēdo projekt bashkpunimi ka nevojė pėr konsistencė dhe stabilitet
pėr tė qėnė i fortė.
Kėto porosi jepen pėr tė treguar synimin e kodit Moodle.
Disa nga kodet e vjetra mbulojnė pak fusha,
por kjo do tė rregullohet eventualisht. Tė gjitha kodet e reja duhet
duhet tu afrohen sa tė jetė e mundur kėtyre standarteve.
Rregulla tė pėrgjithėshme
Tė gjithė skedarėt e kodeve duhet tė kenė ekstenksionin (prapashtesėn): .php .
Tė gjithė skedarėt template duhet tė pėrdorin ekstenksionin: .html .
Tė gjithė skedarėt tekst duhet tė pėrdorin formatin Unix-style (shumica e editorėve
tė tekstit e kanė kėtė opsion).
Tė gjitha etiketat (tags) php duhet tė jenė 'full' sikurse <?php
?> ... jo 'short' sikurse <? ?>.
Tė gjitha shėnimet ekzistuse tė copyright duhet tė mbahen. Ju mund
tė shtoni kėrkesat tuaja.
Ēdo skedar duhet tė inkludojė skedrain kryesor config.php .
Ēdo skedar duhet tė kontrollojė qė identiteti i pėrdoruesit ėshtė i saktė,
duke pėrdorur funksionet: require_login() dhe isadmin(), isteacher(), iscreator() ose isstudent().
Aksesimet e databazės duhet tė pėrdorin funksionet nė lib/datalib.php
gjithmonė e mundėshme - kjo mundėson kompatibilitetin ndėrmjet njė game tė gjerė databazash.
Ju duhet tė kuptoni se thuajse ēdo gjė ėshtė e mundur duke pėrdorur kėto funksione. Nėse duhet tė shkruani njė kod SQL , sigurohuni qė kodi ėshtė: cross-platform; i kufizuar pėr funksione specifikė
brenda kodit (zakonisht njė skedar lib.php); dhe i shėnuar qartėsisht.
Mos krijoni dhe pėrdorni variabla globale me pėrjashtim tė artyre standarte
$CFG, $SESSION,$THEME dhe $USER.
Tė gjitha variablat duhet tė iniciohen dhe tė testohen
duke pėrdorur: isset() ose empty() para se ato tė pėrdoren.
Tė gjitha stringjet duhet tė jenė tė pėrkthyeshėm - krijo tekste tė reja nė skedarėt
"lang/en" dhe thėrriti ato duke pėrdorur funksionin get_string() ose print_string().
Tė gjithė skedarėt help duhet tė jenė tė pėrkthyeshėm - krijo tekste tė reja
nė direktorinė "en/help" dhe thėrriti ato duke pėrdorur: helpbutton().
Tė dhėnat qė hyjnė nga browser-i (nėpėrmjet GET ose POST) automatikisht
zbatojnė magic_quotes (pavarėsisht parametrave tė PHP) kėshtu qė ju mund ta fusni
atė nė mėnyrė tė sigurtė drejtpėrdrejt nė databazė. Tė gjitha tė dhėnat e tjera (nga skedarė, ose nga databaza)
duhet tė mėnjanohen me: addslashes() para se tė futen nė databazė.
Coding Style
E di qė ėshtė pak e mėrzitshme tė ndryshosh stilin
nėse jeni mėsuar me njė tjetėr, por vini nė balancė kėtė mėrzitje me mėrzitjen e
tė gjithė njerzve tė tjerė qė do pėrpiqen mė vonė tė kuptojnė kodet Moodle me stile tė pėrziera .
Ka shumė arsye pro dhe kundėr ēdo stili qė pėrdorin njerzit,
por stili korent strong>ėshtė, prandaj mbetuni nė tė.
Indent-imi duhet tė jetė me 4 hapsira.
Mos pėrdorni tab-et FARE.
Emrat e variablave duhet tė jenė lehtėsisht tė lexueshėm,
me kuptim tė fjalės nė Anglisht. Nėse keni nevojė pėr mė shumė se njė fjalė
atė here bashkojini ato, por mbaji sa mė shkurt. Pėrdor
emrat nė shumės pėr tabelat e objekteve.
GOOD: $quiz
GOOD: $errorstring
GOOD: $assignments (pėr njė tabelė objektesh)
GOOD: $i (por vetėm pak cikle)
BAD: $Quiz
BAD: $aReallyLongVariableNameWithoutAGoodReason
BAD: $error_string
Konstantet duhet tė jenė gjithmonė me germa tė mėdha,
dhe gjithmonė fillo me emrin e modulit. Ato duhet ti kenė fjalėt tė ndara
me underscore.
define("FORUM_MODE_FLATOLDEST",
1);
Emrat e funksioneve duhet tė jenė fjalė tė thjeshta
nė Anglisht, dhe tė fillojnė me emrin e modulit pėr tė shmangur konfliktet midis moduleve.
Fjalėt duhet tė ndahen me underscore. Parametrat duhet tė kenė gjithmonė
defaults nėse ėshtė e mundur. Vini re se nuk ka hapėsira midis emrit tė funksionit dhe
kllapave qė e pasojnė ().
funksion forum_set_display_mode($mode=0)
{
global $USER,
$CFG;
if ($mode)
{
$USER->mode
= $mode;
} else if (empty($USER->mode))
{
$USER->mode
= $CFG->forum_displaymode;
}
}
Blloqet gjithmonė duhet tė mbyllen nė kllapa
gjarpėrushe (edhe kur ka vetėm njė rresht). Moodle pėrdor kėtė stil:
if ($quiz->attempts)
{
if ($numattempts >
$quiz->attempts)
{
error($strtoomanyattempts,
"view.php?id=$cm->id");
}
}
Stringjet duhet tė pėrcaktohen duke pėrdorur thonjėza njėshe
aty ku ėshtė e mundur, pėr tė rritur shpejtėsinė.
$var = 'ca tekst pa ndonjė
variabėl';
$var = "me karaktere speciale si njė rresht i ri \n";
$var = 'njė variabėl shumė, shumė i gjatė me njė '.$single.' variabėl nė tė';
$var = "ca $tekst me $shumė variabla $brenda tij";
Komentet duhet tė pėrdorin dy ose tre slashe
dhe nė rresht me kodin.
function forum_get_ratings_mean($postid,
$scale, $ratings=NULL)
{
/// Kthen mesataren klasifikimeve tė njė postimi qė i jepet pėrdoruesit
corent nga tė tjerė.
/// Shkalla ėshtė njė tabelė e klasifikimeve tė mundėshme
///Ratings ėshtė njė tabelė e thjeshtė e notave aktuale (numra tė plotė)
if (!$ratings)
{
$ratings
= array(); //
Inicializon njė tabelė bosh
if ($rates
= get_records("forum_ratings",
"post", $postid))
{
//
Proceson ēdo klasifikim me rradhė
foreach
($rates as $rate)
{
....etc
Hapsirat duhet tė pėrdoren lirisht - mos hezitoni
ti hapni gjėrat pėr tė qenė sa mė tė qarta. Pėrgjithėsisht, duhet
njė spacio midis kllapave dhe komandave normale, por jo spacio midis
kllapave dhe variablave ose funksioneve:
foreach ($objects
as $key =>
$thing) {
process($thing);
}
if ($x ==
$y)
{
$a
= $b;
} else if ($x ==
$z) {
$a
= $c;
} else {
$a
= $d;
}
Strukturat e Databazave
ēdo tabelė duhet tė ketė meauto-rritje njėid fushe (INT10) si indeks primar.
Tabela kryesore qė pėrmban shembujt e ēdo moduli duhet tė ketė tė njėjtin emėr simoduli (psh widget) dhe t?7 pėrmbajė minimumi fushat e mėposhtme:
id - siē pėrshkruhen mė lart
kurse - id e kursit tė cilit i pėrket ēdo shembull
emri - emri i plotė i ēdo shembulli tė modulit
Tabelat e tjera tė shoqėruara me njė modul qė pėrmbajnė informacion mbi 'things' duhet tė emėrtohen widget_things (shilo shumsin).
Emrat e kolonave duhet tė jenė tė thjeshta dhe tė shkurtėr, duke ndjekur po ato rregulla sikurse emrat e variablave.
Aty ku ėshtė e mundur, kolonat qė pėrmbajnė njė referencė pėr id e fushės sė njė tabele tjetėr(psh widget) duhet tė thirret widgetid. (Shiko se kjo marveshje ėshtė e re dhe nuk gjendet nė tabelat e vjetra)
Fushat Boolean duhet tė futen si fusha me numėr tė plotė tė vogėl (psh INT4) qė pėrmban 0 os 1, pėr tė lejuar mė vonė zgjerimin e vlerave nėse ėshtė e nevojshme.
Shumica e tabelave duhet tė kenė njė fushė timemodified (INT10) e cila updetohet me njė timestamp korente e pėrftuar nga njė funksion PHP time() .
Dokumentacioni i Moodle
Version: $Id$