Entwickler Referenz ilchClan 1.0.5
0. Inhalt
1. Funktionen
oben1. bbcode
oben
Die Funktion bbcode erwartet als Parameter lediglich einen Text also bbcode ( $text );
Die Funktion ersetzt [code][/code] [b][/b] [i][/i] [u][/u] usw....2. db Funktionen
oben
es gibt dieverse db Funktionen, diese steueren den Zugriff auf die Datenbank, die meisten Funktionen sind aber nur aliase für die jeweilige mysql Funktion.
z.B. die Funktion db_fetch_assoc ruft nur mit den gleichen Parametern wie mysql_fetch_assoc eben diese mysql Funktion auf. Es gibt also für fast jede mysql Funktion eine db Funktion
db_connect erwartet keinen Parameter sie holt die Daten aus der config.php und stellt die Verbindung her und wählt die Datenbank aus! db_close erwartet keinen Parameter, sie schließt die Datenbank Verbindung db_query erwartet den Querystring also db_query($abfrage); in diesem Querystring ersetzt die Funktion den Platzhalter
prefix_
durch den aktuellen DBPREF in der config.php daher muss man um die Tabelle user richtig abzufragen also nur:
db_query("SELECT * FROM prefix_user WHERE name = 'xyz'");
schreiben.db_result verhält sich genau gleich wie mysql_result db_fetch_assoc wie mysql_fetch_assoc
db_fetch_row wie mysql_fetch_row db_fetch_object wie mysql_fetch_object db_num_rows wie mysql_num_rows db_last_id wie mysql_insert_id gibt die zulest eingetragene ID zurück db_count_query erwartet als Übergabe eine Abfrage die etwas Zählt. kann aber auch für andere dinge missbraucht werden :-) db_make_sites diese Funktion sollte wie folgt aufgerufen werden:
db_make_sites ($page ,$where ,$limit ,$link ,$table);sie gibt eine liste mit den Seiten zurück.
alle diese Funktionen sind eigentlich aliase von den jeweiligen Mysql Funktionen zu beachten ist das der Mysql Link Resource automatisch bei den entsprechenden Funktionen eingesetzt wird. ein db_query ( $abfrage, $link ); wird also zu einem Fehler führen.
Jetzt evtl. die Frage warum denn so nen scheiss? wozu braucht man einen Alias für eine Funktion?.. gut :P1. gerade das mit dem prefix_ ersetzten ist sehr praktisch.
2. es ist so extrem leicht eine 2. Datei zu erstellen um damit dann z.B. Postgres Datenbank abzufragen.3. icmail
oben
diese Funktion erwartet die Pflichtparameter von der normalen mail() Funktion also:
icmail($mail,$betreff,$nachricht);auch hier ist der Grund für die Auslagerung eine bessere Zentralere Kontrolle über den Header und leichtere Veränderungen...
4. check_rights
oben
check_rights( $array [, 'modulname' ] );
in dem Array müssen Gruppen Nummern eingetragen sein, die Funktion gibt dann TRUE (Wahr) zurück wenn der aktuelle User in einer dieser Gruppen ist. Die Funktion gibt ausserdem TRUE zurück wenn der aktuelle User das Modulrecht des 2. Parameters hat oder natürlich wenn der User ein Admin ist. Das Modulrecht der 2. Parameter ist aber freiwillig.
5. wd
oben
wd ($link, $text [, $zeit ] );
Diese Funktion gibt den Text mit dem Link $link darunter aus und leitet auf den Link $link in $zeit (standart 3 Sekunden) weiter.
$link kann (muss aber nicht) ein Array sein das dann wie folgt aufgebaut sein soll, automatisch wird dann zu dem 1. link weitergeleitet.
array (
'link text' => 'link',
'link text 2' => 'link2'
);6. getsmilies
oben
ohne Parameter gibt die komplette Liste aller Smilies als String zurück.
7. genkey
oben
$key = genkey($anzahl);
gibt einen Zeichenfolge aus Groß, - Kleinbuchstaben und Zahlen zurück die $anzahl an Zeichen lang ist.
8. escape / unescape
oben
escape($string,$typ);
Maskiert einen String damit er in die Datenbank geschrieben wird.
Als Typ können im Moment:
"integer","double","string","array","object"
genommen werden... wobei douoble, array und objekt nicht wirklich interessant sind. als zusätzlichen typ habe ich noch "textarea" eingefüght bei diesem typ wird NUR ein addslashes() gemacht.
unescape($string);
diese Funktion wendet im Moment nur stripslashes() an und ist nur für Strings (textarea) einträge aus der Datenbank interessant.
2. Klassen
oben1. Design
oben
diese Klasse wird in jeder Datei aufgerufen, Sie genereiert aus den Design Ordnern der gerade Aktiv ist das Design und das Menü.
$design = new design ( $titel_der_seite, $horizontales_menu_der_seite [, $welches] );
$wechles ist Standartmäßig auf 1 was so viel bedeutet das die normale index.htm im inlcude/designs/DESIGN/index.htm verwendet wird.
wird beim 3. Parameter eine 0 angegeben wird die Datei include/templates/small_index.htm geparsed und bei 2 wird die datei
include/templates/admin/index.htm geparsed.
um den Header (Oben) bitte:
$design->header();um den Footer auszugeben bitte:
$design->footer(); verwenden.
2. tpl (template)
oben
diese Klasse dient dazu ein Template zu parsen. generell mal ligen alle Templates im Ordner include/templates und davon geht diese Klasse auch aus weiterhin geht die Klasse auch davon aus das alle Templates die Endung .htm haben daran bitte halten!!
eine neue Klasse wird aufgemacht mit:
$tpl = new tpl ( 'dateiname' );
eine Datei in einem Unterordner z.b. dem admin Ordner also include/templates/admin steuert man so an:
$tpl = new tpl ( 'admin/dateiname' );
das .htm kann muss man aber nicht angeben ;)
Folgende Methoden stehen nachdem einlesen starten des Templates zu verfügung um das Template zu verarbeiten und auszugeben.
out($abschnitt) diese Funktion gibt den $abschnitt des Templates mit echo sofort aus. get($abschnitt) diese Funktion gibt den $abschnitt des Templates zurück, er kann also noch weiter verwarbeitet werden. del_ar($ar) diese Funktion löscht Keys die sonst ersetzt werden würden, (eher unwichtige funktion) del($k) löscht einen Speziellen Key da diese aber z.b. in einer Schleife überschrieben werden is das eher egal set_get($key,$value,$abschnitt) diese Funktion setzt ein Key mit dem entsprechend Wert ($value) und gibt den Abschnit $abschnitt zurück. set_ar_get($ar,$abschnitt) diese Funktion setzt alle im array enthaltenden Keys und gibt dann den Abschnitt $abschnitt zurück set_out($key;$value,$abschnitt) diese Funktion ist wie set_get() nur das set_out() den Abschnitt $abschnitt direkt mit echo ausgibt set_ar_out($ar;$abschnitt) wie set_ar_get() nur das set_ar_out() den Abschnitt $abschnitt sofort mit echo ausgibt set($key,$value) setzt einen Key mit $key, und als Wert $value set_ar($ar) setzt alle in dem Array enthaltenden Keys und deren Werte als Keys list_out($key,$ar) gibt eine Liste mit echo aus, dabei ist $key der Name der Liste und in dem Array müssen in der Rheinfolge der Prozentzahlen in der Liste die jewiligen Werte stehen. Weiteres zu Listen in einem Template un zum Aufbau findest du weiter unten. list_exists($name) gibt TRUE zurück wenn die liste existiert und FALSE wenn das nicht der Fall ist. list_get($key,$ar) Funktioniert wie list_out nur das die Liste zurückgegeben wird und nicht mit echo ausgegeben. Der Aufbau eines Templates
Dein Name ist {name}Diesees Template muss man jetzt erst mit $tpl = new tpl ( 'diese_template' ); einlesen und dann kann man es auf folgende Arten richtig ausgeben. der Platzhalter {name} soll durch einen Namen (Max Mustermann) ersetzt werden.
$tpl->set ( 'name', 'Max Mustermann' );
$tpl->out(0);
oder
$tpl->set_out('name','Max Mustermann',0);
oder:
$tpl->set_ar ( array ( 'name' => 'Max Mustermann' ) );
$tpl->out(0);
oder
$tpl->set_ar_out( array ( 'name' => 'Max Mustermann' ) , 0 );
gibt evtl. noch nen paar andere kombinationen aber joa sollte reichen :P...
mal ein etwas komplizierteres templateDein Name ist {name}
{EXPLODE}
Mein Script heisst: {script}
Die neuste Version ist: {version}
wieder mit $tpl = new tpl ( 'dieses_template' ); das template einlesen. jetzt ist noch ein 2. abschnitt hinzugekommen und in diesem abschnitt gibt es 2 platzhalter. ich gebe hier mal eine möglichkeit das Template richtig auszugeben...
$tpl->set('name', 'Max Mustermann' );
$tpl->out(0);... weitere php code
$ar = array (
'script' => 'ilchClan',
'version' => '1.0.5'
);
$tpl->set_ar_out($ar,1);
so jetzt ist alles draussen *g*... und ersetzt es gibt wie gesagt unmengen an möglichkeiten das template zu parsen und dann auszugeben.
Jetzt noch ein letztes Beispiel mit einer Liste in einem Template das ist wirklich auch sehr leicht.
Eine Liste aller Member
Diese Funktion gibt es erst in der neusten {version} Version.
<select name="member">
{_list_alleMember@<option value="%1">%2</option>}
</select>soa jetzt also alle Member dieses Clans ausgeben in der liste hat es 2 Platzhalter %1 und %2... und die liste heisst "alleMember"
$tpl->set('version', '1.0.5' );
.... jetzt die liste generieren
select * from user where recht = -3 ( -3 is member recht )
$liste .= list_get ( 'alleMember', array ( $row['id'], $row['name'] ) );
$tpl->set('alleMember', $liste );
$tpl->out(0);
so damit wären alle member ausgegeben in einer select box... aber was genau is da passiert :P
also zuerst mal wird der platzhalter version gesetzt das kennen wir ja schon
dann wird eine abfrage gemacht und zwar alle member aus der Datenbank, jetzt holen wir die liste alleMember und übergeben ein Array der Wert der in diesem Array an 1 stelle Steht ersetzt den Platzhalter %1 in der Liste der Wert an 2. Stelle den 2. Platzhalter usw.dann wird die Liste 'alleMember' noch gesetzt und ausgegeben.
warum gibt es denn den Platzhalter alleMember in dem Template wenn der doch gar nicht gesetzt wurde?
ja stimmt, es wird erstmal die liste eingelesen und in der Classe gespeichert und dann wird dort wo die Liste stand der Platzhalter eingetragen so das man ihn verwenden kann.als Letzt möchte ich noch ganz kurz auf Sprachfiles eingehen und zwar parsed die template klasse automatisch Platzhalter nach folgendem Musster:
{_lang_langkey}
die Zeichenfolge "langkey" muss jetzt in der Datei include/includes/lang/de.php (oder en usw. ) halt drin stehen nach vorbild... also:
'langkey' => 'dies ist ein languages key',
usw. einfach mal die .de datei ansehen ;)...
3. Allgemeine Einstellungen
obenJa allgemeine Einstellungen werden in der allg tabelle gespeichert einfach mal rein schauen später kann man dann über $allgAr['key'] darauf zugreifen... weitere erklärungen später :P
4. Zusätzliche Module
obeneigene Module naja das is vermutlich der Grund warum ihr hier seit :P
dafür ist die Tabelel "modules" Zuständige diese Tabelle hat Folgende Feldermodule = name des Modules (bitte auf eindeutigkeit achten)
gshow = wird es für den User im Admin Menü angezeigt (0 nein, 1 ja)
ashow = wird das modul als Link im admin Menü angezeigt für den Admin (0 nein, 1 ja)
fright = kann man dafür Modulrechte vergeben (0 ja, 1 nein)wenn also ein Mdoul eines der Folgenden Aktionen machen soll dann muss es in diese Tabelle eingetragen werden.
