J!-Gästebuche, Teil 2: Datenstruktur und Funktionen des Gästebuchs

Bei der Datenstruktur orientiere ich mich einfach am alten Gästebuch. Der Besucher kann also folgende Daten eintragen: Name, Nachricht, URL seiner Website, E-Mail Adresse. Dazu wird vom Server noch das Datum gespeichert. Als Website-Betreiber kann ich dann noch einen Kommentar abgeben. Zudem gibt es ein Feld mit einer eindeutigen ID und ein Feld mit dem man den Beitrag online bzw. offline schalten kann. IP-Adresse lasse ich aufgrund der verdachtsunabhängigen Vorratsdatenspeicherung weg. Sobald wir wieder eine Staatsform haben, in der die Rechte der Bürger berücksichtigt werden, kann man sich ja überlegen, ob man aus Sicherheitsgründen die IP-Adresse wieder speichert… Aber das ist ein anderes Thema.

Feldname Feldtyp Beschreibung
id int(11) mit auto_increment Integerfeld, welches den primären Schlüssel (eindeutiger Wert) enthält
name varchar(100) Textfeld (100 Zeichen) für den Namen des Besuchers
datum datetime Datumsfeld für das Eintragsdatum
nachricht text Textfeld für die Nachricht des Besuchers/Text des Gästebucheintrags
email varchar(100) Textfeld (100 Zeichen) für die E-Mail-Adresse des Besuchers
website varchar(200) Textfeld (200 Zeichen) für die Website-Adresse des Besuchers
Nicht jeder hat eine eigene Domain, daher mal lieber bis zu 200 Zeichen.
kommentar text Textfeld für einen Kommentar des Webmasters
sichtbar set(‘ja’,'nein’) “Schalter”, um einen Eintrag anzuzeigen (“ja”) oder zu sperren (“nein”)

Meine install.sql:
DROP TABLE IF EXISTS `#__gaestebuch`;
CREATE TABLE `#__gaestebuch` (
id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 100 ) NOT NULL ,
`datum` DATETIME NOT NULL ,
`nachricht` TEXT NOT NULL ,
`email` VARCHAR( 100 ) ,
`website` VARCHAR( 200 ) ,
`kommentar` TEXT,
`sichtbar` SET( 'ja', 'nein' ) DEFAULT 'ja' NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE=MyISAM AUTO_INCREMENT DEFAULT CHARSET=utf8;

Und die passende uninstall.sql dazu:
DROP TABLE IF EXISTS `#__gaestebuch`;

Damit diese Daten auch genutzt werden können, wird nun das Model benötigt. Dazu wird erstmal eine Klasse GaestebuchModelGaestebuch erzeugt. Die meisten Funktionen stehen bereits in der Klasse Joomla!-Klasse JModel zur Verfügung. Um diese zu erben, verwende ich das Schlüsselwort extends und füge meine eigenen Variablen und Funktionen hinzu.

jimport( 'joomla.applicatoin.component.model' );
class GasetebuchModelGaestebuch extends JModel {
..
}

Als zusätzliche Variable habe ich $_eintraege.

var $_eintraege;

Dazu kommen noch zwei Funktionen. Die erste Funktion wird nur intern verwendet, um die SQL-Abfrage zu erzeugen. Daher nenne ich sie _abfrageErzeugen().

function _abfrageErzeugen()
{
$abfrage = 'SELECT * FROM #__gaestebuch WHERE sichtbar = "ja" ORDER BY datum DESC;';
return $abfrage;
}

Dazu kommt jetzt noch die eigentlich Abfrage holeEintraege().

function holeEintraege()
{
// Hole die Daten, falls sie noch nicht geholt wurden
if (empty( $this->_eintraege ))
{
$abfrage = $this->_abfrageErzeugen();
$this->_eintraege = $this->_getList ( $abfrage );
}
return $this->_eintraege;
}

Die Komplette site/models/gaestebuch.php gibt es, sobald ich die Komponente fertig entwickelt und getestet habe ;-)

Als nächstes habe ich mir überlegt, welche Aufgaben meine Komponente erledigen muß.

Ausgabe der Nachrichten
Die sichtbaren/freigeschalteten Beiträge werden in umgekehrter chronolgischer Reihenfolge (neuster Eintrag oben) ausgegeben. Die Kommentare des Website-Betreibers werden direkt unterhalb des Beitrags angezeigt.

Eintragen von Nachrichten durch den Besucher
Der Besucher soll die Möglichkeit haben, sich in das Gästebuch einzutragen. Dabei müssen die Eintragungen überprüft werden. Name und Nachricht sind Pflichtfelder. Die URL der Website und die E-Mail-Adresse sind optional. Aus Sicherheitsgründen wird der HTML-Code in Nachrichten gefiltert. Die URL und die E-Mail-Adresse muß auf Gültigkeit überprüft werden – wobei eine automatische Korretkur bei fehlendem “http://” wünschenswert wäre. Eintragungen wie “hab keine” sollten natürlich nicht verlinkt werden.
Die Eintragung wird erstmal in der Datenbank mit sichtbar=nein gespeichert. Der Website-Betreiber erhält automatisch eine E-Mail mit der Bitte um Prüfung und Freischaltung.

Administration der Nachrichten
Der Website-Betreiber hat die Möglichkeit, Gästebucheinträge zu kommentieren, zu bearbeiten, zu sperren bzw freizuschalten oder auch zu löschen. Dabei gibt es eine Übersicht der Einträge und eine Detail-Ansicht für jeden Beitrag.
In der Übersicht gibt es die Möglichkeit mehrere Beiträge auszuwählen und diese dann zu sperren/freischalten oder auch löschen (“Masseneditiermodus”).
In der Detailansicht kann zusätzlich noch der Beitrag bearbeitet und kommentiert werden.

In Teil 3 werde ich jetzt die Gästebuchkomponente soweit erstellen, dass diese bereits in Joomla! installiert werden kann und die Gästebucheinträge aus der Datenbank ausgibt.

Inhaltsübersicht:

Teil 1: Der Aufbau von Joomla! 1.5 Komponenten
Teil 2: Datenstruktur und Funktionen des Gästebuchs
Teil 3: Die Einträge ausgeben
Teil 4: Neue Einträge eintragen
Teil 5: Die Administration der Einträge
Teil 6: Die Sicherheit überprüfen

Dieser Beitrag wurde unter Joomla! abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>