Dsao_Model_Game_Desk Klassenreferenz

Modell-Klasse des Spieltisches. Mehr ...

Klassendiagramm für Dsao_Model_Game_Desk:

Dsao_Model_Abstract

Aufstellung aller Elemente

Öffentliche Methoden

 deleteEmptyRows ()
 Löschen leerer Tabellenzeilen.
 deleteText ($idUser, $idText)
 Löscht Text mit uebergebener ID.
 editText (Dsao_User $user, $idText, $content= '')
 Bearbeitung eines Textes.
 fetchGroupTexts ($idGroup, $since, $deleted=false)
 Lädt Texte einer bestimmten Gruppe.
 findTexts (array $ids)
 Laedt Texte anhand der IDs aus der Datenbank.
 hasChangePermission ($idUser, $idText)
 Prüft Berechtigung des Benutzers.
 insertText ($idGroup, $author, $content)
 Einfügen eines neuen Texts.

Geschützte Methoden

 _init ()
 Setzt Standardtabelle.


Ausführliche Beschreibung

Modell-Klasse des Spieltisches.

Autor:
DSAo-Md

http://www.gnu.org/licenses/gpl-3.0.html GNU Public License

Version:
SVN: $Id: Desk.php 506 2009-05-08 15:32:05Z saviola777 $

Definiert in Zeile 9 der Datei Desk.php.


Dokumentation der Elementfunktionen

Dsao_Model_Game_Desk::_init (  )  [protected]

Setzt Standardtabelle.

Rückgabe:
void

Erneute Implementation von Dsao_Model_Abstract.

Definiert in Zeile 16 der Datei Desk.php.

Benutzt Dsao_Model_Abstract::_setDefaultTable().

00017   {
00018     // Standardtabelle
00019     $this->_setDefaultTable('game_text');
00020   }

Dsao_Model_Game_Desk::deleteEmptyRows (  ) 

Löschen leerer Tabellenzeilen.

Loescht alle leeren (heisst inhaltslosen) Zeilen, die ein bestimmtes Alter haben, mit einer konfigurierbaren Wahrscheinlichkeit bei jedem Aufruf der Seite.

Rückgabe:
bool

Definiert in Zeile 31 der Datei Desk.php.

Benutzt Dsao_Model_Abstract::_getTable() und Dsao_Registry::get().

00032   {
00033     // int, Konfigurationsvariable, die angibt, ab welchem Alter leere Zeilen
00034     // gelöscht werden sollen
00035     $since = time()-Dsao_Registry::get('config')
00036             ->modules->game->desk->deleteEmpty->since;
00037 
00038     // WHERE-Klausel
00039     $sqlWhere = array
00040       (
00041         'content IS NULL',
00042         Dsao_Registry::get('db')
00043           ->quoteInto('timeLastEdited <= FROM_UNIXTIME(?)', $since),
00044       );
00045 
00046     // Loeschen
00047     $this->_getTable()->delete($sqlWhere);
00048 
00049     return true;
00050   }

Dsao_Model_Game_Desk::deleteText ( idUser,
idText 
)

Löscht Text mit uebergebener ID.

Löscht den Text mit der übergebenen ID, sofern der Benutzer mit übergebener ID dazu berechtigt ist.

Parameter:
$idUser int, Benutzer-ID
$idText int, Text-ID
Rückgabe:
bool, ob Löschen erfolgreich war

Definiert in Zeile 62 der Datei Desk.php.

Benutzt hasChangePermission().

Wird benutzt von editText().

00063   {
00064     // Falls Löschen erlaubt
00065     if ($row = $this->hasChangePermission($idUser, $idText))
00066     {
00067       $row->delete();
00068 
00069       return true;
00070     }
00071 
00072     return false;
00073   }

Dsao_Model_Game_Desk::editText ( Dsao_User user,
idText,
content = '' 
)

Bearbeitung eines Textes.

Bearbeitet den Text mit übergebener ID und setzt einen neuen Inhalt.

Parameter:
$user Dsao_User, Benutzer
$idText int, Text-ID
$content string, Inhalt
Rückgabe:
bool, ob Bearbeitung erfolgreich war

Definiert in Zeile 85 der Datei Desk.php.

Benutzt deleteText() und hasChangePermission().

