Scroll.php

00001 <?php
00009 class Dsao_Model_Scroll_Scroll extends Dsao_Model_Scroll_Abstract
00010 {
00017   protected function _checkScrollData(Dsao_Scroll $scroll)
00018   {
00019     $filter = $this->_getObject('Dsao_Filter_Texts');
00020 
00021     // Ob Fehler aufgetreten sind
00022     $flagError = false;
00023 
00024     // Betreff
00025     $scroll->subject = $filter->filterInput($scroll->subject, 50);
00026 
00027     // Falls kein Betreff uebergeben
00028     if (!$scroll->subject)
00029     {
00030       $scroll->subject = false;
00031 
00032       $flagError = true;
00033     }
00034 
00035     // Inhalt
00036     $scroll->content = $filter->filterInput
00037       ($scroll->content,
00038         Dsao_Registry::get('config')->modules->scroll->contentLength, false);
00039 
00040     // Falls Inhalt zu gross oder zu klein
00041     if (!$scroll->content)
00042     {
00043       $scroll->content = false;
00044 
00045       $flagError = true;
00046     }
00047 
00048 
00049     // Thread
00050     $idUser = Dsao_Registry::get('user')->getId();
00051     $username = Dsao_Registry::get('user')->username;
00052 
00053     // Falls Thread-ID ungleich 0 uebergeben wurde
00054     if ($scroll->idThread)
00055     {
00056       // Falls Zeile des Threads nicht gefunden wurde oder Benutzer nicht an
00057       // Thread beteiligt, abbrechen
00058       if ( !( $scrollThread = $this->isParticipated($idUser, $scroll->idThread)) )
00059       {
00060         $scroll->idThread = false;
00061 
00062         return $scroll;
00063       }
00064 
00065       // ID und Namen des Autors setzen
00066       $scroll->idAuthor   = $idUser;
00067       $scroll->nameAuthor = $username;
00068 
00069       // ID und Namen des Empfaengers
00070       $scroll->idRecipient = $scrollThread->getOtherUser($idUser)->getId();
00071       $scroll->nameRecipient = $scrollThread->getOtherUser($idUser)->username;
00072 
00073       $scroll->idThread = $scrollThread->id;
00074 
00075       // Falls kein Betreff uebergeben wurde, den des Thread setzen
00076       if (!$scroll->subject)
00077       {
00078         $scroll->subject = $scrollThread->subject;
00079       }
00080 
00081       // SR als fuer Einfuegen in Datenbank vorbereitet markieren
00082       $scroll->setValid();
00083 
00084       // Falls Thread von einem der Benutzer geloescht wurde, dies rueckgaengig
00085       // machen
00086       if ($scrollThread->deleted != 0)
00087       {
00088         $scrollThread->delete(0, false);
00089       }
00090 
00091       return $scroll;
00092     }
00093 
00094     // Empfaenger
00095 
00096     // Falls Name zu lang
00097     if (strlen($scroll->nameRecipient) > 20)
00098     {
00099       $scroll->idRecipient = false;
00100 
00101       $flagError = true;
00102     }
00103 
00104     // Pruefen, ob Empfaenger in der Datenbank vorhanden ist
00105     $rowRecipient = $this->_getTable('user_data')->select()
00106       ->where('username = ?', $scroll->nameRecipient)->fetchRow();
00107 
00108     // Falls Benutzer nicht vorhanden oder der Benutzer sich selbst eine SR
00109     // schicken will
00110     if ( !$rowRecipient || $rowRecipient->id == $idUser)
00111     {
00112       $scroll->idRecipient = false;
00113 
00114       $flagError = true;
00115     }
00116     else
00117     {
00118       // ID und Name des Empfaengers
00119       $scroll->idRecipient = $rowRecipient->id;
00120       $scroll->nameRecipient = $rowRecipient->username;
00121 
00122       // ID und Name des Autors
00123       $scroll->idAuthor   = $idUser;
00124       $scroll->nameAuthor = $username;
00125     }
00126 
00127     // Falls keine Fehler aufgetreten sind, Schriftrolle als geprueft markieren
00128     if (!$flagError)
00129     {
00130       $scroll->setValid();
00131     }
00132 
00133     return $scroll;
00134   }
00135 
00144   protected function _sendScrollNotificationMail(Dsao_User $user, Dsao_Scroll $scroll)
00145   {
00146     // int, ID des Threads
00147     $idThread = ($scroll->idThread == 0 ? $scroll->id : $scroll->idThread);
00148 
00149     // Inhalt der Benachrichtigungsmail
00150     $content = Dsao_View_Smarty::sprintf('scroll_scroll_send_mail_content',
00151       array
00152       (
00153         'nameAuthor'=> $scroll->nameAuthor,
00154         'subject'   => $scroll->subject
00155       ));
00156 
00157     // string, Betreff der Benachrichtigungsmail
00158     $subject = Dsao_View_Smarty::sprintf('scroll_scroll_send_mail_subject',
00159       array('nameAuthor'  => $scroll->nameAuthor));
00160 
00161     // Mail erstellen und verschicken
00162     $mail = new Dsao_Mail($user, $subject, $content);
00163     $mail->send();
00164   }
00165 
00175   public function insertScroll(Dsao_Scroll $scroll)
00176   {
00177     $this->_checkScrollData($scroll);
00178 
00179     // Falls keine Fehler aufgetreten sind, Schriftrolle einfuegen
00180     if ($scroll->isValid())
00181     {
00182       $scroll->insert()->setReadOnly();
00183 
00184       // Ggf. Empfaenger eine Mailbenachrichtigung schicken
00185       $recipient = new Dsao_User(array('id' => $scroll->idRecipient));
00186       $recipient->refresh();
00187 
00188       if ($recipient->scrollMailNotification)
00189       {
00190         $this->_sendScrollNotificationMail($recipient, $scroll);
00191       }
00192     }
00193 
00194     return $scroll;
00195   }
00196 }

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