Dsao_Scroll Klassenreferenz

Repraesentiert eine Schriftrolle. Mehr ...

Klassendiagramm für Dsao_Scroll:

Dsao_Db_Table_DataHandler_Abstract Dsao_DataHandler_Abstract

Aufstellung aller Elemente

Öffentliche Methoden

 delete ($idUser=0, $delete=true)
 Schriftrollen als geloescht markieren und ggf.
 getOtherUser ($idUser)
 Rueckgabe von ID, Namen des anderen beteiligten Benutzers.
 insert ()
 Fügt Daten des Objekts in Datenbank ein.
 isAuthor ($idUser)
 Prüft, ob der Benutzer mit übergebener ID Autor der SR ist.
 isDeleted ($idUser=null)
 Gibt zurück, ob die Schriftrollen von einem der Benutzer gelöscht wurde.
 isParticipated ($idUser)
 Prüft, ob der übergebene Benutzer an Schriftrolle beteiligt ist.
 isRead ()
 Rueckgabe, ob SR vom Empfaenger als gelesen markiert wurde.
 isRecipient ($idUser)
 Prüft, ob der Benutzer mit übergebener ID Empfänger der SR ist.
 markRead ($idUser=0, $read=true)
 Schriftrolle als vom Empfaenger gelesen / ungelesen markieren.
 refresh ($content=true)
 SR aktualisieren / Daten laden.
 toArrayDecoded ()
 Gibt Daten dekodiert als Array zurueck.

Geschützte Methoden

 _checkValidity ()
 Prüft Gültigkeit, indemie Identifizierer kontrolliert werden.
 _delete ()
 Loescht Schriftrolle aus der Datenbank.

Geschützte Attribute

 $_identifiers = array('id')
 Array mit Eigenschaften, die eine klare Identifizierung eines Datenbanksatzes zulassen.
 $_propertiesProtected = array('id')
 array, Geschützte Eigenschaften, können nicht über setData() gesetzt werden
 $_table = 'scroll_header'
 string, zunächst Name und später Objekt der (Haupt-)-Tabelle


Ausführliche Beschreibung

Repraesentiert eine Schriftrolle.

Autor:
DSAo-Md

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

Version:
SVN: $Id: Scroll.php 512 2009-06-19 08:11:48Z saviola777 $

Definiert in Zeile 9 der Datei Scroll.php.


Dokumentation der Elementfunktionen

Dsao_Scroll::_checkValidity (  )  [protected]

Prüft Gültigkeit, indemie Identifizierer kontrolliert werden.

Rückgabe:
bool, Gültigkeit

Erneute Implementation von Dsao_Db_Table_DataHandler_Abstract.

Definiert in Zeile 17 der Datei Scroll.php.

00018   {
00019     return true;
00020   }

Dsao_Scroll::_delete (  )  [protected]

Loescht Schriftrolle aus der Datenbank.

Rückgabe:
bool

Definiert in Zeile 27 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get() und Dsao_Db_Table_DataHandler_Abstract::getTable().

Wird benutzt von delete().

00028   {
00029     // Header-Zeile loeschen (Inhalt wird autmatisch geloescht)
00030     $this->getTable()->delete
00031       (array('id = '. (int) $this->__get('id')));
00032   }

Dsao_Scroll::delete ( idUser = 0,
delete = true 
)

Schriftrollen als geloescht markieren und ggf.

loeschen.

Markiert die Schriftrolle als vom Benutzer mit der ID $idUser geloescht, und loescht sie ggf. komplett.

Parameter:
$idUser int, Benutzer-ID
$delete bool, Ob geloescht oder loeschen rueckgaengig gemacht werden soll
Rückgabe:
Dsao_Scroll, fliessendes Interface

Definiert in Zeile 45 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get(), Dsao_DataHandler_Abstract::__set(), _delete(), Dsao_Db_Table_DataHandler_Abstract::delete() und Dsao_Db_Table_DataHandler_Abstract::getTable().

