Hi
Für die Erstellung der Tabellen während des Installierens ist entweder eine Query im xml-File deiner Erweiterung zuständig, oder ein externes SQL-File, das du dann in der xml-Datei benennst.
Thema auschecken:
Wenn in deiner Tabelle die Felder `checked_out` (int) und `checked_out_time` (date/time) vorhanden sind, dann kannst du ganz easy die zwei Methoden der geerbten JTable-Klasse dazu verwenden:
Code:
// auschecken:
$user =& JFactory::getUser();
$table->load($id);
if (!$table->checkout($user->id){
// Fehler beim auschecken
}
und zum wieder "einchecken":
Code:
$user =& JFactory::getUser();
$table->load($id);
if (!$table->checkin($user->id){
// Fehler beim einchecken
}
Es steht dir natürlich auch frei, diese Methoden zu kopieren oder selber eine solche Funktion zu schreiben, um sie z.B. in deinem Model zu verwenden, solltest du bei deiner Erweiterung keine Tabellenklasse verwenden.
okay, also so wie ich das verstanden habe ist die spalte "checked_out" welche momentan bei mir noch fehlt, dazu zuständig zu überprüfen und zu kontrollieren, dass keine zwei user gleichzeitig an einem datensatz arbeiten können/dürfen?
Um das zu überprüfen, kannst du vor dem Laden des Datensatzes die Methode isCheckedOut() der JTable-Klasse verwenden:
(mit oben erwähnten zwei zusätzlichen DB-Feldern)
isCheckedOut (line 688)
Check if an item is checked out
This function can be used as a static function too, when you do so you need to also provide the a value for the $against parameter.
* access: public
boolean isCheckedOut (integer $with, [integer $against = null])
* integer $with: The userid to preform the match with, if an item is checked out by this user the function will return false
* integer $against: The userid to perform the match against when the function is used as a static function.
Die Möglichkeiten, die du mit der (geerbten) Tabellenklasse hast, siehst du hier
--ALTER LINK WURDE ENTFERNT--
Da sind einige nützliche Methoden dabei, die dir das Leben leichter machen.....
Weiterhin viel Spass.
Cheers
Roger