00086   {
00087     // Falls Bearbeitung erlaubt
00088     if ($row = $this->hasChangePermission($user->id, $idText))
00089     {
00090       // Falls kein Inhalt uebergeben wurde, Text loeschen
00091       if ('' === $content)
00092       {
00093         return $this->deleteText($user->id, $idText);
00094       }
00095 
00096       // Inhalt setzen und speichern
00097       $row->content = $content;
00098       $row->save($user);
00099 
00100       return true;
00101     }
00102 
00103     return false;
00104   }

Dsao_Model_Game_Desk::fetchGroupTexts ( idGroup,
since,
deleted = false 
)

Lädt Texte einer bestimmten Gruppe.

Laedt die seit $since in die Datenbank eingetragenen Texte der Gruppe mit der ID $idGroup

Parameter:
$idGroup int, ID der Gruppe
$since int, ab welchem Zeitpunkt die Texte geladen werden sollen
$deleted bool, ob auch gelöschte Einträge ausgelesen werden sollen
Rückgabe:
Dsao_Table_GameTexts_Rowset, geladene Texte

Definiert in Zeile 117 der Datei Desk.php.

Benutzt Dsao_Model_Abstract::_getTable().

00118   {
00119     // Query erstellen
00120     $sqlSelect = $this->_getTable()->select()
00121       ->order('id DESC')
00122       ->where('idGroup = ?', $idGroup)
00123       ->where('timeCreated > FROM_UNIXTIME(?) OR timeLastEdited > FROM_UNIXTIME(?)', $since);
00124 
00125     // Falls gelöschte nicht ausgelesen werden sollen
00126     if (!$deleted)
00127     {
00128       $sqlSelect->where('content IS NOT NULL');
00129     }
00130 
00131     // Texte laden
00132     $rowsetTexts = $this->_getTable()->fetchAll($sqlSelect);
00133 
00134     return $rowsetTexts;
00135   }

Dsao_Model_Game_Desk::findTexts ( array $  ids  ) 

Laedt Texte anhand der IDs aus der Datenbank.

Parameter:
$ids array, IDs der Texte
Rückgabe:
Dsao_Table_GameTexts_Rowset, gefundene Zeilen

Definiert in Zeile 143 der Datei Desk.php.

Benutzt Dsao_Model_Abstract::_getTable().

00144   {
00145     return $this->_getTable()->find($ids);
00146   }

Dsao_Model_Game_Desk::hasChangePermission ( idUser,
idText 
)

Prüft Berechtigung des Benutzers.

Prueft, ob Benutzer das Recht hat, den Abenteuertext mit der uebergebenen ID zu bearbeiten / loeschen.

Parameter:
$idUser int, Benutzer-ID
$idText int, Text-ID
Rückgabe:
bool|row, Tabellenzeile des Texts oder false

Noch zu erledigen:
Prüfen, ob Benutzer Autor ist oder zum Staff gehört etc.

Definiert in Zeile 158 der Datei Desk.php.

Benutzt Dsao_Model_Abstract::_getTable().

Wird benutzt von deleteText() und editText().

00159   {
00160     // Falls ID nicht uebergeben oder nicht numerisch, abbrechen
00161     if (!$idText || !is_numeric($idText))
00162     {
00163       return false;
00164     }
00165 
00166     // Zunaechst nur pruefen, ob Text ueberhaupt existiert
00170     if ($row = $this->_getTable()->select()->where('id = ?', $idText)
00171       ->fetchRow())
00172     {
00173       return $row;
00174     }
00175 
00176     return false;
00177   }

Dsao_Model_Game_Desk::insertText ( idGroup,
author,
content 
)

Einfügen eines neuen Texts.

Fügt einen neuen Datensatz in die Tabelle 'game_texts' ein.

Parameter:
$idGroup int, Gruppen-ID
$author string, Autor
$content string, Inhalt
Rückgabe:
bool|int, ID des neuen Datensatzes oder false bei Fehlern

Definiert in Zeile 189 der Datei Desk.php.

Benutzt Dsao_Model_Abstract::_getTable().

00190   {
00191     // Falls kein Autor oder Inhalt angegeben wurde
00192     if (!$author || !$content)
00193     {
00194       return false;
00195     }
00196 
00197     // Neuer Datenbankeintrag
00198     $dataNewText = array
00199       (
00200         'idGroup'=> $idGroup,
00201         'author'  => $author,
00202         'content' => $content,
00203       );
00204 
00205     // Neue Zeile einfuegen
00206     return $this->_getTable()->insert($dataNewText);
00207   }


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

Erzeugt am Fri Sep 18 19:04:12 2009 für DSA online - Morgendaemmerung von  doxygen 1.5.7.1