00046   {
00047     parent::delete();
00048 
00049     // Falls loeschen rueckgaengig gemacht werden soll
00050     if (!$delete)
00051     {
00052       $this->__set('deleted', 0);
00053 
00054       // Zeile aktualisieren
00055       $this->getTable()->update
00056         (array('deleted' => 0), 'id = '.(int) $this->__get('id'));
00057 
00058       return $this;
00059     }
00060 
00061     // Falls keine Benutzer-ID uebergeben wurde, direkt loeschen
00062     if (0 === $idUser && $delete)
00063     {
00064       $this->_delete();
00065 
00066       return $this;
00067     }
00068 
00069     // int, Zahl, die das Feld 'deleted' haben muss, wenn der andere Benutzer
00070     // die SR geloescht hat
00071     $intOther = 0;
00072 
00073     // int, Zahl, die das Feld 'deleted' haben muss, wenn der angemeldete
00074     // Benutzer die SR geloescht hat
00075     $intSelf = 0;
00076 
00077 
00078     // Falls Benutzer Autor
00079     if ($this->__get('idAuthor') == $idUser)
00080     {
00081       $intSelf = 1;
00082     }
00083     // Falls Benutzer Empfaenger
00084     else if ($this->__get('idRecipient') == $idUser)
00085     {
00086       $intSelf = 2;
00087     }
00088     // Benutzer hat nichts mit der SR am Hut, also abbrechen
00089     else
00090     {
00091       return $this;
00092     }
00093 
00094     // Zahl des anderen Benutzers in Abhängigkeit bestimmen
00095     $intOther = ($intSelf == 1 ? 2 : 1);
00096 
00097     // Falls anderer Spieler Nachricht bereits geloescht hat
00098     if ($intOther == $this->__get('deleted'))
00099     {
00100       $this->_delete();
00101     }
00102     else
00103     {
00104       $this->__set('deleted', $intSelf);
00105 
00106       // Zeile aktualisieren
00107       Dsao_Registry::getTable('scroll_header')->update
00108         (array('deleted' => $intSelf), 'id = '.(int) $this->__get('id'));
00109     }
00110 
00111     return $this;
00112   }

Dsao_Scroll::getOtherUser ( idUser  ) 

Rueckgabe von ID, Namen des anderen beteiligten Benutzers.

Parameter:
$idUser int, Benutzer-ID
Rückgabe:
Dsao_User, anderer Benutzer

Definiert in Zeile 120 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get() und isParticipated().

Wird benutzt von Dsao_Model_Scroll_Scroll::_checkScrollData().

00121   {
00122     $idUser = (int) $idUser;
00123 
00124     // Anderer Benutzer
00125     $userOther = new Dsao_User();
00126 
00127     // Falls übergebener Benutzer an Schriftrolle beteiligt
00128     if ($this->isParticipated($idUser))
00129     {
00130       // Falls Benutzer Autor
00131       if ($this->__get('idAuthor') == $idUser)
00132       {
00133         $idUserOther    = $this->__get('idRecipient');
00134         $usernameOther  = $this->__get('nameRecipient');
00135       }
00136       else
00137       {
00138         $idUserOther    = $this->__get('idAuthor');
00139         $usernameOther  = $this->__get('nameAuthor');
00140       }
00141 
00142       $userOther->setId($idUserOther);
00143       $userOther->username = $usernameOther;
00144       $userOther->setValid(true);
00145     }
00146 
00147     return $userOther;
00148   }

Dsao_Scroll::insert (  ) 

Fügt Daten des Objekts in Datenbank ein.

Rückgabe:
Dsao_Db_Table_DataHandler_Abstract, fließendes Interface

Erneute Implementation von Dsao_Db_Table_DataHandler_Abstract.

Definiert in Zeile 150 der Datei Scroll.php.

Benutzt Dsao_Db_Table_DataHandler_Abstract::getTable(), Dsao_DataHandler_Abstract::setFromArray() und Dsao_Db_Table_DataHandler_Abstract::setSynchronous().

Wird benutzt von Dsao_Model_Scroll_Scroll::insertScroll().

00151   {
00152       // Tabellenzeilen erstellen
00153       $rowHeader = $this->getTable()
00154         ->createRow($this->_data);
00155       $rowContent = $this->getTable('scroll_content')
00156         ->createRow($this->_data);
00157 
00158       // Transaktion starten
00159       $this->getTable()->getAdapter()->beginTransaction();
00160 
00161       // Header einfuegen und ID der Inhaltstabelle zuweisen
00162       $rowContent->id = $rowHeader->save();
00163 
00164       // Inhalt einfuegen
00165       $rowContent->save();
00166 
00167       // Transaktion beenden
00168       $this->getTable()->getAdapter()->commit();
00169 
00170       // Daten neu setzen
00171       return $this->setFromArray($rowHeader->toArray() + $rowContent->toArray())
00172         ->setSynchronous();
00173   }

Dsao_Scroll::isAuthor ( idUser  ) 

Prüft, ob der Benutzer mit übergebener ID Autor der SR ist.

Parameter:
$idUser Benutzer-ID, descParam
Rückgabe:
bool, ob Benutzer Autor ist

Definiert in Zeile 181 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get().

Wird benutzt von isDeleted().

00182   {
00183     return ($idUser == $this->__get('idAuthor'));
00184   }

Dsao_Scroll::isDeleted ( idUser = null  ) 

Gibt zurück, ob die Schriftrollen von einem der Benutzer gelöscht wurde.

Parameter:
$idUser int, Benutzer-ID
Rückgabe:
bool|null, ob Schriftrolle gelöscht wurde

Definiert in Zeile 192 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get(), Dsao_DataHandler_Abstract::__isset(), isAuthor() und isParticipated().

00193   {
00194     // Falls Eigenschaft nicht gesetzt, null zurück geben
00195     if (!$this->__isset('deleted'))
00196     {
00197       return null;
00198     }
00199 
00200     // Falls keine ID übergeben wurde, nur schauen, ob Schriftrollen von einem
00201     // der Beteiligten gelöscht wurde
00202     if (null === $idUser)
00203     {
00204       return ($this->__get('deleted') > 0);
00205     }
00206 
00207     // Falls Benutzer nicht an Schriftrolle beteiligt
00208     if (!$this->isParticipated($idUser))
00209     {
00210       return false;
00211     }
00212 
00213     return ($this->isAuthor($idUser) ?
00214       // Falls der Autor die Schriftrolle gelöscht hat
00215       ($this->__get('deleted') == 1) :
00216       // Falls der Empfänger die Schriftrolle gelöscht hat
00217       ($this->__get('deleted') == 2));
00218   }

Dsao_Scroll::isParticipated ( idUser  ) 

Prüft, ob der übergebene Benutzer an Schriftrolle beteiligt ist.

Parameter:
$idUser int, Benutzer-ID
Rückgabe:
bool, ob Benutzer beteiligt ist

Definiert in Zeile 226 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get().

Wird benutzt von getOtherUser() und isDeleted().

00227   {
00228     $idUser = (int) $idUser;
00229 
00230     return ($this->__get('idAuthor') == $idUser
00231       || $this->__get('idRecipient') == $idUser);
00232   }

Dsao_Scroll::isRead (  ) 

Rueckgabe, ob SR vom Empfaenger als gelesen markiert wurde.

Rückgabe:
bool

Definiert in Zeile 239 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get() und Dsao_DataHandler_Abstract::__isset().

00240   {
00241     return ($this->__isset('read') ? (bool) $this->__get('read') : false);
00242   }

Dsao_Scroll::isRecipient ( idUser  ) 

Prüft, ob der Benutzer mit übergebener ID Empfänger der SR ist.

Parameter:
$idUser Benutzer-ID, descParam
Rückgabe:
bool, ob Benutzer Empfänger ist

Definiert in Zeile 250 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get().

00251   {
00252     return ($idUser == $this->__get('idRecipient'));
00253   }

Dsao_Scroll::markRead ( idUser = 0,
read = true 
)

Schriftrolle als vom Empfaenger gelesen / ungelesen markieren.

Parameter:
$idUser int
$read bool, Ob die SR als gelesen oder ungelesen markiert werden soll
Rückgabe:
Dsao_Scroll Fliessendes Interface

Definiert in Zeile 262 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get(), Dsao_DataHandler_Abstract::__set(), Dsao_Db_Table_DataHandler_Abstract::getTable(), Dsao_DataHandler_Abstract::isReadOnly(), Dsao_Db_Table_DataHandler_Abstract::isSynchronous() und Dsao_DataHandler_Abstract::isValid().

00263   {
00264     // Schreibschutz, Gültigkeit und Synchronität prüfen / sicherstellen
00265     $this->isReadOnly(true);
00266     $this->isValid(true);
00267     $this->isSynchronous(true);
00268 
00269     // Erst nach boolean und dann nach int umwandeln, um sicher zu stellen,
00270     // dass nur 0 oder 1 als Wert heraus kommt
00271     $read = (int) (bool) $read;
00272 
00273     // Falls Wert sich geaendert hat und der Benutzer daran beteiligt ist
00274     if (($read != $this->__get('read'))
00275         && (!$idUser || $idUser == $this->__get('idRecipient')))
00276     {
00277       $sqlWhere = 'id = '. (int) $this->__get('id');
00278 
00279       $this->getTable()->update(array('read' => $read), $sqlWhere);
00280 
00281       $this->__set('read', $read);
00282     }
00283 
00284     return $this;
00285   }

Dsao_Scroll::refresh ( content = true  ) 

SR aktualisieren / Daten laden.

Parameter:
$content bool, Ob auch der Inhalt geladen werden soll
Rückgabe:
Dsao_Scroll Fliessendes Interface

Definiert in Zeile 293 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get(), Dsao_Db_Table_DataHandler_Abstract::_parseResult(), Dsao_Db_Table_DataHandler_Abstract::getTable(), Dsao_Db_Table_DataHandler_Abstract::refresh() und Dsao_DataHandler_Abstract::setValid().

00294   {
00295     parent::refresh();
00296 
00297     $userData = null;
00298 
00299     // Falls Inhalt geladen werden soll
00300     if ($content)
00301     {
00302       // Tabellenzeilen laden
00303       $select = $this->getTable()->getAdapter()->select()
00304         ->from('scroll_header')
00305         ->joinUsing('scroll_content', 'id')
00306         ->where('`user_data`.id = ?', $this->__get('id'));
00307 
00308       $data = $this->getTable()->getAdapter()->fetchAll($select);
00309 
00310       $this->_parseResult(array_pop($data));
00311     }
00312     else
00313     {
00314       // Tabellenzeilen laden
00315       $row = $this->getTable()->select()
00316         ->where('id = ?', $this->__get('id'))->fetchRow();
00317 
00318       $this->_parseResult($row, false);
00319 
00320       $this->setValid();
00321     }
00322 
00323     return $this;
00324   }

Dsao_Scroll::toArrayDecoded (  ) 

Gibt Daten dekodiert als Array zurueck.

Rückgabe:
array

Definiert in Zeile 331 der Datei Scroll.php.

Benutzt Dsao_DataHandler_Abstract::__get() und Dsao_DataHandler_Abstract::__isset().

00332   {
00333     // Daten kopieren
00334     $data = $this->_data;
00335 
00336     // Falls Inhalt vorhanden
00337     if ($this->__isset('content'))
00338     {
00339       $filter = new Dsao_Filter_Texts();
00340 
00341       // Inhalt dekodieren
00342       $data['content'] = $filter->filter($this->__get('content'));
00343     }
00344 
00345     // Falls Zeit vorhanden
00346     if ($this->__isset('date'))
00347     {
00348       $date = new Dsao_Time($this->__get('date'));
00349 
00350       // Timestamp
00351       $data['timestamp'] = strtotime($data['date'], 0);
00352 
00353       // Zeit formatieren
00354       $data['date'] = $date->format();
00355     }
00356 
00357     return $data;
00358   }


Dokumentation der Datenelemente

Dsao_Scroll::$_identifiers = array('id') [protected]

Array mit Eigenschaften, die eine klare Identifizierung eines Datenbanksatzes zulassen.

Der Primary-Key muss hier nicht festgehalten werden, nur weitere Unique-Spalten oder Kombinationen. Über Unterarrays können Spaltenkombinationen festgehalten werden.

Erneute Implementation von Dsao_Db_Table_DataHandler_Abstract.

Definiert in Zeile 11 der Datei Scroll.php.


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

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